Autor Zpráva
Folker
Profil
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
DELETE * FROM login ...
nightfish
Profil
Folker:
$smazat = $_POST['smazat'];

unlucky:
nikoliv
unlucky
Profil
Můžu se zeptat, kde je v mém případě chyba?
Folker
Profil
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
Teda smaže to příkaz delete. Ta hvězdička je vybere.
unlucky
Profil
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
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
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
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
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)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: