Autor | Zpráva | ||
---|---|---|---|
roman_an1 Profil |
#1 · Zasláno: 19. 4. 2012, 14:36:04
zdravim, mám takový dotaz..potřebuju vypsat data z tabulky a vedle toho aby bylo tlacitko na smazani..a aby případný řádek smazalo..vypsané data z tabulky mám akorát potřebuju aby vždy vedle toho bylo tlačítko pro smazání nebo editaci a tak..nevíte někdo jak to udělat..páč ja vůbec netuším..díky
|
||
Joker Profil |
roman_an1:
Tlačítko pro smazání bude odkaz nebo (možná lépe) formulářové tlačítko. Čili ke každému řádku se přidá něco na způsob: <a href="smazat.php?id=$id_zaznamu">smazat</a> <form action="smazat.php"><input type="hidden" name="id" value="$id_zaznamu"><input type="submit" value="smazat"></form> Dodatek: A samozřejmě do smazat.php patří kód, který zajistí samotné smazání položky |
||
roman_an1 Profil |
#3 · Zasláno: 19. 4. 2012, 15:05:26 · Upravil/a: roman_an1
Joker:
a ten dotaz by mohl vypadat asi nějak takto ne? $sql= mysql_query("DELETE FROM vyrobky WHERE id = '$login'"); ja to mám řešené na přihlašivání totiž :) Joker: a tak to jsem si myslel ze budu vědět víc a že už si to k tomu tlačítku doplním..neporadí někdo jak by měl zhruba vypadat smazat.php? jsem v koncích..diky |
||
Again Profil |
smazat.php by měl vypadat jednoduše - stačí:
1) otestovat, jestli bylo stisknuté tlačítko "smazat" 2) provést dotaz pro smazání - ano něco na způsob - $sql= mysql_query("DELETE FROM vyrobky WHERE id = '$login'"); 3) otestovat, zda byl záznam skutečně smazán 4) popř. přesměrovat uživatele na původní stránku Je to v podstatě klasický formulář, akorát pouze s jedním tlačítkem ... |
||
roman_an1 Profil |
Again:
jo vytvořil jsem něco takového..ale nejede mi to if(isset($_POST['submit'])) { $sql= mysql_query("DELETE FROM vyrobky WHERE id2 = '$login'") ; } <form action="databaze.php" method="post"> <input type="hidden" name="id" value="$id2"><input type="submit" value="smazat"> </form> |
||
Again Profil |
Chyba je v kontrolování odeslaného formuláře, v proměnné POST nesmí být "submit", to je jenom typ ...
<?php if (!empty($_POST['id'])) { // další kód } ?> Další chyba je při předávání ID, proměnnou je třeba vypsat pomocí php ... <form action="databaze.php" method="post"> <input type="hidden" name="id" value="<?php echo $id2; ?>"><input type="submit" value="smazat"> </form> |
||
roman_an1 Profil |
Again:
tak už mi to alespoň něco maže, ale jenom když tam zadám přesně natvrdo číslo řádku jinak ne..co tam musím zadat aby to vzalo ten konkretni řádek a já to nemusel mazat přes to že si nastavím číslo řádku $sql= mysql_query("DELETE FROM vyrobky WHERE id2 = 10") ; |
||
Again Profil |
#8 · Zasláno: 19. 4. 2012, 18:35:10
Přečti si něco o zpracování formulářů, u klauzule WHERE musíš mít proměnnou, kterou odesíláš formulářem, tedy ne $login nebo něco podobného ...
|
||
roman_an1 Profil |
#9 · Zasláno: 19. 4. 2012, 18:55:40 · Upravil/a: roman_an1
Again:
nj to jako chápu..jenomže ono mi to prostě smaže i to co nechci..jelikož ono se mi to smaže uplně všechny řádky..ty to mam vytištěné na obrazovce roman_an1: a co tam mám teda dát..dle mého názoru by to mělo být $sql= mysql_query("DELETE FROM vyrobky WHERE id2 = $id2") ; pac ten název mám pod tím tlačítkem..ale ono to smaže celou tabulku |
||
Šéva Profil * |
#10 · Zasláno: 20. 4. 2012, 07:25:09 · Upravil/a: Šéva
Ahoj,
udělej to takhle nějak: if(IsSet($_POST['smazat'])) { $radek=$_POST['radek']; mysql_query("delete from tabulka where id='$radek'"); echo "Záznam byl úspěšně smazán"; } <form action="" method="post"> $dotaz=mysql_query("select id from tabulka); while($vysledek=mysql_fetch_array($dotaz)) { <inpu type="hidden" name="radek" value="<?php echo $vysledek["radek"]; ?>"> <input type="submit" name="smazat" value="Smazat"> } </form> ten formular si uprav tak nějak podle sebe,jak budeš potřebovat... OPRAVA <?php (IsSet($_POST['smazat'])) { $radek=$_POST['radek']; mysql_query("delete from tabulka where id='$radek'"); echo "Záznam byl úspěšně smazán"; } echo "<form action='' method='post'>"; $dotaz=mysql_query("select id from tabulka); while($vysledek=mysql_fetch_array($dotaz)) { echo " <inpu type='hidden' name='radek' value='<?php echo $vysledek['id']; ?>'> <input type='submit' name='smazat' value='Smazat'> "; } echo "</form>"; ?> ještě mi tam chybí if před (IsSet...) |
||
peta Profil |
Šéva:
<inpu type='hidden' name='radek'... <input type='submit' Tady ti chybi jeste t. Za dotazem nemas apostrof ". Vsechny inputy pojmenovavas name=radek, takze se bud veme prvni nebo posledni id. Echo zacnes dvojitym apostrofem, ale pak mas uvnitr dalsi <?php echo. Nemas tam zacatek formu. Ja teda mazani resim zaskrtnutim checkboxu, protoze nekdy je treba mazat po stovkach a to bych se uklikal //mazani if(IsSet($_POST['radku'])) { $r = $_POST['radku']*1; $r = $r>0 && $r<100 ? $r : 0; $idcka = array(); for ($i=0;$i<$r;$i++) { if(IsSet($_POST['radek'.$i])) { $idcka[] = $_POST['radek'.$i]*1; } } mysql_query("DELETE FROM tabulka WHERE id IN (".implode(",",$idcka).")"); echo "Záznamy byly úspěšně smazány"; } // vypis $radky = ""; $query = "select id from tabulka"; $result = mysql_query($dotaz); $i = 0; while($vysledek=mysql_fetch_array($dotaz)) { $radky .= "<br><label><input type='checkbox' name='radek".$i."' value='" . $vysledek['id'] . "'>".$vysledek['name']."</label>"; $i++; } $radky .= "<input type='hidden' name='radku' value='".$i."'>"; ?> text <?php echo $radky; ?> text |
||
Šéva Profil |
#12 · Zasláno: 20. 4. 2012, 12:07:47
peta:
1.,2.,4. ty překlepy jsem opravil 3. nejde o to,jak se ta proměnná jmenuje,ale jakou hodnotu nese... takhle mi to funguje už na několika webech o jméno jde v případě, že by chtěl mazat více řádků najednou... 5. začátek formu tam je,je nad dotazem if(IsSet($_POST['smazat'])) { $radek=$_POST['radek']; mysql_query("delete from tabulka where id='$radek'"); echo "Záznam byl úspěšně smazán"; } echo "<form action='' method='post'>"; $dotaz=mysql_query("select id from tabulka"); while($vysledek=mysql_fetch_array($dotaz)) { echo " <input type='hidden' name='radek' value='$vysledek['id']'> <input type='submit' name='smazat' value='Smazat'> "; } |
||
peta Profil |
#13 · Zasláno: 20. 4. 2012, 12:18:59
Mno, ja bych na to nesazel. Ten form by mel byt kolem tech inputu a ne na celek. Pokud nazves 10x name='radek', tak nektere prohlizece fakt berou prvni hodnotu nebo posledni. Jestli ti to veme jen hodnotu u prislusneho submitu, na to bych nespolehal. jo, kdybys dal kazde name jinak, pak jo.
Jo, tez jsem oppravil chybku, mel jsem idcka a idecka :) |
||
Šéva Profil |
peta:
máš pravdu, ten form by měl být v tom echu v tom cyklu, teď jsem se ještě koukal do scriptu, kde to mám tak dělané... co se týče problemu s "radek" tak jsem se s tim problémem co popisuješ ještě nesetkal... |
||
Tori Profil |
peta:
Je docela velký rozdíl mezi $ciselnyRetezec * 1 a intval($ciselnyRetezec) . ID bývá obvykle celé, nikoli desetiné číslo, takže bych radila ošetřovat vstup spíš přetypováním na celé číslo.
$r = $r>0 && $r<100 ? $r : 0; - magická čísla? Co když třeba roman_an1 nechce generovat zaškrtávátka po stovkách?
Šéva: Chybný zápis pole na ř.12 ve [#12] (parse error). edit: A chybí ošetření vstupu na ř.3. |
||
peta Profil |
#16 · Zasláno: 20. 4. 2012, 13:32:55
Šéva: To se prave stane, kdyz ten form mas globalne pro vsechny tak, jak jsi to napsal. Proto mi to prislo divne, ze ti to jede :)
Tori: Jedna se o omezeni pro cyklus na 99. $r = $_POST['radku']*1 stale lepsi nez $radek=$_POST['radek'] :) |
||
Tori Profil |
peta:
Je to lepší, ale pro některé řetězce to vrací jiné výsledky. (Porovnejte si třeba výsledky pro "1e3", "0xf", "5.2".) |
||
Šéva Profil |
Tori:
řadek 12 tam nemají být ty ' u toho id řadek 3 jak ošetřit vstup,když předávanou hodnotu ani nevidiš? |
||
Časová prodleva: 12 let
|
0