Submit qui supprime des messages dans ma bdd
- Accueil
- Forum
- Programmation
- PHP
- Submit qui supprime des messages dans ma bdd
Codeur61 Le 21 janvier 2017 à 13:47 (Édité le 25 janvier 2019 à 17:53)
Je voudrais savoir comment faire pour que le submit de mon formulaire de contact supprime un certains nombre de message je m'explique (c'est compliqué) :
Je veux que quand mon membre clique sur un certain bouton "submit" soit non seulement redirigé vers son profil.php et que suivant son id, sur phpmyadmin on lui supprime un certain nombre de message. exemple si c'est l'id 6 on supprime 1700 messages .... (vous allez me prendre pour un fou avec 1700 messages).... en faite je prend le nombre de message pour le nombre de point si vous préférez.
En espérant avoir était clair dans se que j'ai dis.
Merci d'avance pour votre aide 😉.
TheOldNoob Le 21 janvier 2017 à 15:06 (Édité le 1 janvier 1970 à 01:00)
Tu peu rajouter une condition quelque part dans ton code, qui après traitement de ton formulaire et si celui ci a rempli toute les condition, en plus d'envoyer les infos dans ta bdd, grace a une requête prepare, va DELETE le nombre de points que tu aura décidé.
Codeur61 Le 21 janvier 2017 à 15:15 (Édité le 21 janvier 2017 à 15:16)
Merci mais ma requête je la fais comment ? parce que je t'avoue que les requêtes je sais pas trop comment on fait ....
TheOldNoob Le 22 janvier 2017 à 11:08 (Édité le 1 janvier 1970 à 01:00)
Non, très sérieusement, je peu te codé ta requête parce que c'est pas difficile et très accessible, mais si je fait ça, tu n'apprendra pas.
Quand tu est bloquer, la première chose a faire, c'est de demander a google. Idéalement, il faut voir les sources en anglais qui sont plus nombreuse, ensuite seulement on fait une demande sur les forums.
Voilà, c'est le meilleurs moyens de progressé a mon avis 😀
Codeur61 Le 22 janvier 2017 à 12:28 (Édité le 1 janvier 1970 à 01:00)
TheOldNoob Le 22 janvier 2017 à 12:47 (Édité le 1 janvier 1970 à 01:00)
http://www.laissemoichercherca.com/?q=requ%C3%AAte%20pr%C3%A9parer%20delete
ça va te donné des liens, le premier a la réponse, le second aussi, ainsi que le 3 eme... Et le 4 eme lien, c'est la doc officiel
Ensuite, ce qui me fait dire que tu n'a pas chercher, c'est le fait que tu parle du site du zéro, qui n'existe plus... C'est devenu oppenclassroom. Mais du coup, dans les résultats de recherche, le 1 er lien c'est openclassroom ainsi que le 3eme. Dans lesquels, je te garanti tu a les réponses 😀
Codeur61 Le 22 janvier 2017 à 21:56 (Édité le 1 janvier 1970 à 01:00)
Codeur61 Le 22 janvier 2017 à 22:14 (Édité le 1 janvier 1970 à 01:00)
TheFlameflo Le 23 janvier 2017 à 00:13 (Édité le 1 janvier 1970 à 01:00)
C'est bien ce qu'il faut faire.
Maintenant, tu dois pouvoir supprimer le nombre de messages voulu.
Je te conseille soit de supprimer la dernière entrée à chaque fois dans une boucle en PHP ou le faire directement par une requête qui sélectionne tous les X derniers messages et les supprime.
Dans les deux cas, tout ce que tu as besoin de savoir se trouve sur OpenClassroooms (renseignes toi sur "LIMIT" et "ORDER BY", ça devrait t'aider).
Si tu ne trouves toujours pas, voilà ce que j'ai trouvé avec Google :
la requête
J'espère t'avoir aidé ! 😀
Codeur61 Le 23 janvier 2017 à 20:52 (Édité le 1 janvier 1970 à 01:00)
D'abord merci à toi d'avoir répondu mais j'ai pas trop compris ... en faite j'arrive pas à faire ma requête (fin si mais pas la liaison avec mon submit) J'ai fais un truc mais je sais pas si c'est bon ...
$reqMsgSend->execute([$userinfo['id']]);
// je récup l'id
$totalMsgSend = $reqMsgSend->rowCount();
$reqMsgRecus = $bdd->prepare('DELETE FROM 3000 messages WHERE id_expediteur = ?');
//je suppr 3000 messages de l'id et le tour est joué
$reqMsgRecus->execute([$userinfo['id']]);
$totalMsgRecus = $reqMsgRecus->rowCount();
C'est bon ? si oui, comment le faire exécuter par mon bouton.
Merci d'avance ! 😉
TheOldNoob Le 23 janvier 2017 à 22:50 (Édité le 1 janvier 1970 à 01:00)
Codeur61 Le 24 janvier 2017 à 18:42 (Édité le 1 janvier 1970 à 01:00)
J'ai fais le test sauf que j'ai des erreurs !.?
CODE :
<?php
session_start();
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre' , 'root', '');
$reqMsgSend->execute([$userinfo['id']]);
// je récup l'id
$totalMsgSend = $reqMsgSend->rowCount();
$reqMsgSend = $bdd->prepare('DELETE FROM 3000 messages WHERE id_expediteur = ?');
//je suppr 3000 messages de l'id et le tour est joué
$reqMsgSend->execute([$userinfo['id']]);
$totalMsgSend = $reqMsgSend->rowCount();
?>
<!DOCTYPE html>
<html>
<head>
<title>TEST</title>
</head>
<body>
<form method="post" action="#" >
<input type="hidden" name="user_id" value= <?php echo $reqMsgSend; ?> >
<input type="submit" name="Submit" value="Envoyer">
</form>
</body>
</html>
ERREUR(S) : (GRRRR)
https://www.noelshack.com/2017-04-1485279727-capture.jpg
TheFlameflo Le 25 janvier 2017 à 22:26 (Édité le 1 janvier 1970 à 01:00)
Si tu lis bien l'erreur, la variable n'a pas été définie...
En effet, tu l'utilises à la ligne 4, mais tu ne l'as pas définie avant.
De plus, tu exécutes dans le vide, tu n'as pas préparé ta requête...
Sinon, pour $totalMsgSend (ligne 6) , la requête n'a pas été effectuée, donc une erreur là aussi.
Pour ce qui est du "DELETE FROM", je ne connaissais pas la technique de mettre un chiffre juste après le FROM.
Peut-être que c'est juste moi qui est mal informé, mais c'est une erreur...
Pour supprimer plusieurs lignes, voici comment faire :
Tu dois utiliser la requête DELETE FROM mais avec un petit quelque chose en plus, "TOP(nombre)"
DELETE TOP(3000) FROM messages
WHERE id_expediteur = ?
Tu peux alors supprimer plusieurs messages.
Pour ce qui est de la 10ème ligne, pourquoi un rowCount ?
Essaye de régler ça et donne nous des nouvelles ! 😀
Codeur61 Le 27 janvier 2017 à 16:34 (Édité le 1 janvier 1970 à 01:00)
Mais je suis désolés mais ce Topic en dépasse mes connaissances je souhaite, pour l'instant en attendant de m'améliorer fraîchement en php, abandonner ce Topic, et surement le relancé un jour. Merci pour votre aide. Je laisse ce Topic tel qu'il est car je pourrais très bien re poster dessus.
Bonne fin de journée !;)