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 *
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
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
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
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
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
já to chápu, je to logické, že neví o jaké hodnoty se jedná, proto vás tu prosím o pomoc :)
Alphard_
Profil *
<input type='checkbox'  name='smaz_dochazka[]' value='id' />
Sem se musí dosadit id, pro každý řádek to správné. Já nevím, co přesně chcete mazat, zřejmě
echo "<td><input type='checkbox'  name='smaz_dochazka[]' value='$sloupce[ID_uzivatel]' /></td>";

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: