| 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: 14 let
|
|||
0