Autor | Zpráva | ||
---|---|---|---|
Folker Profil |
#1 · Zasláno: 3. 11. 2009, 22:51:19
Ahoj, potřebuji smazat 1 řádek z databáze, kde je tabulka login obsahující id, login a heslo.
Tento kód údaje z databáze přečte a u každého záznamu vytvoří tlačítko smazat: include ("../database/pripojeni.php"); // připojí databázi $vysledek= mysql_query("SELECT id, jmeno, heslo FROM login ORDER BY id"); while ($radek = mysql_fetch_array($vysledek, MYSQL_ASSOC)) { $id = $radek['id']; $jmeno = $radek['jmeno']; $heslo = $radek['heslo']; echo ('<tr><td width="3%">'.$id.'<td width="20%">'.$jmeno.'</td><td width="20%">'.$heslo.' </td><td width="57%"></td>'); ?> <td> <form action="delete.php" method="post"> <input type="hidden" name="smazat" value="<?php echo $id; ?>" /> <input type="submit" name="submit" value="smazat" /> </form> </tr> <?php } Toto funguje dobře. Ale s tím smazáním je problém. kliknu na tlačítko, spustí se tento script: include ("../database/pripojeni.php"); $smazat = $_POST['id']; $query = "DELETE FROM login WHERE id = '$smazat'"; $result = mysql_query ($query); if ($result){ echo "Údaj byl úspěšně smazán!"; } else { echo "Bohužel se nepodařilo údaje smazat."; mysql_close(); } ...a napíše se hláška, že je údaj smazán. Ten tam ale pořád zůstává a nic se nezměnilo. Nevíte někdo prosím, kde je chyba? |
||
unlucky Profil |
#2 · Zasláno: 3. 11. 2009, 22:55:59
DELETE * FROM login ...
|
||
nightfish Profil |
#3 · Zasláno: 4. 11. 2009, 07:57:11
Folker:
$smazat = $_POST['smazat']; unlucky: nikoliv |
||
unlucky Profil |
#4 · Zasláno: 4. 11. 2009, 16:27:48
Můžu se zeptat, kde je v mém případě chyba?
|
||
Folker Profil |
#5 · Zasláno: 4. 11. 2009, 17:47:15
Díky, už to běhá, jenom se divím, že mě to nenapadlo!:-)
unlucky: „Můžu se zeptat, kde je v mém případě chyba?“ * myslím maže všechny řádky! |
||
Folker Profil |
#6 · Zasláno: 4. 11. 2009, 17:48:34
Teda smaže to příkaz delete. Ta hvězdička je vybere.
|
||
unlucky Profil |
#7 · Zasláno: 4. 11. 2009, 19:25:34 · Upravil/a: unlucky
to jo, ale taky jsem tam dával ty 3 tečky, kt. znamenají, že zbytek je stejný jako to, cos napsal. Jsem si myslel ze zbytek uz vis..
DELETE * FROM login WHERE id ='$smazat'; |
||
Joker Profil |
#8 · Zasláno: 4. 11. 2009, 19:44:44 · Upravil/a: Joker
Folker:
„* myslím maže všechny řádky!“ Ne, o počtu řádků rozhoduje WHERE podmínka. unlucky: DELETE * FROM login WHERE id ='$smazat' ...případně jde pro jistotu přidat ještě LIMIT 1. Mimochodem, je-li ID číslo, proč jsou tam ty uvozovky (označené)? |
||
Alphard Profil |
#9 · Zasláno: 4. 11. 2009, 19:45:36
unlucky:
Problém je v tom, že do delete příkazu * nepatří. MySQL :: MySQL 5.0 Reference Manual :: 12.2.2 DELETE Syntax Blbě se předávala proměnná, mazaly se všechny záznamy, kde id = '', a nesmazalo se nic. |
||
unlucky Profil |
#10 · Zasláno: 4. 11. 2009, 19:55:09
Joker:
„Mimochodem, je-li ID číslo, proč jsou tam ty uvozovky (označené)?“ ne vzdy je id cislo a lepsi mit tam uvozovky navic nez zadne Alphard: > Problém je v tom, že do delete příkazu * nepatří. > MySQL :: MySQL 5.0 Reference Manual :: 12.2.2 DELETE Syntax > Blbě se předávala proměnná, mazaly se všechny záznamy, kde id = '', a nesmazalo se nic. tak to bude moje chyba, nevsiml jsem si ze se to muze smazat cele. Si to pak vyzkousim. |
||
Lamicz Profil |
#11 · Zasláno: 5. 11. 2009, 06:54:07
unlucky: Jestlize je id neco jako primary key s auto increment (coz by podle nazvu melo), tak to bude logicky cely kladny cislo. Spis nez uvozovky bych doporucil
(int) $smazat intval($smazat) |
||
Časová prodleva: 14 let
|
0