[PHP + bd mysql] Supprimer le champ de ma table

Supprimer le champ de ma table [PHP + bd mysql] - PHP - Programmation

Marsh Posté le 16-03-2005 à 15:14:14    

Bonjour,
 
en php je suis en train de gérer une base de données mysql qui est sur mon PC en localhost
 
J'ai réussi à insérer des champs, à la visualisée, à faire des recherches mais je n'arrive pas à faire un truc :
 
voila quand je fais visionner le carnet d'adresse
http://img191.exs.cx/img191/3488/003ki.png
(mon tableau se rempli automatiquement en lisant la base)
 
 
J'aimerais que quand je clique sur le radiobutton correspondant j'arrive à supprimer le champ correspondant dans la base
 
J'ai essayer un truc comme ça :

Code :
  1. <?
  2. include("common.php" );
  3. include("globals.php" );
  4. generateHTMLHeader();
  5. ?>
  6. <p align="center"><b>Voici le carnet d'adresse complet</b></p>
  7. <form method="post" action="visionner.php">
  8. <?
  9. //-------------------
  10. $link = connection();
  11. $req = "SELECT * FROM personne";
  12. $result = mysql_query($req,$link);
  13. ?>
  14. <table align="center" border="1">
  15. <tr>
  16. <td><b>Nom</b></td>
  17. <td><b>Prenom</b></td>
  18. <td><b>Adresse</b></td>
  19. <td><b>Tel</b></td>
  20. <td><b>Supprimer</b></td>
  21. <?
  22. $compteur=0;
  23. while($row = mysql_fetch_row($result))
  24. {
  25. $compteur++;
  26. $nom[$compteur] = $row[1];
  27. $prenom[$compteur] = $row[2];
  28. $adresse[$compteur] = $row[3];
  29. $tel[$compteur] = $row[4];
  30. ?>
  31. <tr>
  32. <td><? echo $nom[$compteur]; ?></td>
  33. <td><? echo $prenom[$compteur]; ?></td>
  34. <td><? echo $adresse[$compteur]; ?></td>
  35. <td><? echo $tel[$compteur]; ?></td>
  36. <td><input type="radio" name="Bsupprimer" onClick="sup(<? echo $nom[$compteur] ?> );">]</td>
  37. </tr>
  38. <?
  39. }
  40. ?>
  41. </table>
  42. <p align="center"><input type="submit" name="Bvalider" value="Validation"></p>
  43. </form>
  44. <?php
  45.   //si on clique sur supprimmer
  46.   function sup($nom){
  47. echo ("<br> [dans Sup] nom = $nom <br>" );
  48. $link = connection();
  49. $req = "DELETE (id_pers,nom_pers,prenom_pers,adr_pers,tel_pers) FROM personne WHERE nom_pers='$nom')";
  50. $result = mysql_query($req,$link);
  51. echo"Suppression effectuée";
  52.   }
  53.   //return to main
  54.   returnToMain();
  55. ?>


 
En fait je sais pas si le onCLick accepte un appel à une fonction php ?  :??:  
 
comment je peux faire sinon ?  
 
 
merci  :hello:

Reply

Marsh Posté le 16-03-2005 à 15:14:14   

Reply

Marsh Posté le 16-03-2005 à 15:39:35    

Euh non.
Javascript s'exécute sur le client, php sur le serveur.
Il te faut un <form>ulaire dont la cible se chargera de la suppression en PHP.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 16-03-2005 à 15:57:15    

skeye a écrit :

Euh non.
Javascript s'exécute sur le client, php sur le serveur.
Il te faut un <form>ulaire dont la cible se chargera de la suppression en PHP.


Donc sur mon radio supprimer il faut que je mette qu'il ouvre un formulaire "supprime.php" ?
 
mais comment après dans ce formulaire je vais savoir c'est qu'elle champ de la table que je dois supprimer ?  :??:

Reply

Marsh Posté le 16-03-2005 à 16:13:03    

Lis de la doc sur les formulaires html et comment les traiter en php...tu devrais vite comprendre.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 16-03-2005 à 16:37:12    

c'est ce que je fais mais je n'y arrive pas c'est pour ça que je poste ici ;)

Reply

Marsh Posté le 16-03-2005 à 16:39:45    

seb306bzh a écrit :

c'est ce que je fais mais je n'y arrive pas c'est pour ça que je poste ici ;)


alors vire le onclick de tes input type="radio", et met leur des attributs value.
Puis dans ton  visionner.php fais un  

Code :
  1. print_r($_POST);


 
Ca devrait t'éclairer...


