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 ***

<?
$kapcsolat=mysql_connect("...","...","..."); 
mysql_select_db("...") or die("Adatbázis hiba!");

    $parancs = "SELECT * FROM proba";
    $eredmeny = mysql_query($parancs);

    $szin = "darkgrey";

    while ($sor = mysql_fetch_array($eredmeny)) {
      if ($szin=="darkgrey") {
        $szin = "white";
      }
      else {
        $szin = "darkgrey";
      }
      ?>
      <tr bgcolor="<?= $szin?>" style="color:#000000">
        <td align=center><?= $sor["saz"] ?></td>
        <td align=center><?= $sor["ered"] ?></td>
        <td align=center> 
<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>
      </tr>
      <?
    }  
?>
*** delete_user.php ***

<?php
$kapcsolat=mysql_connect("...","...","..."); 
mysql_select_db("...") or die("Adatbázis hiba!");

$parancs = "DELETE FROM proba WHERE id='".$id."' LIMIT 1";
mysql_query($parancs);
header("location: list.php");
mysql_close($kapcsolat);
?>
*** change_user.php ***

<?php
$kapcsolat=mysql_connect("...","...","..."); 
mysql_select_db("...") or die("Adatbázis hiba!");

$parancs = "UPDATE proba SET saz='$saz', ered='$ered', WHERE id='".$_POST['id']."'";

mysql_query($parancs);

header("Location: list.php");

mysql_close($kapcsolat);
?>
*** change_form.php ***

<form action="change_user.php" method="post">
<table>
<tr align="center">
<td><p class="form">saz</p></td>
<td><input type="text" name="saz" class="login" value="<?= $saz?>"/>
<br /></td>
<td><?= $saz;?></td>
</tr>
<tr align="center">
<td><p class="form">ered:</p></td>
<td><input type="text" name="ered" class="login" value="<?= $ered?>"/><br /></td>
</tr>

<tr align="center">
<td><p class="form">Hidden area</p></td>
<td><input type="hidden" name="id" value="<?= $id?>" class="login"></tr>
<tr><td><center><input type="submit" name="change" value="Módosítsuk!"/></center></td>
<td><center><input type="reset" value="RESET!"/></center></td></tr>
</table>
</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
$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.