Autor | Zpráva | ||
---|---|---|---|
Truuhlik Profil |
#1 · Zasláno: 24. 6. 2010, 23:12:36
Takže při tvorbě jednoduchého rozhraní, jsem tak trochu narazil na problém:
Mám vytvořený formulář, ve kterém mám možnosti Upravit nebo Smazat označené, při volbě smazat označené se vymažou označené řádky a bez problémů vše funguje. Bohužel mě trápí ten fakt, že když označím více řádků a kliknu na jakékoli upravit, tak se mi samozřejmě naženou všechny označené řádky (jejich id) do array a tím pádem je problém editovat jenom ten jeden řádek. (bude to používat více lidí, proto to řeším) Pro ukázku kód (na 100% je to jenom zkušební kód, jde mi jenom na to jak chytře vykoumat tu editaci: TABULKA: CREATE TABLE data ( id int NOT NULL AUTO_INCREMENT, nazev TEXT NOT NULL, PRIMARY KEY (id) ) COLLATE utf8_unicode_ci config.php <?php $server = "localhost"; $user = "uzivatel"; $heslo = "heslo"; $db = "databaze"; mysql_connect($server, $user, $heslo); mysql_select_db($db); mysql_query("SET CHARACTER SET utf8"); header("Content-Type: text/html; charset=utf-8"); ?> index.php <?php include 'config.php'; header("Content-Type: text/html; charset=utf-8"); echo ' <form action="edit.php" method="post"> <table style="width: 400px"> <tr> <td colspan="3"><a href="pridat.php">Přidat novinku</a></td> </tr> <tr style="height: 30px;"> <td colspan="3"> </td> </tr> <tr style="background-color: #0b0b0b; color: #ffffff;"> <td>Vybrat</td> <td><strong>Název</strong></td> <td><strong>Upravit</strong></td> </tr>'; if(empty($_GET['page'])){$page = "";} else{$page = $_GET['page'];} $celkem = mysql_num_rows(mysql_query("SELECT id FROM data")); $pocet = 10; $max_stranek = ceil($celkem/$pocet); $url_stranka = ($page/$pocet)+1; $dotaz = mysql_query("SELECT * FROM data ORDER BY nazev ASC LIMIT ".intval($page).",$pocet"); while($data = mysql_fetch_assoc($dotaz)){ $d_id = $data['id']; $d_nazev = $data['nazev']; echo '<tr> <td><input type="checkbox" name="id[]" value="'.$d_id.'"></td> <td>'.$d_nazev.'</td> <td><input type="submit" name="akce" value="Upravit"></td> </tr>'; } echo ' <tr style="height: 20px;"> <td colspan="3"> </td> </tr> <tr> <td colspan="3"><input type="submit" name="akce" value="Smazat označené"></td> </tr> <tr> <td> </td> </tr> <tr> <td colspan="3"> <p style="text-align: center;"><strong>1</strong> 2 3 4 5 6</p> </td> </tr> </table> </form> '; ?> edit.php <?php include 'config.php'; header("Content-Type: text/html; charset=utf-8"); $cislo = $_POST['id']; $akce = $_POST['akce']; $celkem = count($cislo); if($cislo!=""){ if($akce==""){ header("location: index.php"); } elseif($akce=="Upravit"){ $x = mysql_query("SELECT * FROM data WHERE id=' /*a tady je to teda hodně prekérní, při jednom checkboxu vím jak na to, ale při více už je problém*/ ' LIMIT 1"); while($y = mysql_fetch_array($x){ $d_id = $y['id']; $d_nazev = $y['nazev']; } echo '<h1>Editace:</h1> <form action="ulozit.php" method="post"> <table"> <tr> <td>Název:<input type="hidden" name="id" value="'.$d_id.'"></td> <td><input type="text" name="nazev" value="'.$d_nazev.'"></td> </tr> <tr> <td> </td> <td><input type="submit" value="Uložit změny"></td> </tr> </table> </form> '; } elseif($akce=="Smazat označené"){ for($i=0; $i<$celkem; $i++){ mysql_query("DELETE FROM data WHERE id='".$cislo[$i]."'"); } echo '<h1>Vybrané novinky byly úspěšně smazány !</h1>'; echo '<p><a href="index.php">pokračovat >></a></p>'; } else{ echo '<h1>Požadovaná stránka neexistuje !</h1> <p><a href="index.php">pokračovat >></a></p>'; } } else{ echo '<h1>Nebyla vybrána žádná novinka !</h1> <p><a href="index.php">pokračovat >></a></p>'; } ?> |
||
panther Profil |
#2 · Zasláno: 24. 6. 2010, 23:34:58
Truuhlik:
asi nejjednodušší by bylo místo submit na úpravu použít odkaz, kde by bylo jednoznačně určené ID. Zaškrtnu tedy 10 checkboxů, kliknu na odkaz Upravit u jednoho z nich (nebo u neoznačeného), tak budu editovat ten který prvek a checkboxy zůstanou zapomenuty. |
||
Časová prodleva: 14 let
|
0