18. juni 2007 - 16:35
Der er
23 kommentarer
problem med UPDATE
Jeg vil lave en funktion på min hjemmeside der lader mig opdatere min databases indhold. Jeg troede sådan set at jeg var færdig men en irriterende SQL sætning spænder endnu engang ben for mig. Der kommer ingen fejl, ændringen bliver blot ikke gennemført. Det ser sådan ud: echo"<TABLE class='desc'><TR><TD> <form method='post' action='details_edit.php'> <textarea cols='25' rows='1'> ".$row['Producent']." </textarea> <textarea cols='25' rows='1'> ".$row['Model']." </textarea> <textarea cols='65' rows='25'> ".$row['Beskrivelse']." </textarea> <textarea cols='65' rows='5'> ".$row['Files']." </textarea> <textarea cols='65' rows='5'> ".$row['Pics']." </textarea> <input type='submit' value='Save'> </form>"; $id = $row['id']; mysql_query('UPDATE load SET Producent = "'.$_POST['set_prod'].'", Model = "'.$_POST['set_model'].'", Beskrivelse = "'.$_POST['set_desc'].'" WHERE ID = "'.$id.'"');
Annonceindlæg fra Infor
Tekstfelterne har selvfølgelig name.
Er du sikker på du får $row['id'] med ud? Pröv at echoe din sql istedet for at eksekvere den. $SQL_String="UPDATE load SET Producent = '".$_POST['set_prod']."', Model = '".$_POST['set_model']."', Beskrivelse = '".$_POST['set_desc']."' WHERE ID = '".$id."'"; $id = $row['id']; //mysql_query($SQL_String); echo $SQL_String; Har byttet lidt rundt på dine plinger.
Så må det väre et andet sted den fejler. For lige meget hvad skal den udskrive noget.
Og du skal selvf. deklarere din $id variabel för sql'en. Miss fra min side.
Nej, jeg sidder lidt fast. Kan ikke rigtig finde en løsning på problemet. Jeg har en ide om at min SQl UPDATE aldrig bliver afviklet fordi jeg bliver sendt videre til details_edit.php inden den når dertil. Prøver at ændre action til at pege på sig selv.
Men du har vel PHP koden i details_edit.php? Ellers er det klart det ikke fungerer.
Det stykke kode jeg har vist står i details_edit.php ja. Men jeg redirecter jo til en anden side inden den når til mit SQL?
21. juni 2007 - 11:53
#10
Eller nej det gør jeg egentlig ikke. Hmm så er jeg lost igen :(
21. juni 2007 - 11:55
#11
Ja, så er det klart det ikke fungerer. PHP läser koden oppe fra og ned. Og har du en redirect för din SQL, siger det sig selv at den ikke bliver eksekveret når du submitter ;o)
21. juni 2007 - 11:55
#12
Vis os hele details_edit.php.
21. juni 2007 - 11:57
#13
<?php session_start(); //TJEK SESSION == START// if ($_SESSION['login']==""){ print '<meta http-equiv="refresh" content="0;url=index.php">'; exit; } //TJEK SESSION == SLUT// ?> <link rel="stylesheet" type="text/css" href="loadstyle.css"> <title>lockandload.dk</title> <!-- INCLUDE bstyle.php --> <? include("bstyle.php"); ?> <br><br><br> <TABLE height="600" border=0 align="center"><TR> <TD width="20%" border="0" valign="top" align="right"> <!-- INCLUDE menu.php --> <? include("menu.php"); ?></TD> <TD valign="top" align="center"> <TABLE width="600" align="center" class="dot_admin"><TR> <?php echo' <TD align="center"> <TABLE class="desc_admin"><TR><TD>ADMINISTRATOR</TD></TR></TABLE><br> <form action="admin_index.php" method="post"> <input type="text" class="searchbox" name="sbox"> <input type="image" src="/pics/search.png" value=" Search " title="E.g. Smg, Rifle, Sniper, Pistol, Revolver "> <br> <input type="checkbox" name="adsearch">Search Specifications </form>'; //'.$row['Producent'].'<br>'.$row['Model'].'<br /> if(isset($_GET['id'])) { // INCLUDE connect.php // include("connect.php"); mysql_connect(localhost,$username,$password); mysql_select_db($database) or die("Unable to select database.".mysql_error()); $escaped_sbox = mysql_real_escape_string($_GET['id']); $query = "SELECT * FROM `load` WHERE id = ". $escaped_sbox . ""; if(isset($_POST['adsearch'])){ $query = "SELECT * FROM `load` WHERE Beskrivelse LIKE '%" . $escaped_sbox . "%'"; } $result = mysql_query($query); $q = mysql_query($query); while ($row = mysql_fetch_assoc($q)) { echo"<TABLE class='desc_admin'><TR><TD><br><a href='admin_index.php'><- Back</a><br> <br><form method='post' action=''> <textarea cols='25' rows='2' name='set_prod' class='searchbox'> ".$row['Producent']." </textarea> <textarea cols='25' rows='2' name='set_model' class='searchbox'> ".$row['Model']." </textarea> <textarea cols='65' rows='25' name='set_desc' class='searchbox'> ".$row['Beskrivelse']." </textarea> <textarea cols='65' rows='5' name='set_files' class='searchbox'> ".$row['Files']." </textarea> <textarea cols='65' rows='5' name='set_pics' class='searchbox'> ".$row['Pics']." </textarea><br><br> <a href='admin_index.php'><- Back</a> <input type='submit' value='Save' name='update'> </form>"; } } if(isset($_POST['update'])){ $id = $_GET['id']; $edit = mysql_query("UPDATE load SET Producent = '".$_POST['set_prod']."', Model = '".$_POST['set_model']."', Beskrivelse = '".$_POST['set_desc']."', Files = '".$_POST['set_files']."', Pics = '".$_POST['set_pics']."' WHERE ID = ".$id." "); } echo "</TD></TR></TABLE>"; echo "</TD></TR></TABLE>"; ?> <!-- == LOGOUT == START == --> <TD width="20%" align=left valign=top> <TABLE><TR><TD> <form action="index.php" method="get"> <input type="image" src="/pics/logout.png" align="right" name="logout"> </form> </TD></TR></TABLE><br> <?php if(isset($_POST['logout'])){ session_start(); session_destroy(); header('Location: index.php'); }?> <!-- == LOGOUT == SLUT == --> </TD></TR></TABLE> <br> </TD></TR></TABLE> <br><br> <? include("bstyle_bottom.php"); ?>
21. juni 2007 - 12:07
#14
Se om du får alle variabler med i denne: <?php session_start(); if(isset($_POST['update'])){ $id = $_GET['id']; $edit = "UPDATE load SET Producent = '".$_POST['set_prod']."', Model = '".$_POST['set_model']."', Beskrivelse = '".$_POST['set_desc']."', Files = '".$_POST['set_files']."', Pics = '".$_POST['set_pics']."' WHERE ID = ".$id.""; echo "SQL-STRING: ". $edit; //mysql_query($edit) or die(mysql_error()); } //TJEK SESSION == START// if ($_SESSION['login']==""){ print '<meta http-equiv="refresh" content="0;url=index.php">'; exit; } //TJEK SESSION == SLUT// ?> <link rel="stylesheet" type="text/css" href="loadstyle.css"> <title>lockandload.dk</title> <!-- INCLUDE bstyle.php --> <? include("bstyle.php"); ?> <br><br><br> <TABLE height="600" border=0 align="center"><TR> <TD width="20%" border="0" valign="top" align="right"> <!-- INCLUDE menu.php --> <? include("menu.php"); ?></TD> <TD valign="top" align="center"> <TABLE width="600" align="center" class="dot_admin"><TR> <?php echo' <TD align="center"> <TABLE class="desc_admin"><TR><TD>ADMINISTRATOR</TD></TR></TABLE><br> <form action="admin_index.php" method="post"> <input type="text" class="searchbox" name="sbox"> <input type="image" src="/pics/search.png" value=" Search " title="E.g. Smg, Rifle, Sniper, Pistol, Revolver "> <br> <input type="checkbox" name="adsearch">Search Specifications </form>'; //'.$row['Producent'].'<br>'.$row['Model'].'<br /> if(isset($_GET['id'])) { // INCLUDE connect.php // include("connect.php"); mysql_connect(localhost,$username,$password); mysql_select_db($database) or die("Unable to select database.".mysql_error()); $escaped_sbox = mysql_real_escape_string($_GET['id']); $query = "SELECT * FROM `load` WHERE id = ". $escaped_sbox . ""; if(isset($_POST['adsearch'])){ $query = "SELECT * FROM `load` WHERE Beskrivelse LIKE '%" . $escaped_sbox . "%'"; } $result = mysql_query($query); $q = mysql_query($query); while ($row = mysql_fetch_assoc($q)) { echo"<TABLE class='desc_admin'><TR><TD><br><a href='admin_index.php'><- Back</a><br> <br><form method='post' action=''> <textarea cols='25' rows='2' name='set_prod' class='searchbox'> ".$row['Producent']." </textarea> <textarea cols='25' rows='2' name='set_model' class='searchbox'> ".$row['Model']." </textarea> <textarea cols='65' rows='25' name='set_desc' class='searchbox'> ".$row['Beskrivelse']." </textarea> <textarea cols='65' rows='5' name='set_files' class='searchbox'> ".$row['Files']." </textarea> <textarea cols='65' rows='5' name='set_pics' class='searchbox'> ".$row['Pics']." </textarea><br><br> <a href='admin_index.php'><- Back</a> <input type='submit' value='Save' name='update'> </form>"; } } echo "</TD></TR></TABLE>"; echo "</TD></TR></TABLE>"; ?> <!-- == LOGOUT == START == --> <TD width="20%" align=left valign=top> <TABLE><TR><TD> <form action="index.php" method="get"> <input type="image" src="/pics/logout.png" align="right" name="logout"> </form> </TD></TR></TABLE><br> <?php if(isset($_POST['logout'])){ session_start(); session_destroy(); header('Location: index.php'); }?> <!-- == LOGOUT == SLUT == --> </TD></TR></TABLE> <br> </TD></TR></TABLE> <br><br> <? include("bstyle_bottom.php"); ?>
21. juni 2007 - 12:12
#15
Der kommer en masse output: SQL-STRING: UPDATE load SET Producent = ' Heckler & Koch ', Model = '(TEST) AG36 ', Beskrivelse = ' og WHERE ID = 15 får den også med
21. juni 2007 - 12:14
#16
OK, så fjern afkommenteringen og afkommenter min echo.
21. juni 2007 - 12:15
#17
Ved ikke om load er et reserveret ord. Men ellers kan du bruge: `load` Men det ser vi når du körer sql'en.
21. juni 2007 - 12:20
#18
Tror jeg lige skal lave mysql_connect osv. før den update
21. juni 2007 - 12:21
#19
Ja, det er nok en god ide ;o)
21. juni 2007 - 12:22
#20
Hold da op, det virker! ....
21. juni 2007 - 12:23
#21
Det er altid en god ide at samle alle actions längst oppe (connect, if(isset... osv, osv). Ser du har flere af dem.
21. juni 2007 - 12:27
#22
Fortryder lidt jeg kategoriserede dette problemt som "let", har godt nok siddet med det et par dage. Tak for hjælpen.
21. juni 2007 - 13:30
#23
Du lägger bare et svar og accepterer selv. Samler ikke på point ;o)
Computerworld tilbyder specialiserede kurser i database-management