Gå til innhold

problemer med å printe liste fra database [DELVIS LØST]


Anbefalte innlegg

Jeg printer ut liste over medlemmer fra databasen på denne måten:

 

<?php
 $list = '<table>';
 $res = mysql_query('SELECT * FROM table');

 while ($get = mysql_fetch_assoc($res))
 {
   $list .= '<tr><td>';
   $list .= $get['fname'] . ' ' . $get['lname'];
   $list .= '</td></tr>';
 }

 $list .= '</table>';

 print $list;
?>

Dette fungerer greit da.

 

Men så fort deler det hele opp til to lister (damer, herrer) så forsvinner endel.

Jeg får kun frem de 22 første medlemmene.

 

<?php
 $list = '<table>';
 $res = mysql_query('SELECT * FROM table WHERE gender = "herrer"');

 while ($get = mysql_fetch_assoc($res))
 {
   $list .= '<tr><td>';
   $list .= $get['fname'] . ' ' . $get['lname'];
   $list .= '</td></tr>';
 }

 $list .= '</table>';

 print $list;
?>

 

Hva kan dette komme av? og enda viktigere Hvordan kan jeg rette opp i dette?

Endret av Yawa
Lenke til kommentar
Videoannonse
Annonse

Var egentlig bare småpirk... men hvorfor bruker du mysql_fetch_assoc? prøv $get = mysql_fetch_array( $res );

Unnskyld meg, men hva i alle dager skal det ha med problemet? Han heter ut resultatet som en assosiativ array, og da blir strengt tatt mysql_fetch_assoc mer passende enn mysql_fetch_array som pr. standard også vil hente ut en numerisk array av radene.

 

Yawa: Hvordan er den tabellen definert? Spesielt gjelder det gender.

Endret av Ernie
Lenke til kommentar

takker for svar folks. jeg fikk det til. Usikker på hva som var feil da alle medlemmene plutselig kom frem. Har ikke gjort noe igrunnen bortsett fra å la det ligge litt. Så gikk jeg tilbake og gikk inn på siden igjen i dag, og da var det plutselig helt i orden...

 

Rart da...

 

EDIT: Tabellen er definert med navn: gender og type: varchar (6). Ikke noe spess mer. Sammenligning: UTF-6 danis og NOT NULL da...

Endret av Yawa
Lenke til kommentar

I forbindelse med samme liste oppsett, så skal jeg ha en endre knapp.

Slik at en admin kan få opp en form hvor alle verdiene er satt.

 

slik har jeg lagt denne knappen til:

$list .= <input name="id" type="hidden" value="'. $get['id'] .'" /><input name="submit" type="submit" value="Endre" />

 

Det hele ser da slik ut:

<form name="mem_id" method="post" action="/admin.php?page=endre-medlem">
<?php
 $list = '<table>';
 $res = mysql_query("SELECT * FROM members WHERE gender = 'damer'");

 while ($get = mysql_fetch_assoc($res_mem))
 {
   $list .= '<tr><td>';
   $list .= $get['fname'] .' '. $get['lname'] . '   ';
   $list .= '<input name="id" type="hidden" value="' . $get['id'] . '" />';
   $list .= '<input name="id_sub" type="submit" value="Endre" />';
   $list .= '</td></tr>';
 }

 $list .= '</table>';

 print $list;
?>
</form>

 

Problemet er at riktig ikke blir hentet når jeg klikker på endre, tilhørende til navnet. Da kommer kun den siste på listen.

 

Noen som kjenner til hvordan man får lagt opp en ENDRE-knapp?

Lenke til kommentar

Du tenkter på submit-knappen?

 

Hvordan får jeg gjort det i mitt tilfelle?

 

Er det riktig fremgangsmåte og start jeg er på? eller er det en annen mer naturlig måte å gjøre akkurat sistnevnte på?

Lenke til kommentar

Hvis jeg forstår deg riktig har du en liste med brukere og id til disse og ønsker å ha muligheten til å forrandre id til en bruker. og sånn som du printer det ut blir resultatet noe ala:

 

Per [001] [ENDRE]

Pål [002] [ENDRE]

Askeladden [003] [ENDRE]

 

MEN: når du lager elementene i html formen gir du ikke id feltene unik id... så når du skal behandle formen så aner koden egentlig likke hvem som er blitt endret om du feks trykker på [ENDRE] for askeladden.

 

Den kjappeste løsningen vil være å gjøre om

 

<input name="id_sub" type="submit" value="Endre" />

 

til

 

<input name="' . $get['id'] . '" type="submit" value="Endre" />

 

og da når du løper igjennom postvariablene sjekke ALLE navn (shoot first ask later (aka dum dum varianten, vet ikke om det kan gjøres annerledes)) for å finne ut hvilken knapp som er blitt trykket for å hente ut verdien til denne.

du får da henta ut hvilken id som er blitt trykket og du kan jobbe med den videre...

 

Men dette er bare en tanke... det finnes sikkert enklere løsninger, kanskje noen her poster det :p

 

Og det om jeg har forstått problemet ditt riktig...