Message édité par skeye le 16-03-2005 à 16:39:57

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 16-03-2005 à 16:59:46    

J'ai mis ça :
 

Code :
  1. <tr>
  2. <td><? echo $nom[$compteur]; ?></td>
  3. <td><? echo $prenom[$compteur]; ?></td>
  4. <td><? echo $adresse[$compteur]; ?></td>
  5. <td><? echo $tel[$compteur]; ?></td>
  6. <td><input type="radio" name="Bsupprimer" value="<? echo $nom ?>"></td>
  7. </tr>


pour que la valeur prenne le nom. C'est pas bon ?  :??:  
 
 
en tout cas j'obtient ça :
 
http://i149.exs.cx/img149/6593/003ul.png
 
Ok la variable de mon BoutonSupprimer est bien dans le tableau POST mais je sais pas c'est quel bouton et donc je sais pas c'est qu'elle champ de ma table qui devra etre supprimé :(

Reply

Marsh Posté le 16-03-2005 à 17:01:52    

seb306bzh a écrit :

J'ai mis ça :
 

Code :
  1. <tr>
  2. <td><? echo $nom[$compteur]; ?></td>
  3. <td><? echo $prenom[$compteur]; ?></td>
  4. <td><? echo $adresse[$compteur]; ?></td>
  5. <td><? echo $tel[$compteur]; ?></td>
  6. <td><input type="radio" name="Bsupprimer" value="<? echo $nom ?>"></td>
  7. </tr>


pour que la valeur prenne le nom. C'est pas bon ?  :??:  
 
 
en tout cas j'obtient ça :
 
http://i149.exs.cx/img149/6593/003ul.png
 
Ok la variable de mon BoutonSupprimer est bien dans le tableau POST mais je sais pas c'est quel bouton et donc je sais pas c'est qu'elle champ de ma table qui devra etre supprimé :(


 
 
...et si tu faisais

Code :
  1. <tr>
  2. <td><? echo $nom[$compteur]; ?></td>
  3. <td><? echo $prenom[$compteur]; ?></td>
  4. <td><? echo $adresse[$compteur]; ?></td>
  5. <td><? echo $tel[$compteur]; ?></td>
  6. <td><input type="radio" name="Bsupprimer<? echo $nom ?>" value="<? echo $nom ?>"></td>
  7. </tr>


 
par exemple? ;)


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 16-03-2005 à 17:12:05    

c'est tt de meme la base les formulaire :  
pour gérer ta suppression, tu mets en valeur de chaque controle Radio l'id de la personne, de plus ton $compteur est inutile et tu utilises des variables supplémentaires pour rien :(javascript est à bannir)

Code :
  1. #
  2. while($row = mysql_fetch_array($result)) {
  3. ?>
  4. <tr>
  5. <td><? echo $row['nom']; ?></td>
  6. <td><? echo $row['prenom']; ?></td>
  7. <td><? echo $row['adresse']; ?></td>
  8. <td><? echo $row['tel']; ?></td>
  9. <td><input type="radio" name="Bsupprimer" value="<?= $row['id']; ?>"></td>
  10. </tr>
  11. <?
  12. }


c'est beaucoup plus lisible !
remplace juste les libellé de chaque index de tableau par celui que t'as en bdd


Message édité par Profil supprimé le 16-03-2005 à 17:13:43
Reply

Marsh Posté le 16-03-2005 à 17:13:33    

ok ça marche :
 
http://img54.exs.cx/img54/9059/005fj.png
 
 
et dernière chose (et ça devrait marcher)
 
comment je récupère la value de mon bouton supprimer pour mettreà la place des XXXX :

Code :
  1. //----------supression------------
  2. if(isset($HTTP_POST_VARS["Bsupprimer"])) {
  3. $link = connection();
  4. $req = "DELETE (id_pers,nom_pers,prenom_pers,adr_pers,tel_pers) FROM personne WHERE nom_pers='XXXXXX')";
  5. $result = mysql_query($req,$link);
  6. }

Reply

Marsh Posté le 16-03-2005 à 17:13:33   

Reply

Marsh Posté le 16-03-2005 à 17:14:07    

oula non, fait comme je t'ai dis, par ID !!! ta table doit avoir l'id de la personne en clé primaire, c'est pas pour rien en faire
 
de plus DELETE n'a pas besoin de champ à spécifier :
DELETE FROM table where toto=123
 
te faut donc apprendre l'HTML et le SQL(voire approfondir le PHP)


Message édité par Profil supprimé le 16-03-2005 à 17:15:39
Reply

Marsh Posté le 16-03-2005 à 17:15:33    

seb306bzh a écrit :

ok ça marche :
 
http://img54.exs.cx/img54/9059/005fj.png
 
 
et dernière chose (et ça devrait marcher)
 
comment je récupère la value de mon bouton supprimer pour mettreà la place des XXXX :

Code :
  1. //----------supression------------
  2. if(isset($HTTP_POST_VARS["Bsupprimer"])) {
  3. $link = connection();
  4. $req = "DELETE (id_pers,nom_pers,prenom_pers,adr_pers,tel_pers) FROM personne WHERE nom_pers='XXXXXX')";
  5. $result = mysql_query($req,$link);
  6. }



 
 
On n'utilise pas $HTTP_POST_VARS mais $_POST.
Et donc, $_POST['Bsupprimer']


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 16-03-2005 à 17:16:47    

j'en rajoute, suite à mon poste précédent :  
il ne faut de plus pas utiliser un nom comme argument de suppression d'enregistrement : plusieurs personnes peuvent s'appeler DUPONT


Message édité par Profil supprimé le 16-03-2005 à 17:17:05
Reply

Marsh Posté le 16-03-2005 à 17:17:23    


sauf s'il a spécifié dans la base que le nom était unique...mais ce serait ballot![:ddr555]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 16-03-2005 à 17:19:15    

skeye a écrit :

sauf s'il a spécifié dans la base que le nom était unique...mais ce serait ballot![:ddr555]


auquel cas faut qu'il apprenne Merise/UML :)

Reply

Marsh Posté le 16-03-2005 à 17:23:17    


supprimer un champ != supprimer un enregistrement :D

Reply

Marsh Posté le 16-03-2005 à 17:24:48    


ok je suis passer pas l'id  
 
http://img91.exs.cx/img91/9558/004zx.png
 
 
mais ça change rien à mon problème pour la requete de suppression
 
DELETE FROM pesonne where id=????  
 
comment je récupère mon 4 pas exemple ?  :??:

Reply

Marsh Posté le 16-03-2005 à 17:25:44    

seb306bzh a écrit :

ok je suis passer pas l'id  
 
http://img91.exs.cx/img91/9558/004zx.png
 
 
mais ça change rien à mon problème pour la requete de suppression
 
DELETE FROM pesonne where id=????  
 
comment je récupère mon 4 pas exemple ?  :??:


 

skeye a écrit :

On n'utilise pas $HTTP_POST_VARS mais $_POST.
Et donc, $_POST['Bsupprimer']


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 16-03-2005 à 17:28:23    

comme ça ??
 
//----------supression------------
if(isset($_POST['Bsupprimer'])) {
 $link = connection();
 $req = "DELETE FROM personne WHERE id_pers='Bsupprimer')";
 $result = mysql_query($req,$link);
}


Message édité par seb306bzh le 16-03-2005 à 17:32:56
Reply

Marsh Posté le 16-03-2005 à 17:31:13    

seb306bzh a écrit :

comme ça ??
 
//----------supression------------
if(isset($_POST['Bsupprimer'])) {
 $link = connection();
 $req = "DELETE (id_pers,nom_pers,prenom_pers,adr_pers,tel_pers) FROM personne WHERE nom_pers='Bsupprimer')";
 $result = mysql_query($req,$link);
}


 
en gros :

Code :
  1. $id_suppr = isset($_POST['Bsupprimer']) ? intval($_POST['Bsupprimer']) : 0;
  2. if($id_suppr) {
  3. $req = 'DELETE FROM personne WHERE id_pers='.$id_suppr;
  4. mysql_query($req);
  5. }


ca c'est sans faille possible


Message édité par Profil supprimé le 16-03-2005 à 17:34:23
Reply

Marsh Posté le 16-03-2005 à 17:41:32    


effectivement ça fonctionne  :bounce:  
 
merci http://director.media-box.net/images/smiles/gourou.gif

Reply

Marsh Posté le 16-03-2005 à 17:51:43    

Par contre je suis obligé de rafraichir la page pour voir que la ligne a belle et bien été supprimée :(
 
y a un truc php pour rafraichir la page (ou le que le formulaire) ??


Message édité par seb306bzh le 16-03-2005 à 17:52:07
Reply

Marsh Posté le 16-03-2005 à 17:52:43    

seb306bzh a écrit :

Par contre je suis obligé de rafraichir la page pour voir que la ligne a belle et bien été supprimée :(


:heink:
Fais la suppression avant l'affichage, et ça le fera plus! [:dawa]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed