Autor Zpráva
roman_an1
Profil
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>
nebo:
<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
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
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
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 *
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'
Chyb tam bude asi vic.
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
Snad tam mam mene chyb :)
Šéva
Profil
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
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
Šé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š?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0