Endret av South_Bridge
Lenke til kommentar

Du må ha en form rundt knappen

 

GET

<form action="edit.php?id=$IDVARHER">
<input type="submit" name="edit" value="Edit">
</form>

 

POST

<form action="edit.php">
<input type="hidden" name="id" value="$IDVARHER">
<input type="submit" name="edit" value="Edit">
</form>

 

På hver av alle resultatene.

Endret av TheClown
Lenke til kommentar

... og ønsker å ha muligheten til å forrandre id til en bruker. ...

 

Jeg ønsker ikke å endre ID'en, men medlemsinformasjonen som ligger på samme rad som ID'en.

Som stilling i styret, telefon, adresse-endring, tilgangsrettigheter etc.

 

Menn takk TheClown. Fikk det til nå.

 

Men har en sånn 'gender' som er 2 radio-knapper. Hvordan får jeg valgt den riktige der?

Forsøkte, men ingen av dem ble valgt

Endret av Yawa
Lenke til kommentar

Du må ha en form rundt knappen

 

GET

<form action="edit.php?id=$IDVARHER">
<input type="submit" name="edit" value="Edit">
</form>

 

POST

<form action="edit.php">
<input type="hidden" name="id" value="$IDVARHER">
<input type="submit" name="edit" value="Edit">
</form>

 

På hver av alle resultatene.

 

Likte løsninga, har ikke tenkt på den :)

Lenke til kommentar

Ja det ble veldig greit nå...

 

Men en siste ting.

 

Videre, når jeg klikker på "endre"-knappen. Så kommer jeg til en side med en form som er ferdig utfylt med info fra databasen.

Slik er den siden of formen satt opp:

 

<div class="edit_form">
 <!--  fyller ut formen basert på medlems-ID'en (SELECT * FROM tbl WHERE id = \'%s\', $id);  -->
 <p><?php include ('/path/to/hent-medlem-script.php'); ?></p>

 <!--  include: script som oppdaterer databasen. Plassert her for å printe ut en respons  -->
 <h2><?php print $get['fname'] . ' '. $get['lname']; include ('/path/to/endre-medlem-script.php');?></h2>

 <form name="edit_member"method="post" action="#self">
   <table>
     <tr><th colspan="2" align="left">Kontakt</th></tr>
     <tr><td colspan="2"><input name="id" type="hidden" value="<?php print $get['id']; ?>" /></td></tr>
     <tr><td>E-post:</td><td><input name="email" type="text" value="<?php print $get['email'] ?>" /></td></tr>
     <tr><td>Telefon:</td><td><input name="phone" type="text" value="<?php print $get['phone'] ?>" /></td></tr>
     <tr><td colspan="2"> </td></tr>
     <tr><th colspan="2" align="left">Adresse:</th></tr>
     <tr><td>Sted:</td><td><input name="location" type="text" value="<?php print $get['location'] ?>" /></td></tr>
     <tr><td>Gate:</td><td><input name="street" type="text" value="<?php print $get['street'] ?>" /></td></tr>
     <tr><td>Post nr:</td><td><input name="post_nr" type="text" value="<?php print $get['post_nr'] ?>" /></td></tr>
     <tr><td>Poststed:</td><td><input name="post_loc" type="text" value="<?php print $get['post_loc'] ?>" /></td></tr>
     <tr><td width="100px"></td><td width="230px"><input name="submit" type="submit" value="Oppdater" /></td></tr>
   </table>
 </form>
</div><!--  .edit_form  -->

 

Når jeg endrer innholdet og klikker på oppdater, så funker det kjempe. Databasen blir oppdatert.

Respons av resultatet samt eventuelle feilmeldinger etc. funker også smell.

 

Men når siden refresher og databasen blir oppdatert og responsen blir printet, så oppdaterer ikke innholdet i formen seg. Den gamle informasjonen henger igjen.

 

Oppdagerings-scriptet ser slik ut:

 

<?php
 if ($_POST['submit'])
 {
   // alle - mysql_real_escape_string($_POST['vars']);
   // diverse valideringsfunksjoner

   $query = sprintf('UPDATE tbl SET var1 = \'%s\', var2 = \'%s\', ... = WHERE id = \'%s\'', $var1, $var2, ..., $id);

   $result = mysql_query ($query);

   print '<span class="green"><strong><em>   Oppdatert</em></strong></span>';
 }
?>

 

Det er ett av to jeg kunne tenke meg at hadde vert bra.

 

#1 - Når en bruker blir oppdatert, så blir man sendt tilbake til oversikten over medlemmene sammen med en respons som: "Navn ble oppdatert".

 

#2 - At siden bare refresher med responsen etter navnet: "Oppdatert" samt at feltene innheholder de nye informasjonen.

 

 

Noen som fikk det med seg og skjønnte hva problemet er og hvor jeg vil?

Noe sent/tidlig nå, så godt mulgi at noe blir noe uklart.

 

Forsøkte meg på å sette en $_SESSION. Fikk jeg ikke til.

Endret av Yawa
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...