Bouton supprimer - PHP - Programmation
Marsh Posté le 31-10-2018 à 19:12:49
Bonjour,
Merci de préciser la question, tu veux supprimer une ligne de quoi ? Une ligne de ta base de données, une ligne du tableau HTML, les deux, ou même autre chose ?
Marsh Posté le 31-10-2018 à 21:51:41
Bonsoir,
tout d'abord merci pour votre réponse, et excusez moi je me suis mal exprimé.
je souhaiterais supprimer ma ligne sur le tableau HTML à l'aide d'un bouton et que cela supprime aussi dans la base de données.
Si je me suis encore un peu mal exprimé, n’hésitez pas à me demander, ou même m'envoyer un mp,
Encore merci pour votre réponse
Marsh Posté le 31-10-2018 à 23:09:20
La page HTML générée par ton script PHP actuel doit proposer d'effectuer une requête de type POST ou GET vers ton serveur (en générale on retient le type POST pour la modification de la base de données). C'est cette requête qui indiquera à ton serveur de supprimer une ligne dans ta bdd.
En HTML pur il faut utiliser les formulaires mais cela implique de charger à nouveau la page après la requête.
Actuellement on utilise une solution avec le Javascript afin d'effacer la ligne du tableau HTML et d'envoyer la requête, le tout sans recharger la page.
Selon ton niveau de connaissance il te faut donc commencer par choisir une des deux solutions. L'apprentissage de Javascript est souvent source de confusion au début, il permet en effet d'obtenir un côté dynamique tout comme PHP. La différence étant que le Javascript va être exécuté du côté client alors que le PHP est lui exécuté côté serveur. De plus le Javascript peut être exécuté de manière asynchrone. Tout cela doit bien être maitrisé sinon tu ne vas tenter de faire des choses qui n'ont pas de sens et qui ne peuvent fonctionner.
Marsh Posté le 31-10-2018 à 23:23:57
Re bonsoir
Merci encore d'avoir pris le temps de répondre
Malheureusement dans notre consigne d'exercice on doit utiliser que php Natif et pas de javascript ni de Jquery possible
Je viens de tomber sur un topic avec le même soucis sur OCR mais je n'arrive pas à l'adapter à mon code
voici le lien en question => https://openclassrooms.com/forum/su [...] delete-pdo
et la partie qui m’intéresse provient de la réponse de
" MarcDonnad 13 août 2015 à 15:50:55 "
Merci pour votre réponse encore une fois.
Marsh Posté le 31-10-2018 à 23:48:40
Ah oui je suis bête, la requête GET n'a pas forcément besoin d'utiliser un formulaire. Mais perso je partirai quand même sur un formulaire HTML car c'est plus facile à sécuriser. Pour le GET il faudrait à minima générer un token sinon n'importe qui pourrait vider ta base de données.
Avec un formulaire il faut d'abord modifier ta page HTML générée pour qu'elle introduise le formulaire (form). Tu places ton tableau dans le formulaire, tu ajoutes une colonne (td) dans laquelle tu places une checkbox (input type="checkbox" ) à chaque ligne avec pour nom (name="nom_variable" ) le nom qu'aura ta variable PHP qui sera de type array ($_POST['nom_variable']) et en valeur le numéro de la ligne dans ta base de données (value="id" ).
Puis en-dessous du tableau tu crées un bouton d'envoi (input type="submit" ) qui va permettre de lancer la requête. La requête sera lancée vers le lien précisé dans la balise de formulaire (form action="lien_du_script.php" method="post" ).
Ton script PHP analysera alors la variable $_POST['nom_variable'] pour déterminer quelles cases ont été cochées.
Il te suffira alors d'effectuer une requête SQL pour chaque case qui supprimera la ligne associée.
Je te laisse, dans un premier temps, googler "formulaire checkbox php" ou quelque chose dans le genre ainsi que les termes que j'ai utilisé pour te mettre un peu au point si tu ne captes pas. Normalement le sujet est bien renseigné, faut juste décomposer ton problème (c'est ce que j'ai tenté de faire). Mais évidemment je répondrai à tes questions si tu as besoin.
EDIT : oui normalement quand on crée une base de données, on assigne un numéro unique à chaque ligne (qu'on appelle généralement "id" ), numéro qu'on incrémente à chaque ajout de ligne, cela permet de manipuler plus facilement ta base de données comme tu pourras le constater avec ton problème.
Marsh Posté le 01-11-2018 à 12:34:45
Bonjour
Alors j'ai essayé de faire comme vous avez dit ( sans les checkbox par contre :s ) même si j'avoue que je n'ai pas tout compris j'ai essayé de faire au mieux mais maintenant mon tableau html ne s'affiche plus, sûrement une erreur de syntaxe dans mon form avec les simples ou doubles guillemet ( à mon avis ) je m'y perd un peu et aussi peut être le echo avec le $donnees je sais pas si je doit le concaténer ou pas
alors pour mon HTML/php j'ai fait comme ça
Code :
|
Avec le formulaire method POST
et dans ma requete enfin mon fichier delete.php
Code :
|
La question que je me pose là aussi dans ce fichier je pense que je doit mettre le try avec la connexion ?
Enfin voilà je suis un peu perdu avec toutes ces infos et j'ai un peu de mal à comprendre j'avoue que je bloque pas mal malgré votre aide
Encore merci d'avoir pris le temps de répondre
Marsh Posté le 01-11-2018 à 13:15:48
1somniak a écrit :
|
Aie! Tu devrais te renseigner sur les injections SQL et sécuriser ce code. D'ailleurs la même chose est valable pour le serveur bien sûr, avec cette récente loi européenne (dont j'ai encore oublié le nom ) vous risquez une grosse amende si il y a une fuite!
Marsh Posté le 01-11-2018 à 13:20:58
Après c'est dans le cade d'une formation et il ne restera que en localhost même si c'est vrai il faut prendre les bonnes pratiques le plus rapidement possible
Marsh Posté le 01-11-2018 à 13:32:30
1somniak a écrit : Après c'est dans le cade d'une formation et il ne restera que en localhost même si c'est vrai il faut prendre les bonnes pratiques |
Marsh Posté le 01-11-2018 à 13:42:18
Pour la partie HTML/PHP il y a en effet de petites erreurs, voici le code corrigé :
Code :
|
Pour le premier input, tu veux utiliser ta variable php, alors pourquoi ne fais-tu pas comme pour les précédentes ? Car là tu avais remis des balises php qui étaient déjà présentes dans ton code et tu refais un "echo" alors que tu es déjà dans une commande "echo" donc ça n'a pas de sens*. Tu refermes ensuite ta balise php inutile et par conséquent tu oublie de fermer ton input HTML.
Le input suivant, tu oublies aussi de le refermer.
Pour ce qui est des injections SQL, la classe PDO implémente les requêtes préparées qui permettent facilement de se protéger de cette "faille".
La solution des checkbox permet de supprimer plusieurs lignes en une seule fois. Tu ajoutes une case à cocher à chaque ligne du tableau qui se trouve alors à l'intérieur d'un formulaire. Quand tu envoies le formulaire, la variable va contenir un tableau (array) avec toutes les lignes à supprimer. Côté PHP il suffit alors de parcourir le tableau pour supprimer chaque ligne.
EDIT : (*) grosso modo tu fais :
Code :
|
Tu imbriques dans tes balises php et ta commande echo des balises php et une commande echo.
Marsh Posté le 01-11-2018 à 13:54:26
Sinon, autre point au niveau de tes fichiers.
Pour faire ce que tu veux faire, tu n'as besoin que d'un fichier php. Ce fichier doit prendre en compte deux cas :
- le premier cas, qui est celui où on charge le contenu de la bdd pour l'afficher, on y ajoute dans le HTML le contenu nécessaire pour supprimer les lignes, le formulaire doit envoyer la requête POST vers ce même fichier.
- le second cas, qui est celui où une requête est envoyée, et donc une variable $_POST est définie, à ce moment là on lit dans un premier temps le contenu de la variable pour supprimer la ou les lignes de la base de données. Ensuite on charge le contenu de la base de données pour retomber dans le premier cas.
Marsh Posté le 03-11-2018 à 15:28:28
Bonjour
Désolé du temps de réponse, j'ai enfin réussi j'ai galéré pendant un lonnnnng moment en ayant fait le bon code mais erreur d’inattention sur mon premier input javais le premier "name" ou il manque un "=" .
je met mon code si jamais ça peut service à quelqu'un
1er fichier
( ou il faudra ajouter un require("nomDuDeuxiemeFichier" );
Code :
|
Deuxiemes fichier ( delete.php )
Code :
|
En tout cas merci beaucoup MaybeEijOrNot pour votre aide et votre patience
Marsh Posté le 03-11-2018 à 17:03:01
1somniak a écrit : mais erreur d’inattention sur mon premier input javais le premier "name" ou il manque un "=" . |
Ah oui en effet, j'avais oublié une erreur. :s
Sinon, comme je te le disais, tu peux essayer de tout mettre dans un seul fichier, ce n'est pas très compliqué.
Marsh Posté le 31-10-2018 à 18:49:39
Bonjour,
Je fait appel à vous car je suis débutant dans le code et je cherche à supprimer une ligne grâce à un bouton supprimer
Voici mon code
je n'arrive pas à voir comment récupérer l'id de la ligne que je veux supprimer et donc par la suite la supprimer.
Si quelqu'un à des idées, j'ai regarder un peu des cas similaire déjà sur internet mais j'arrive pas à l'adapté.
sur le lien là => https://forum.hardware.fr/hfr/Progr [...] 2620_1.htm
Voici un poste qui me semble bien mais je comprend pas trop quand il met en commentaire
" //Tu rajoutes un lien vers le script delete.php avec en parametre l'ID du contact "
Merci d'avance pour vos réponses et pour votre aide