28. maj 2009 - 00:09
Der er
9 kommentarer og 1 løsning
PHP edit vil ikke opdatere mysql
Hvorfor vil den ikke opdatere row "henvisning" i mysql? Det er rimeligt simpelt og det virker fint på en anden server. Jeg får absolut ingen fejlmeddelelse. <? mysql_connect("localhost","username","password"); mysql_select_db("my_db"); if(!isset($cmd)) { $result = mysql_query("select * from henvisning order by id"); //loop while($r=mysql_fetch_array($result)) { $hold=$r["hold"]; $id=$r["id"]; echo "$hold - <a href='editHenvisning.php?cmd=edit&id=$id'>Edit</a>"; echo "<br>"; } } ?> <? if($_GET["cmd"]=="edit" || $_POST["cmd"]=="edit") { if (!isset($_POST["submit"])) { $id = $_GET["id"]; $sql = "SELECT * FROM henvisning WHERE id=$id"; $result = mysql_query($sql); $myrow = mysql_fetch_array($result); ?> <form action="editHenvisning.php" method="post"> <input type=hidden name="id" value="<?php echo $myrow["id"] ?>"> Title:<INPUT TYPE="TEXT" NAME="hold" VALUE="<?php echo $myrow["hold"] ?>" SIZE=30><br> Title:<INPUT TYPE="TEXT" NAME="dato" VALUE="<?php echo $myrow["dato"] ?>" SIZE=30><br> Title:<INPUT TYPE="TEXT" NAME="start" VALUE="<?php echo $myrow["start"] ?>" SIZE=30><br> Title:<INPUT TYPE="TEXT" NAME="slut" VALUE="<?php echo $myrow["slut"] ?>" SIZE=30><br> <input type="hidden" name="cmd" value="edit"> <input type="submit" name="submit" value="submit"> </form> <? } ?> <? if ($_POST["$submit"]) { $hold = $_POST["hold"]; $dato = $_POST["dato"]; $start = $_POST["start"]; $slut = $_POST["slut"]; $sql = "UPDATE henvisning SET hold='$hold',dato='$dato',start='$start',slut='$slut' WHERE id=$id"; $result = mysql_query($sql) or die(mysql_error() . '<br />' . $sql); { header("Location: " . $_SERVER['php_SELF']); } echo " opdateret."; } } ?>
Annonceindlæg fra Infor
sikkert forskellige php settings. Har du kigget i din apache/iis log ? Er du sikker på at du får udskrevet fejl på det andet hotel og at de ikke kun kommer i httpd loggen på serveren ? // ouT
er du sikker på at den kommer ind i din if ($_POST["$submit"]) ?
Jeg bør nok indledningsvis skrive at jeg er grafiker og webdesigner. Script/prog/php-syntax termer kender jeg kun til husbehov+. Buzzzz: Jeg har ikke kigget i apache log ...hvor finder jeg den? Bare sådan ca? :o) splazz: Jeg er faktisk ikke rigtigt sikker på noget? Jeg ved bare det samme virker på en anden server. Platform: Apache/2.0.54 (Debian GNU/Linux) mod_python/3.1.3 Python/2.3.5 PHP/4.3.10-19 mod_ssl/2.0.54 OpenSSL/0.9.7e MySQL information: Alle privilegier er ok, se DB layout -> img-link herunder. [img]http://www.ungecoach.dk/screenshot_01.jpg/img]
haha.. fejlen er her: <? if ($_POST["$submit"]) { $hold = $_POST["hold"]; $dato = $_POST["dato"]; $start = $_POST["start"]; $slut = $_POST["slut"]; $sql = "UPDATE henvisning SET hold='$hold',dato='$dato',start='$start',slut='$slut' WHERE id=$id"; $result = mysql_query($sql) or die(mysql_error() . '<br />' . $sql); { header("Location: " . $_SERVER['php_SELF']); } echo " opdateret."; } Du kalder $_POST["$submit"]) Men din variabel hedder altså kun submit og ik $submit.. så ændre den til $_POST["submit"]) så sku det virke..
plus godt råd... Alle variabler du henter fra et tekst felt.. selvom du selv skriver teksten.. burde du bruge 'mysql_escape_string($tekst)' rundt om.. For at undgå du f.eks. laver en ' eller \ $hold = mysql_escape_string($_POST["hold"]); $dato = mysql_escape_string($_POST["dato"]); $start = mysql_escape_string($_POST["start"]); $slut = mysql_escape_string($_POST["slut"]);
zkill: Langt ude, nu virker det hele. Takker 100000000 gange. Svar, så får du cigar :o)
hehe,den havde jeg sq overset :s
og jeg havde endda copy/pastet koden - fuck det er ringe! hehe
så lidt.. Og jah... det tit sådan nogle små fejl.. :) Men som en af de andre skrev.. altid lav et tjek om du kommer ind i din if-sætning.. for så ved du hvor du skal lede efter din fejl.. :)
Vi tilbyder markedets bedste kurser inden for webudvikling