Autor | Zpráva | ||
---|---|---|---|
Haďas Profil |
opět vás zdravím programátorští bozi,
opět jsem narazil na problém... mám výpis na stránce ze dvou propojených tabulek z sql a teď jsem tam přidal sloupec kde je tlačítko (59 řádek), které má po stlačení smazat příslušný řádek, zkoušel jsem do toho zacyklovat <form> ale nějak se mu to nelíbí, tak jsem se chtěl zeptat vás jestli někdo nemá nějaký tip? <?php session_start(); $uzit_jmeno="root"; $hesloo="abcd1234"; $server_jmeno="localhost"; $databaze=mysql_connect($server_jmeno, $uzit_jmeno, $hesloo) or die("Nemůžu se připojit k databázi!"); $vyber_databze=mysql_select_db("stranky_1", $databaze); $vypis=mysql_query ("SELECT u.ID_uzivatel, u.uzivatelske_jmeno, d.ID_dochazka, d.datum, d.den, d.cas FROM uzivatele u JOIN dochazka d ON u.ID_uzivatel = d.ID_uzivatel ORDER BY u.ID_uzivatel"); ?> <html> <head> <link rel="StyleSheet" href="styl.css"></head> <center> <title> </title> </head> <body> <h1>Výpis kapacity docházky</h1> </br> <a href="index_1.php">Index</a> <a href="admin_prava.php">Administrátorské rozhraní</a> </br> </br> <table border="1" bgcolor="#F5F5F5"> <tr> <th>ID uživatele</th> <th>Uživatelské jméno</th> <th>ID docházky</th> <th>Datum</th> <th>Den</th> <th>Čas</th> <th>Odstranění docházky</th> </tr> <?php while($sloupce=mysql_fetch_assoc($vypis)){ echo"<tr>"; echo"<td>".$sloupce['ID_uzivatel']."</td>"; echo"<td>".$sloupce['uzivatelske_jmeno']."</td>"; echo"<td>".$sloupce['ID_dochazka']."</td>"; echo"<td>".$sloupce['datum']."</td>"; echo"<td>".$sloupce['den']."</td>"; echo"<td>".$sloupce['cas']."</td>"; echo"<td><input type=submit></td>"; echo"</tr>"; } ?> </table> </body> </html> |
||
Monkeys Profil * |
#2 · Zasláno: 9. 9. 2015, 19:23:12 · Upravil/a: Monkeys
Haďas:
a preco nedas vedla kazdeho vypisu jednoducho <input type="checkbox" name="uzivatel[]" /> a po odskrtnuti a odoslani cez submit vymazes vsetky tie ktore si zaskrtol? dotaz by vyzeral neako takto: mysql_query ("DELETE FROM FROM uzivatele u LEFT JOIN dochazka d USING(ID_uzivatel) WHERE id_uzivatel IN({$uzivatel})"); M. Som zabudol ze do pola toho checkboxu musis pridat ID uzivatela <input type="checkbox" name="uzivatel[<?php ptint $sloupce['ID_uzivatel']; ?>]" /> M. |
||
Haďas Profil |
#3 · Zasláno: 9. 9. 2015, 19:28:00 · Upravil/a: Haďas
moje chyba... v tomhle seznamu se řídíme podle docházky, takže potřebuju mazat řádky dle ID_dochazka ale tvůj návod se na to dá interpolovat ;) moc děkuji a ozvu jak mi to jde :)
jsem v koncích... + chyba: Notice: Undefined variable: dochazka in C:\Complex-Web-Server-2\www\vypis_dochazky.php on line 75 tu chybu chápu ale nevim jak z toho ven... <?php session_start(); $uzit_jmeno="root"; $hesloo="abcd1234"; $server_jmeno="localhost"; $databaze=mysql_connect($server_jmeno, $uzit_jmeno, $hesloo) or die("Nemůžu se připojit k databázi!"); $vyber_databze=mysql_select_db("stranky_1", $databaze); $vypis=mysql_query ("SELECT u.ID_uzivatel, u.uzivatelske_jmeno, d.ID_dochazka, d.datum, d.den, d.cas FROM uzivatele u JOIN dochazka d ON u.ID_uzivatel = d.ID_uzivatel ORDER BY u.ID_uzivatel"); ?> <html> <head> <link rel="StyleSheet" href="styl.css"></head> <center> <title> </title> </head> <body> <h1>Výpis kapacity docházky</h1> </br> <a href="index_1.php">Index</a> <a href="admin_prava.php">Administrátorské rozhraní</a> </br> </br> <table border="1" bgcolor="#F5F5F5"> <tr> <th></th> <th>ID uživatele</th> <th>Uživatelské jméno</th> <th>ID docházky</th> <th>Datum</th> <th>Den</th> <th>Čas</th> <th>Odstranění docházky</th> </tr> <?php while($sloupce=mysql_fetch_assoc($vypis)){ echo"<tr>"; echo"<td><input type='checkbox' name=dochazka[]/></td>"; echo"<td>".$sloupce['uzivatelske_jmeno']."</td>"; echo"<td>".$sloupce['ID_dochazka']."</td>"; echo"<td>".$sloupce['datum']."</td>"; echo"<td>".$sloupce['den']."</td>"; echo"<td>".$sloupce['cas']."</td>"; echo"<td><input type=submit></form></td>"; echo"</tr>"; } mysql_query ("DELETE FROM FROM dochazka d USING(ID_dochazka) WHERE ID_dochazka IN({$dochazka})"); ?> </table> </body> </html> |
||
Haďas Profil |
tak mám něco takového ale nefunguje to :D
<?php session_start(); $uzit_jmeno="root"; $hesloo="abcd1234"; $server_jmeno="localhost"; $databaze=mysql_connect($server_jmeno, $uzit_jmeno, $hesloo) or die("Nemůžu se připojit k databázi!"); $vyber_databze=mysql_select_db("stranky_1", $databaze); $vypis=mysql_query ("SELECT u.ID_uzivatel, u.uzivatelske_jmeno, d.ID_dochazka, d.datum, d.den, d.cas FROM uzivatele u JOIN dochazka d ON u.ID_uzivatel = d.ID_uzivatel ORDER BY u.ID_uzivatel"); ?> <html> <head> <link rel="StyleSheet" href="styl.css"></head> <center> <title> </title> </head> <body> <h1>Výpis kapacity docházky</h1> </br> <a href="index_1.php">Index</a> <a href="admin_prava.php">Administrátorské rozhraní</a> </br> </br> <table border="1" bgcolor="#F5F5F5"> <tr> <th></th> <th>ID uživatele</th> <th>Uživatelské jméno</th> <th>ID docházky</th> <th>Datum</th> <th>Den</th> <th>Čas</th> <th>Odstranění docházky</th> </tr> <form action="vypis_dochazky.php" method="POST"> <?php while($sloupce=mysql_fetch_assoc($vypis)){ echo"<tr>"; echo"<td><input type='checkbox' name=smaz_dochazka/></td>"; echo"<td>".$sloupce['ID_uzivatel']."</td>"; echo"<td>".$sloupce['uzivatelske_jmeno']."</td>"; echo"<td>".$sloupce['ID_dochazka']."</td>"; echo"<td>".$sloupce['datum']."</td>"; echo"<td>".$sloupce['den']."</td>"; echo"<td>".$sloupce['cas']."</td>"; echo"<td></td>"; echo"</tr>"; } if(isset($_POST['submit'])){ $smaz_dochazka=$_POST['smaz_dochazka']; $sql=mysqli_connect("localhost", "root", "abcd1234","stranky_1") or die("Nemůžu se připojit k databázi!"); if(mysqli_num_rows(mysqli_query($sql, "SELECT * FROM dochazka WHERE ID_dochazka='".$smaz_dochazka."' LIMIT 1")) !=0) { mysqli_query($sql, "DELETE FROM dochazka WHERE ID_dochazka='$smaz_dochazka'"); echo"Docházka byla smazána."; }} ?> </table> <input type="submit" value="Smazat" name="submit"/> </form> </body> </html> |
||
Alphard Profil |
#5 · Zasláno: 9. 9. 2015, 21:05:49
Haďas:
„echo"<td><input type=submit></form></td>";“ Tady chybí počáteční <form> . Musí to být kompletní formulář, musí nést informaci o id aktuálního řádku a po odeslání musí být tento stav odchycen (něčím jako if (isset($_POST['delete_item'])) ).
Ta druhá varianta má podobný problém, když někam dáte name=dochazka[] , je třeba k tomu přidat i value položky, která se má mazat a nějaký kód, který to mazání provede.
|
||
Haďas Profil |
#6 · Zasláno: 9. 9. 2015, 21:09:25
no já se to snažím nakonec vyřešit tím zaškrtáváním ale nevím právě jak získat informace o příslušném řádku alias ID_dochazka co chci smazat a následně to poslat na query($sql, "DELETE... ) aby to promazal
momentálně se peru s <?php session_start(); $uzit_jmeno="root"; $hesloo="abcd1234"; $server_jmeno="localhost"; $databaze=mysql_connect($server_jmeno, $uzit_jmeno, $hesloo) or die("Nemůžu se připojit k databázi!"); $vyber_databze=mysql_select_db("stranky_1", $databaze); $vypis=mysql_query ("SELECT u.ID_uzivatel, u.uzivatelske_jmeno, d.ID_dochazka, d.datum, d.den, d.cas FROM uzivatele u JOIN dochazka d ON u.ID_uzivatel = d.ID_uzivatel ORDER BY u.ID_uzivatel"); ?> <html> <head> <link rel="StyleSheet" href="styl.css"></head> <center> <title> </title> </head> <body> <h1>Výpis kapacity docházky</h1> </br> <a href="index_1.php">Index</a> <a href="admin_prava.php">Administrátorské rozhraní</a> </br> </br> <table border="1" bgcolor="#F5F5F5"> <tr> <th></th> <th>ID uživatele</th> <th>Uživatelské jméno</th> <th>ID docházky</th> <th>Datum</th> <th>Den</th> <th>Čas</th> <th>Odstranění docházky</th> </tr> <form action="vypis_dochazky.php" method="POST"> <?php while($sloupce=mysql_fetch_assoc($vypis)){ echo"<tr>"; echo"<td><input type='checkbox' name='smaz_dochazka'/></td>"; echo"<td>".$sloupce['ID_uzivatel']."</td>"; echo"<td>".$sloupce['uzivatelske_jmeno']."</td>"; echo"<td>".$sloupce['ID_dochazka']."</td>"; echo"<td>".$sloupce['datum']."</td>"; echo"<td>".$sloupce['den']."</td>"; echo"<td>".$sloupce['cas']."</td>"; echo"<td></td>"; echo"</tr>"; } if(isset($_POST['submit'])){ $smaz_dochazka=$_POST['smaz_dochazka']; $sql=mysqli_connect("localhost", "root", "abcd1234","stranky_1") or die("Nemůžu se připojit k databázi!"); if(mysqli_num_rows(mysqli_query($sql, "SELECT * FROM dochazka WHERE ID_dochazka='".$smaz_dochazka."' LIMIT 10")) !=0) { mysqli_query($sql, "DELETE FROM dochazka WHERE ID_dochazka='$smaz_dochazka'"); echo"Docházka byla smazána."; }} ?> </table> <input type="submit" value="Smazat" name="submit"/> </form> </body> </html> |
||
Alphard Profil |
#7 · Zasláno: 9. 9. 2015, 21:16:08
Dejte si tam
print_r($_POST); , uvidíte, jaká data se posílají na server. Zjistíte, že neobsahují potřebné id.
|
||
Haďas Profil |
#8 · Zasláno: 9. 9. 2015, 21:22:40
já to chápu, je to logické, že neví o jaké hodnoty se jedná, proto vás tu prosím o pomoc :)
|
||
Alphard_ Profil * |
#9 · Zasláno: 9. 9. 2015, 21:48:10
<input type='checkbox' name='smaz_dochazka[]' value='id' /> echo "<td><input type='checkbox' name='smaz_dochazka[]' value='$sloupce[ID_uzivatel]' /></td>"; |
||
Časová prodleva: 9 let
|
0