2010-07-31 6 views
0

J'utilise un formulaire pour obtenir l'entrée du nom d'utilisateur et mot de passe pour stocker la valeur dans la base de données, une fois le formulaire soumis, j'ai défini une table pour afficher toutes les valeurs de la table des utilisateurs, nom, passe) Je veux supprimer chaque enregistrement par son identifiant.Comment supprimer les enregistrements de la table?

i am Récupération des données de la table des utilisateurs en utilisant le code suivant:

while($row = mysql_fetch_assoc($result_select)) { 
      echo "<tr>"; 
      echo "<td>" . $row['id'] . "</td>"; 
      echo "<td>" . $row['name'] . "</td>"; 
      echo "<td>" . $row['pass'] . "</td>"; 
      echo "</tr>"; } 

Je veux ajouter le lien hypertexte supprimer pour supprimer les enregistrements particuliers par id. J'ai essayé d'utiliser le code suivant et je ne pouvais pas le réaliser.

if(mysql_num_rows($result_select) > 0) { 

     if(isset($_POST['id'])) { 
      $query_delete = "DELETE FROM users WHERE id =" .$_POST['id']; 
      $result_delete = mysql_query($query_delete); 

     } 
     echo "<table cellpadding=10 border=1>"; 
     while($row = mysql_fetch_assoc($result_select)) { 

      echo "<tr>"; 
      echo "<td>" . $row['id'] . "</td>"; 
      echo "<td>" . $row['name'] . "</td>"; 
      echo "<td>" . $row['pass'] . "</td>"; 
      echo "<td><a href=".$_SERVER['PHP_SELF']."?id=".$row[id].">Delete</a></td>"; 
      echo "</tr>"; 
     } 
    echo "</table>"; 
    } 

Je suis un débutant à la programmation, je vous serais reconnaissant si quelqu'un me expliquer en termes simples .. merci :)

+1

Faites quelque chose contre l'injection SQL, sinon quelqu'un piratera votre base de données directement en enfer. Utilisez des guillemets dans votre morceau de SQL et mysql_real_escape_string() pour échapper aux hacks. –

Répondre

1

tout d'abord mettre votre code de suppression dans votre page comme ceci:

if(isset($_POST['submit'])) { 

     for($i = 0; $i < count($_POST['del']); $i++) 
     { 
      // check which records to delete 
      if (isset($_POST['del'][$i])) 
      { 
      $query_delete = "DELETE FROM users WHERE id = " . (int) $_POST['del'][$i]; 
      $result_delete = mysql_query($query_delete) or die(mysql_error()); 
      } 
     } 

     echo 'Record Deleted !!' . '<br /><br />'; 
    } 

plus tard mettre votre sélection code et modifiez-le comme ceci:

echo '<form action="" method="POST">'; 
while($row = mysql_fetch_assoc($result_select)) { 
     echo "<tr>"; 
     echo "<td>" . $row['id'] . "</td>"; 
     echo "<td>" . $row['name'] . "</td>"; 
     echo "<td>" . $row['pass'] . "</td>"; 
     echo "<td><input type=\"checkbox\" name=\"del[]\"></td>"; 
     echo "</tr>"; 
} 
echo '<input type="submit" name="submit">'; 
echo '</form>'; 
+0

merci, je cherchais cette information. –

+0

Salut sAc, merci de l'avoir signalé, c'était juste ma deuxième question sur le forum car je me suis joint avant deux jours et je n'étais pas au courant des règles et règlements. merci beaucoup encore une fois pour la réponse. –

+0

@Ibrahim Azhar Armar: Vous êtes les bienvenus :) – Sarfraz

0

Vous devez changer $_POST-$_GET, donc cela devrait fonctionner.

if(isset($_GET['id'])) { 
    $query_delete = "DELETE FROM users WHERE id =" .$_GET['id']; 
    $result_delete = mysql_query($query_delete); 

et aussi mettre des valeurs d'attributs à l'intérieur des guillemets doubles, comme celui-ci

echo '<td><a href="'.$_SERVER['PHP_SELF'].'?id='.$row[id].'">Delete</a></td>'; 
+1

Je ne recommande vraiment pas d'utiliser GET pour les opérations de suppression. L'utilisateur peut accidentellement accéder à l'URL et vous aurez des suppressions indésirables. Je crois aussi que W3C ne recomment pas GET pour modifier les actions (insertion/mise à jour/suppression). Utilisez-le uniquement pour afficher des données;) – Bogdan

+0

Et si vous devez vraiment, au moins faire un intval() sur l'argument. Il est préférable d'utiliser PDO pour les connexions à la base de données et de travailler avec la liaison. – Blizz

+0

quelle méthode utiliseriez-vous alors pour supprimer les enregistrements? n'est-il pas possible de supprimer les enregistrements avec $ _POST ?? –

Questions connexes