Autor Zpráva
marek888
Profil
Dobrý den. Už jsem mazání vyřešil, ale to mi fungovalo na jména uživatelů, takže to nebylo 100%. Chtěl bych se zeptat, jak mám napsat kód pro smazání řádku v databázi přes ID, když vím uživatelské jméno. Už jsem se koukal i do jiných vláken, a nevím co dělám špatně.
V tabulce mám id, jméno uživatele, heslo a email. Napsal jsem tento kód:
nclude "./connect.php";
    $nick = $_SESSION['jmeno'];
    $vysledek = mysql_query("SELECT FROM uzivatele WHERE id,login,heslo,email FROM login ORDER BY id");
    while ($radek = mysql_fetch_array($vysledek, MYSQL_ASSOC))
    {
    $id = $radek['id'];
    $jmeno = $radek['jmeno'];
    $heslo = $radek['heslo'];
    $email = $radek['email'];
    }
    $query = "DELETE FROM uzivatele WHERE id ='$id'";
    $result = mysql_query($query);
    if($result){
    session_destroy();
    header("Location: index.php");
    }else{
    echo "Něco se nepodařilo!";
    }
Mělo by to mazat. Ale když kliknu na tlačítko smazat, které vyvolá tento kód, tak mě to pouze hodí na index.php a odhlásí.
Děkuji všem za odpovědi.
quatzael
Profil
marek888:
Předpokládám, že tam máš include a ne nclude..
Používej spíš mysqli


marek888:
WHERE id,login,heslo,email
Tohle má fungovat jak?

Nejdřív si zkontroluj, jestli Ti ten cyklus while vůbec jede.. (Mimochodem pokud Ti jde čistě o to smazání, tak je tam zbytečně)
marek888
Profil
Ano, mám tam include, jenom jsem špatně okopíroval
quatzael:
Díky, už to funguje, napsal jsem to špatně, správně to má být:
$vysledek = mysql_query("SELECT id,login,heslo,email FROM uzivatele ORDER BY id");
Fisir
Profil
Reaguji na quatzaela:
Používej spíš mysqli
Ano, to určitě vyřeší problém.

Reaguji na marka888:
SELECT FROM uzivatele WHERE id,login,heslo,email FROM login ORDER BY id
To asi nebude úplně správně. Víš uživatelské jméno, a chceš zjistit jeho ID:
mysql_query('SELECT id FROM uzivatele WHERE login="'.mysql_real_escape_string($nick).'"');

while ($radek = mysql_fetch_array($vysledek, MYSQL_ASSOC))
Bude stačit jen:
$radek = mysql_fetch_assoc($vysledek);
Ten cyklus stejně pořád proměnné $id, $jmeno, $heslo a $email přepisuje a smaže jen jednoho uživatele.

$query = "DELETE FROM uzivatele WHERE id ='$id'";
Předpokládám, že sloupec id je číselného typu, proto nepatří apostrofy okolo $id:
$query = 'DELETE FROM uzivatele WHERE id='.intval($id);

to mi fungovalo na jména uživatelů, takže to nebylo 100%. Chtěl bych se zeptat, jak mám napsat kód pro smazání řádku v databázi přes ID, když vím uživatelské jméno.
Pokud to funguje takhle, mohl jsi ponechat původní kód, protože teď se jenom pomocí uživatelského jména zjistí jeho ID a podle toho se smaže příslušný řádek v databázi, což je to samé, jako kdybys mazal řádek přímo podle uživatelského jména (a bylo by to o něco rychlejší, ušetřil by se jeden SQL dotaz).
marek888
Profil
Fisir:
Dobře, děkuji, tak já se na to ještě podívám a zvážím, jestli je lepší to teda mazat rovnou podle jména
quatzael
Profil
Fisir:
Ano, to určitě vyřeší problém.
To sice nevyřeší tenhle problém, ale do budoucna vyřeší jiné potenciální problémy..

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: