Vymazání konkrétního záznamu v DB – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vymazání konkrétního záznamu v DB – PHP – Fórum – Programujte.comVymazání konkrétního záznamu v DB – PHP – Fórum – Programujte.com

 

Daniel
~ Anonymní uživatel
74 příspěvků
29. 3. 2012   #1
-
0
-

Ahoj, chtěl jsem si z nudy udělat kontakty v PHP, jenže ted jsem narazil na problém. Když chci mazat záznamy z DB, tak prostě nevím jak. Zkusil jsem tohle:

elseif (isset($_GET["upravit"])) {


    $res = mysql_query("SELECT * FROM `Kontakty`");

    echo "<table align='center' cellpadding='0' cellspacing='0' border='1'>";
    echo "<center><tr><th width='75'>Jméno</th>";
    echo "<th width='75'>Příjmení</th>";
    echo "<th width='120'>Email</th>";
    echo "<th width='100'>Mobil</th></tr></center>";
    while($row = mysql_fetch_array($res))
        {
        echo "<tr>";
        echo "<td>".$row['Jmeno']."</td>";
        echo "<td>".$row['Prijmeni']."</td>";
        echo "<td>".$row['Email']."</td>";
        echo "<td>".$row['Mobil']."</td>";
        echo "<td><a href='".HLAVNI."?smazat'>Smazat</a>";      
        $jmeno = $_GET['Jmeno'];
        $prijmeni = $_GET['Prijmeni'];
        $email = $_GET['Email'];
        $mobil = $_GET['Mobil'];
        echo "</tr>";
        }
    echo "</table>";        
}
elseif (isset($_GET["smazat"])) 
    {

    mysql_query("DELETE FROM Kontakty WHERE Jmeno = '$jmeno' AND Prijmeni = '$prijmeni' AND Email = '$email' AND Mobil = '$mobil' LIMIT 1");

    }  
    header("Location: ".HLAVNI."?upravit");
}
Nahlásit jako SPAM
IP: 78.102.152.–
KIIV
~ Moderátor
+43
God of flame
29. 3. 2012   #2
-
0
-

Se dela spis pres unikatni ID ... krom toho jesli delas neco podobneho jako $jmeno = $_GET['Jmeno'];  i pro to mazani, tak tam mas zatracene velkou bezpecnostni diru

O co se mimochodem snazis v te "uprave" ? hlavne s tim opakovanym nastavovanim $jmeno az $mobil? Bojis se, ze se prenastavi na neco jineho?

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Daniel
~ Anonymní uživatel
74 příspěvků
29. 3. 2012   #3
-
0
-

Mohl by jste mi udělat něco, co by bylo funkční? Já opravdu s PHP začínám. Děkuji

Nahlásit jako SPAM
IP: 78.102.152.–
Daniel
~ Anonymní uživatel
74 příspěvků
29. 3. 2012   #4
-
0
-

Tak jsem se na to vrhl a vymyslel tohle

define("HLAVNI", basename($_SERVER['PHP_SELF'])); 

mysql_connect("$bd_host","$db_user","$db_pass");
mysql_select_db("$db_name");
 
if(isset($_GET["odeslat"])) {
    $sel = mysql_query("SELECT * FROM Kontakty ORDER BY ID DESC");
    $id = mysql_fetch_array($sel); 
    $id[ID]++;  
    mysql_query("INSERT INTO Kontakty (Jmeno, Prijmeni, Email, Mobil, ID) VALUES ('$_POST[jmeno]', '$_POST[prijmeni]', '$_POST[email]', '$_POST[mobil]', '$id[ID]')");
    echo "<div align='center'>Zápis do DB byl úspěšný</div>";
    ?><br /><br /><div align='center'><input type='button' onCLICK="location.href = '<?php HLAVNI ?>?upravit'" value='Pokračovat'></div><?php
    
    }
   


    
elseif (isset($_GET["novy"])) {

    echo "<center>";
    echo "<form action='".HLAVNI."?odeslat' method='post'>";
    echo "Jméno:<br />";
    echo "<input type='text' name='jmeno' /><br /><br />";
    echo "Přijmení:<br />"; 
    echo '<input type="text" name="prijmeni" /><br /><br />';
    echo "Email:<br />"; 
    echo '<input type="text" name="email" /><br /><br />';
    echo "Tel. číslo:<br />";
    echo '<input type="text" name="mobil" /><br />'; 
    echo '<input type="submit" value="Uložit" />';       
    echo "</form></center>";
        
}
elseif (isset($_GET["upravit"])) {


    $res = mysql_query("SELECT * FROM `Kontakty` ORDER BY ID ASC");

    echo "<table align='center' cellpadding='0' cellspacing='0' border='1'>";
    echo "<center><tr><th width='75'>Jméno</th>";
    echo "<th width='75'>Příjmení</th>";
    echo "<th width='120'>Email</th>";
    echo "<th width='100'>Mobil</th></tr></center>";
    $db = mysql_query("select ID from Kontakty order by ID ASC LIMIT 1");
    $a = mysql_fetch_array($db);
    while($row = mysql_fetch_array($res))
        {        
        echo "<tr>";
        echo "<td>".$row['Jmeno']."</td>";
        echo "<td>".$row['Prijmeni']."</td>";
        echo "<td>".$row['Email']."</td>";
        echo "<td>".$row['Mobil']."</td>";
        $db = mysql_query("select ID from Kontakty order by ID ASC");
        {       
        echo "<td>";
        echo '<a href="?smazat&ID='.$a["ID"].'">Smazat</a>';      
        $a[ID]++;
        echo "</td></tr>";
        }
    }        
    echo "</table>";        
}
elseif (isset($_GET["smazat"])) 
    {

    $id = $_GET['ID'];
    mysql_query("delete from Kontakty where ID = '$id'");
    header("Location: ".HLAVNI."?upravit");
    
    }    
?>

<br /><br /><br /><br />   
<div align='center' style='margin-bottom: top'><input type='button' value='Upravit' onClick = "location.href = '<?php HLAVNI ?>?upravit'">
<input type='button' value='Nový kontakt' onClick = "location.href = '<?php HLAVNI ?>?novy'">
<input type='button' value='Smazat' onClick = "location.href = '<?php HLAVNI ?>?smazat'"></div>
<div align='center' style='margin-bottom: top'><input type='button' value='Domů' onClick = "location.href = '<?php HLAVNI ?>'"></div>
<?php
} else {echo "<div align='center'>Nemáš sem přístup!</div>";}       

Je tam ještě nějaká bezbečnostní chyba?

Nahlásit jako SPAM
IP: 78.102.152.–
crazy
~ Moderátor
+10
Grafoman
29. 3. 2012   #5
-
0
-

#4 Daniel
je jich tam spousta... tím, že uděláš

$id = $_GET['id'] se toho problému nezbavíš...

koukni na mysql_real_escape_string a například u idéček můžeš použít intval($_GET['id'])

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 76 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý