Jeg har et lille problem med at opdatere i min DB. Jeg kan godt hente og vise det rigtige indhold, men når jeg skal opdatere sker der ikke en fis.
Min ide er at der går noget galt med at $ii/id værdien ikke bliver det samme??
Men jeg er ved at blive gråhåret så please help.
/Reflex
<?php include ("../connect.php");
echo "<TABLE BORDER=\"0\" CELLPADDING=\"10\" CELLSPACING=\"10\"><TR>"; echo "<FORM ACTION=\"".basename($PHP_SELF)."?vis\" METHOD=\"POST\">"; echo "<tr><td>"; echo "Vælg et hold<br>"; echo "<select name=\"id\" size=\"1\">"; $result=mysql("$dbname","SELECT * FROM ligastilling ORDER BY position"); while ($row = mysql_fetch_row($result)) { $ho=$row[0]; // Hold navn $ka=$row[1]; // kampe $vu=$row[2]; // vundet $ua=$row[3]; // uafgjort $ta=$row[4]; // tabt $sc=$row[5]; // scoret $im=$row[6]; // imod $po=$row[7]; // point $pt=$row[8]; // position $ii=$row[9]; // id echo "<option value=$ii>$ho - $po</option>"; } echo "</select></td></tr>"; echo "<tr><td align=\"left\"><INPUT TYPE=\"submit\" NAME=\"Vælg\" VALUE=\"Submit\"></form></TABLE>";
if ($QUERY_STRING == "vis") { $result=mysql("$dbname","SELECT * FROM ligastilling WHERE id = '$id'"); while($row=mysql_fetch_row($result)) { $ho=$row[0]; // hold $ka=$row[1]; // kampe $vu=$row[2]; // vundet $ua=$row[3]; // uafgjort $ta=$row[4]; // tabt $sc=$row[5]; // scoret $im=$row[6]; // imod $po=$row[7]; // point $pt=$row[8]; // position $ii=$row[9]; // id } echo "Indtast ny data og tryk opdatér<br><br>"; echo "<TABLE width='300' BORDER=\"0\" CELLPADDING=\"4\" CELLSPACING=\"0\">"; echo "<FORM ACTION=\"".basename($PHP_SELF)."?indsaet\" METHOD=\"POST\">";
Dit script henter alle variablene $ho, $ka osv. med et databaseopslag i starten af scriptet, så det er de allerede eksisterende værdier i databasen, der bliver genindskrevet i bunden.
Dem du skal smide i databasen er jo dem fra formularen, og de hedder $_POST['hold'], $_POST['kampe'] osv.
Jeg har prøvet $_POST['hold'], $_POST['kampe'] osv. men så kommer den med fejl meldingen Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'.
Så jeg er desværre ikke kommet vidre :(
Synes godt om
Slettet bruger
26. december 2003 - 22:40#5
Det lyder som om du mangler et slut-anførselstegn et sted. Eller måske har en ikke-escapet " i en streng, der er omsluttet af ".
I html er ' også tilladt om attributter. Prøv at lave alle de \" om til ', så kan det måske blive en smule lettere at overskue. Her er lige en linie som eksempel:
echo "<TABLE BORDER='0' CELLPADDING='10' CELLSPACING='10'><TR>"; echo "<FORM ACTION='test2.php?vis' METHOD='POST'>"; echo "<tr><td>"; echo "Vælg et hold<br>"; echo "<select name='id' size='1'>"; $result=mysql("piranhafc_dk","SELECT * FROM ligastilling ORDER BY position"); while ($row = mysql_fetch_row($result)) { $ho=$row[0]; // Hold navn $ka=$row[1]; // kampe $vu=$row[2]; // vundet $ua=$row[3]; // uafgjort $ta=$row[4]; // tabt $sc=$row[5]; // scoret $im=$row[6]; // imod $po=$row[7]; // point $pt=$row[8]; // position $ii=$row[9]; // id echo "<option value=$ii>$ho - $po</option>"; } echo "</select></td></tr>"; echo "<tr><td align='left'><INPUT TYPE='submit' NAME='Vælg' VALUE='Submit'></form></TABLE>";
if ($QUERY_STRING == "vis") { $result=mysql("piranhafc_dk","SELECT * FROM ligastilling WHERE id = '$id'"); while($row=mysql_fetch_row($result)) { $ho=$row[0]; // hold $ka=$row[1]; // kampe $vu=$row[2]; // vundet $ua=$row[3]; // uafgjort $ta=$row[4]; // tabt $sc=$row[5]; // scoret $im=$row[6]; // imod $po=$row[7]; // point $pt=$row[8]; // position $ii=$row[9]; // id }
if ($QUERY_STRING == "indsaet") { mysql("piranhafc_dk","UPDATE ligastilling SET $_POST['hold'], // Her skriver den `T_STRING' osv. $_POST['kampe'], $_POST['vundet'], $_POST['uafgjort'], $_POST['tabt'], $_POST['scoret'], $_POST['imod'], $_POST['point'], $_POST['position'] WHERE id='$ii' "); }
?>
Det er lige inden den skal opdatere db'en.
Synes godt om
Slettet bruger
27. december 2003 - 07:30#7
Du har lavet navnene i formularen om, så skal du også lave navnene i $_POST[] om. Derudover har du glemt kolonnenavnene i din SQL. Nu ved MySQL jo ikke, hvad den skal gøre med dine værdier... Ret til:
if ($QUERY_STRING == "indsaet") { mysql("piranhafc_dk","UPDATE ligastilling SET hold='{$_POST['hold1']}', kampe='{$_POST['kampe1']}', vundet='{$_POST['vundet1']}', uafgjort='{$_POST['uafgjort1']}', tabt='{$_POST['tabt1']}', scoret='{$_POST['scoret1']}' imod='{$_POST['imod1']}', point='{$_POST['point1']}', position='{$_POST['position1']}' WHERE id='{$_POST['id']}'"); }
Og så vil det være en god ide at tilføje lidt kontrol af input før du smider det til databasen.
Hmm jeg er ikke helt med når du siger kontrol af input? Jeg indsatte den nye kode men den virker heller ikke :( kan jeg ha' lavet noget forkert da jeg oprettede tabellerne, jeg kan jo sagtens opdatere den med phpMyAdmin.
hold varchar(30) kampe int(2) vundet int(2) uafgjort int(2) tabt int(2) scoret int(3) imod int(3) point int(2) position int(1) id int(2) primary auto_increment
Den connecter jo fint når den skal hente db'en og vise den.
Synes godt om
Slettet bruger
27. december 2003 - 17:11#13
Tjah, men hvis fejlen ikke er i den ene fil må den jo være i den anden, og jeg kan ikke få øje på negle fejl i den kode, du har vist bortset fra ting, der er blevet rettet.
<form action='confirm2.php' method='post'> Please enter your confirmation code:<br> <input type='text' size='20' maxlength='32' name='confirmcode'><br> <input type='submit' value='Submit'> <input type='reset' value='Clear'> </form>
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.