Sk!ppy Skrevet 21. september 2009 Del Skrevet 21. september 2009 Hei. Har denne koden: <?php foreach ($_POST['sign'] as $ID => $show) { $what = quote_smart($show); $upt = mysql_query("UPDATE `user_sign` SET `show`='$what` WHERE `id`='$ID'"); } ?> <?php $select = Mysql_query("SELECT * FROM `user_sign` WHERE `user_id`='" .$l['id']. "'"); while($s=mysql_fetch_array($select)) { $sss = mysql_query("SELECT * FROM `sign` WHERE `id`='" .$s['sign_id']. "'"); $sss = mysql_fetch_array($sss); ?> <tr> <td> <?php echo $sss['name']; ?> </td> <td> <img src="<?php echo $sss['image']; ?>"> </td> <td> <select name="sign['<?php echo $s['id']; ?>']"> <option value="1" <?php if($s['show'] == 1) { echo "selected=\"selected\""; } ?> >Ja</option> <option value="0" <?php if($s['show'] == 0) { echo "selected=\"selected\""; } ?> >Nei</option> </select> </td> </tr> <?php } ?> ( Det er litt unødvending kode imellom øverste og nederste del) Poenget er at select'en lages ikke i en array, og den vil da ikke oppdateres. jeg får den ikke til å legges i en array. Noen som kan hjelpe meg? Takk på forhånd! Lenke til kommentar
BlueEAGLE Skrevet 21. september 2009 Del Skrevet 21. september 2009 Hei. Har denne koden: <?php foreach ($_POST['sign'] as $ID => $show) { $what = quote_smart($show); $upt = mysql_query("UPDATE `user_sign` SET `show`='$what` WHERE `id`='$ID'"); } ?> <?php $select = Mysql_query("SELECT * FROM `user_sign` WHERE `user_id`='" .$l['id']. "'"); while($s=mysql_fetch_array($select)) { $sss = mysql_query("SELECT * FROM `sign` WHERE `id`='" .$s['sign_id']. "'"); $sss = mysql_fetch_array($sss); ?> <tr> <td> <?php echo $sss['name']; ?> </td> <td> <img src="<?php echo $sss['image']; ?>"> </td> <td> <select name="sign['<?php echo $s['id']; ?>']"> <option value="1" <?php if($s['show'] == 1) { echo "selected=\"selected\""; } ?> >Ja</option> <option value="0" <?php if($s['show'] == 0) { echo "selected=\"selected\""; } ?> >Nei</option> </select> </td> </tr> <?php } ?> ( Det er litt unødvending kode imellom øverste og nederste del) Poenget er at select'en lages ikke i en array, og den vil da ikke oppdateres. jeg får den ikke til å legges i en array. Noen som kan hjelpe meg? Takk på forhånd! Hvis du kutter ned koden din til et eksempel med fornuftige variabelnavn (ikke $sss, $upt, $what og $show da det ikke forteller noe om hva du forventer å finne her) samt gir litt innblikk i hva pokker $_POST['sign'] er ment å inneholder (er det et skilt eller en samling signaturer?) så kanskje jeg kan hjelpe. Som et generelt feilsøkingsråd så er var_dump() en god venn. Kombinerer du dette med å legge spørringen i en variabel som du sender til mysql_query() så har du kommet et godt stykke på vei. Jeg synes ikke så mye om å legge et hentet resultat fra en spørring i samme variabel som resultatet av spørringen. Dette vil veldig ofte virke veldig greit, men det er en mulig feilkilde og det er veldig lite å hente på dette. Så for å summere opp foreach($_POST['sign_id_list'] as $user_id => $sign_id) $query = "UPDATE `user_sign` SET `show`='$what` WHERE `id`='$ID'"; $result = mysql_query($query) or die(mysql_error()." in query $query"); while($row = mysql_fetch_array($result, MYSQL_ASSOC)) ...og hvorfor valgte du $s['show'] istedenfor $field['selected'] når du skrev "if($s['show'] == 1) { echo "selected=\"selected\""; }" ?? Når jeg leser ['show'] så ser jeg for meg at dette er noen felt som i visse tilfeller vil være skjult for brukeren ikke at de ikke er standardverdier eller forvalgte verdier... Lenke til kommentar
Sk!ppy Skrevet 21. september 2009 Forfatter Del Skrevet 21. september 2009 $s['show'] = $s = sign, ['show'] = om den vises til alle greia er at man skal kunne endre show value mellom 1 og 0. Lenke til kommentar
BlueEAGLE Skrevet 21. september 2009 Del Skrevet 21. september 2009 $s['show'] = $s = sign, ['show'] = om den vises til alle greia er at man skal kunne endre show value mellom 1 og 0. Hvis du koder på en C=64 og er begrenset til 40 tegn i bredden så forstår jeg at $s kan gjøre ting mer lesbart. Men på dagens monitorer så er 180 tegn ikke unormalt og da er ikke $s bedre enn $sign. Ikke nesten en gang. <?php //Siden det ikke er helt klart hva $_POST['sign'] inneholder så finner jeg ikke noe bedre for $show og $what, men det virker som at det ikke er her problemet er. foreach ($_POST['sign'] as $ID => $show) { $what = quote_smart($show); //ID skal her være definert som INT NOT NULL AUTO_INCRIMENT PRIMARY KEY. Den skal IKKE være VARCHAR(). $query = "UPDATE `user_sign` SET `show`='$what` WHERE `id`=$ID"; //Jeg vil ikke engang gjette hva $upt skal stå for... $upt = mysql_query($query) or die(mysql_error()." in query:<br/> $query"; //ALLTID feilsjekk resultater fra DB! } //Hvor pokker kommer $l['id'] fra? 'Ledger'? 'Login'? 'License'? Hvilke felt velges her? Hvordan ser tabellstrukturen ut? //Generelt sett så skal alle ID-er være numeriske. $query = "SELECT * FROM `user_sign` WHERE `user_id`={$l['id']}"; $user_result = mysql_query($query) or die(mysql_error()." in query:<br/> $query"; //ALLTID feilsjekk resultater fra DB! while($user_row=mysql_fetch_array($user_result)) { //Igjen, her skal sign_id være en INT NOT NULL og indeksert med KEY. $query = "SELECT * FROM `sign` WHERE `id`={$user_row['sign_id']}"; $sign_result = mysql_query($query) or die(mysql_error()." in query:<br/> $query"; //ALLTID feilsjekk resultater fra DB! $sign_row = mysql_fetch_array($sign_result); output_table_row($sign_result['name'], $sign_result['image'], $user_result['id'], $sign_result['display']); } function output_table_row($name, $image, $id, $display) { echo "<tr><td>$name</td>"; echo "<td><img src=\"$image\"></td>"; echo "<td><select name=\"$id\">"; echo '<option value="1"'; if($display) echo 'selected="selected">Ja</option>'; echo '<option value="0"'; if($!display) echo 'selected="selected">Nei</option>'; echo '</select></td></tr>'; } ?> Ser ikke dette bedre ut? Lenke til kommentar
Sk!ppy Skrevet 22. september 2009 Forfatter Del Skrevet 22. september 2009 at jeg bruker forkortelser er av den enkle grunn at jeg liker det, Vanesak. $l['id'] er brukerid ja. Og beklager, men nei, Scriptet ditt så ikke så veldig mye mer ryddig ut. Lenke til kommentar
Alex Moran Skrevet 22. september 2009 Del Skrevet 22. september 2009 Greit at du liker det, men det er håpløst når andre skal lese det. Du burde legge fra deg den uvanen sporenstreks. Lenke til kommentar
Sk!ppy Skrevet 22. september 2009 Forfatter Del Skrevet 22. september 2009 det kan så være, men jeg ser ikke hvordan din skal funke bedre enn min da det printes ut på samme måte? Lenke til kommentar
BlueEAGLE Skrevet 22. september 2009 Del Skrevet 22. september 2009 det kan så være, men jeg ser ikke hvordan din skal funke bedre enn min da det printes ut på samme måte? Fordi da er det enklere å feilsøke. Hvis du nå kan produsere resultatet av skriptet så blir det faktisk mulig å begynne feilsøkingen. ...og forkortelser er helt greit til du får litt størrelse på skriptene dine og skal fortsette kodingen et halvt år etter. Da blir det straks vanskeligere å huske hva pokker du tenkte da du laget en variabel. $user_sing gir både deg selv og andre en mye bedre pekepinn på hva det handler om enn $sss noen gang vil gjøre. Lenke til kommentar
Sk!ppy Skrevet 22. september 2009 Forfatter Del Skrevet 22. september 2009 Nei. jeg har faktisk brukt disse variablene helt siden jeg startet å kode Lenke til kommentar
BlueEAGLE Skrevet 22. september 2009 Del Skrevet 22. september 2009 Nei. jeg har faktisk brukt disse variablene helt siden jeg startet å kode Jaja... greit nok, du kommer nok over det. Resultatet av skriptet? Lenke til kommentar
Sk!ppy Skrevet 22. september 2009 Forfatter Del Skrevet 22. september 2009 jeg tror ikke at jeg bruker forkortelser i variablene har noe med at en annen variabel ikke blir til array Lenke til kommentar
BlueEAGLE Skrevet 22. september 2009 Del Skrevet 22. september 2009 jeg tror ikke at jeg bruker forkortelser i variablene har noe med at en annen variabel ikke blir til array ...men hva er resultatet av skriptet? Uten å se det så er det nær sagt umulig å feilsøke! Lenke til kommentar
Sk!ppy Skrevet 22. september 2009 Forfatter Del Skrevet 22. september 2009 (endret) Først må jeg prøve å forstå scriptet, og sette meg inn i helt andre variabler. Og hvor kommer denne fra? "//Generelt sett så skal alle ID-er være numeriske." sefølgelig er alle ID'ene tall! Endret 22. september 2009 av LaCrouX Lenke til kommentar
BlueEAGLE Skrevet 22. september 2009 Del Skrevet 22. september 2009 Først må jeg prøve å forstå scriptet, og sette meg inn i helt andre variabler. Og hvor kommer denne fra? "//Generelt sett så skal alle ID-er være numeriske." sefølgelig er alle ID'ene tall! Tall i SQL står som oftest ikke innenfor strengeavskillere ' Er det noe problem som gjør at du ikke klarer å gjengi resultatet av skriptet? Lenke til kommentar
Sk!ppy Skrevet 22. september 2009 Forfatter Del Skrevet 22. september 2009 Jepp. variabelnavnene er helt rotete inni mitt lille hode Lenke til kommentar
BlueEAGLE Skrevet 22. september 2009 Del Skrevet 22. september 2009 Hvis du bare kjører skriptet og limer det skriptet produserer inn i en spoiler-tag så kan vi se om ikke vi klarer å finne ut av det. Du klarer å kjøre skriptet, gjør du ikke? Du klarer å klippe og lime den teksten skriptet produserer, gjør du ikke? Lenke til kommentar
Jonas Skrevet 22. september 2009 Del Skrevet 22. september 2009 Hahaha, dette er så trist at det nesten er morsomt... Så trist at jeg ikke føler for å bidra. Jeg er 100% sikker på at jeg kunne ha løst problemet - hva nå enn problemet er - men denne forbanna lille viljen til å gjøre en innsats for at det skal være lettere å hjelpe gir meg svært liten lyst. LaCrouX, variabelnavn eksisterer av meget gode grunner og jo fortere du lærer det; jo bedre. Vi gir blanke i hvorvidt du tror de er nyttige, men så lenge vi foretrekker dem, så kommer du mye lengre ved å bare gjøre som vi sier og skrive om den jævla møkkakoden din slik at den blir litt mer forståelig. Aller helst burde du isolere problemet i et fint lite eksempel, men det er kanskje mye å forvente... Lenke til kommentar
Sk!ppy Skrevet 22. september 2009 Forfatter Del Skrevet 22. september 2009 (endret) vet ikke om dere la merke til det, men mange variabler i koden over som ikke er definert. ( Du hadde forresten kodefeil på linje 22, 28, 35 og 55.. ) er en feil på linje 90 som fjernes ved å legge til <?php } ?> påslutten, men da funker ingenting? Skilt<br> <?php if(isset($_POST['update'])) { /* foreach ($_POST['sign'] as $ID => $show) { $what = quote_smart($show); $upt = mysql_query("UPDATE `user_sign` SET `show`='$what` WHERE `id`='$ID'"); } print_r($_POST['sign']); */ //Siden det ikke er helt klart hva $_POST['sign'] inneholder så finner jeg ikke noe bedre for $show og $what, men det virker som at det ikke er her problemet er. foreach ($_POST['sign'] as $ID => $show) { $what = quote_smart($show); //ID skal her være definert som INT NOT NULL AUTO_INCRIMENT PRIMARY KEY. Den skal IKKE være VARCHAR(). $query = "UPDATE `user_sign` SET `show`='$what` WHERE `id`=$ID"; //Jeg vil ikke engang gjette hva $upt skal stå for... $upt = mysql_query($query) or die(mysql_error()." in query:<br/> $query"); //ALLTID feilsjekk resultater fra DB! } //Hvor pokker kommer $l['id'] fra? 'Ledger'? 'Login'? 'License'? Hvilke felt velges her? Hvordan ser tabellstrukturen ut? //Generelt sett så skal alle ID-er være numeriske. $query = "SELECT * FROM `user_sign` WHERE `user_id`={$l['id']}"; $user_result = mysql_query($query) or die(mysql_error()." in query:<br/> $query"); //ALLTID feilsjekk resultater fra DB! while($user_row=mysql_fetch_array($user_result)) { //Igjen, her skal sign_id være en INT NOT NULL og indeksert med KEY. $query = "SELECT * FROM `sign` WHERE `id`={$user_row['sign_id']}"; $sign_result = mysql_query($query) or die(mysql_error()." in query:<br/> $query"); //ALLTID feilsjekk resultater fra DB! $sign_row = mysql_fetch_array($sign_result); output_table_row($sign_result['name'], $sign_result['image'], $user_result['id'], $sign_result['display']); } function output_table_row($name, $image, $id, $display) { echo "<tr><td>$name</td>"; echo "<td><img src=\"$image\"></td>"; echo "<td><select name=\"$id\">"; echo '<option value="1"'; if($display) { echo 'selected="selected">Ja</option>'; echo '<option value="0"'; if(!$display) echo 'selected="selected">Nei</option>'; echo '</select></td></tr>'; } echo "Du har oppdatert skiltene som vises.<br>"; } ?> <form method="POST" action=""> <table align="center"> <tr> <td width="100"> Navn </td width="100"> <td> Bilde </td> <td width="150"> Vises skiltet? </td> </tr> <?php output_table_row(); ?> <td colspan="3"> <center><input type="submit" name="update" value=" Oppdater! "></center> </td> </tr> </table> </form> Endret 22. september 2009 av LaCrouX Lenke til kommentar
BlueEAGLE Skrevet 23. september 2009 Del Skrevet 23. september 2009 Jeg er usikker på hvordan vi skal gå videre her... Ahh... Istedenfor å forsøke å utvide kodeeksemplet så bør du redusere det slik at du har noe som virker. Derifra så kan du utvide det igjen til du finner problemet og så lage et kodeeksempel som illustrerer det nøyaktige problemet. Er problemet at en <select name="navn[1]"> ikke blir oversatt til $_POST['navn'][1], men isteden $_POST['navn[1]'] eller omvendt så har vi kommet ett steg nærmere. Er problemet at en verdi ikke blir økt i en teller så kan vi komme litt nærmere da også. ....Hvilken variabel var problemet forresten? Hvor er det matrisen ikke blir definert riktig? Lenke til kommentar
Ernie Skrevet 23. september 2009 Del Skrevet 23. september 2009 Problemet her er nok fnuttene trådstarter dytter rundt indeksen. name="var[1]" vil gi $_POST['var'][1] mens name="var['1']" vil gi $_POST['var'][''1''] eller noe i den duren. Pleier å være en fordel å aksessere numeriske indekser som nettopp numerisk, og ikke som en string. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå