ugrás a tartalomhoz

SQL Update probléma

PredMan · 2007. Dec. 15. (Szo), 21.20
Sziasztok!

készítenék egy olyan sql lekérdezőt, amellyel lehet törölni ill. módosítani is. Az alábbi kódban van valamilyen hiba, mert minden működik, kivéve a módosítást. Légyszíves segítsetek! itt a kód:


*** list.php ***
  1. <?  
  2. $kapcsolat=mysql_connect("...","...","...");   
  3. mysql_select_db("..."or die("Adatbázis hiba!");  
  4.   
  5.     $parancs = "SELECT * FROM proba";  
  6.     $eredmeny = mysql_query($parancs);  
  7.   
  8.     $szin = "darkgrey";  
  9.   
  10.     while ($sor = mysql_fetch_array($eredmeny)) {  
  11.       if ($szin=="darkgrey") {  
  12.         $szin = "white";  
  13.       }  
  14.       else {  
  15.         $szin = "darkgrey";  
  16.       }  
  17.       ?>  
  18.       <tr bgcolor="<?= $szin?>" style="color:#000000">  
  19.         <td align=center><?= $sor["saz"] ?></td>  
  20.         <td align=center><?= $sor["ered"] ?></td>  
  21.         <td align=center>   
  22. <a href="change_form.php?id=<?= $sor["id"] ?>&saz=<?= urlencode($sor["saz"]) ?>&ered=<?= $sor["ered"] ?>">Módosítás</a><br /><a href="delete_user.php?id=<?= $sor["id"] ?>">Törlés</a></td>  
  23.       </tr>  
  24.       <?  
  25.     }    
  26. ?>  
*** delete_user.php ***
  1. <?php  
  2. $kapcsolat=mysql_connect("...","...","...");   
  3. mysql_select_db("..."or die("Adatbázis hiba!");  
  4.   
  5. $parancs = "DELETE FROM proba WHERE id='".$id."' LIMIT 1";  
  6. mysql_query($parancs);  
  7. header("location: list.php");  
  8. mysql_close($kapcsolat);  
  9. ?>  
*** change_user.php ***
  1. <?php  
  2. $kapcsolat=mysql_connect("...","...","...");   
  3. mysql_select_db("..."or die("Adatbázis hiba!");  
  4.   
  5. $parancs = "UPDATE proba SET saz='$saz', ered='$ered', WHERE id='".$_POST['id']."'";  
  6.   
  7. mysql_query($parancs);  
  8.   
  9. header("Location: list.php");  
  10.   
  11. mysql_close($kapcsolat);  
  12. ?>  
*** change_form.php ***
  1. <form action="change_user.php" method="post">  
  2. <table>  
  3. <tr align="center">  
  4. <td><p class="form">saz</p></td>  
  5. <td><input type="text" name="saz" class="login" value="<?= $saz?>"/>  
  6. <br /></td>  
  7. <td><?= $saz;?></td>  
  8. </tr>  
  9. <tr align="center">  
  10. <td><p class="form">ered:</p></td>  
  11. <td><input type="text" name="ered" class="login" value="<?= $ered?>"/><br /></td>  
  12. </tr>  
  13.   
  14. <tr align="center">  
  15. <td><p class="form">Hidden area</p></td>  
  16. <td><input type="hidden" name="id" value="<?= $id?>" class="login"></tr>  
  17. <tr><td><center><input type="submit" name="change" value="Módosítsuk!"/></center></td>  
  18. <td><center><input type="reset" value="RESET!"/></center></td></tr>  
  19. </table>  
  20. </form>  
előre is köszönöm!
 
1

Debug, vessző

csla · 2007. Dec. 16. (V), 00.11
Bár ilyen esetekben általában az első javaslat az, hogy mi a hibaüzenet (amiből egyébként egyből rájöhetnél), de most ránézésre szemet szúrt, hogy a
  1. $parancs = "UPDATE proba SET saz='$saz', ered='$ered', WHERE id='".$_POST['id']."'";  
kódrészletben van egy felesleges vessző...
2

köszi!

PredMan · 2007. Dec. 16. (V), 11.43
hű hallod, már véresre néztem a szememet! ezer hála! :D

egyébként először elírtam valamit a kódban és utána rögtön le is futtattam a print_r($_POST); valamint a mysql_error() parancsot is, de miután kijavítottam a hibát, valahogy ezt a lépést kihagytam :)

mégegyszer köszi!
3

off

Szekeres Gergő · 2007. Dec. 16. (V), 14.37
1, ha formról updatelsz, először is célszerű használni a superglobális tömböket (legalább a requestet).
2, nem árt escapelni a bejövő adatokat! nézd meg mi történik, ha aposztrófot írsz az egyik input mezőbe! (persze lehet hogy nálad semmi, de más szervereken történhet..)
3, az input tagek elött te paragraphba írd a címkét, hanem használd a <label for=""> taget!

csak jótanácsként.. :) üdv.