Submit qui supprime des messages dans ma bdd

Codeur61

Codeur61 Le 21 janvier 2017 à 13:47 (Édité le 25 janvier 2019 à 17:53)

Salut ! 
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

TheOldNoob Le 21 janvier 2017 à 15:06

Salut l'ami,
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

Codeur61 Le 21 janvier 2017 à 15:15 (Édité le 21 janvier 2017 à 15:16)

Salut à toi 😉 
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

TheOldNoob Le 22 janvier 2017 à 11:08

Deux possibilité s'offre a toi, demander a google ou regarder les vidéos de PrimFx 😀

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

Codeur61 Le 22 janvier 2017 à 12:28

Oui mais avec Google je ne comprend pas ???? j ai cherché sur le site du zéro mais j ai pas trouvé et je sais pas comment on peut faire pour définir une condition permettant de delete un certains nbr de messages d'un certains ID . Voilà pourquoi je poste ici ????. Merci
TheOldNoob

TheOldNoob Le 22 janvier 2017 à 12:47

ok donc :

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

Codeur61 Le 22 janvier 2017 à 21:56

Je sais que c est openclassroom évidemment mais je l appelle encore par son ancien nom car il est connus par plus de gens . Ce qu je veux dire c est que faire une requête ce n' est pas un problème mais c est pour relier ma requête au submit et lui enlever les messages que je ne comprend pas comment faire 😉
Codeur61

Codeur61 Le 22 janvier 2017 à 22:14

Ahhhh , je crois que j ai compris un truc comme sa :  DELETE FROM jeux_video WHERE nom='Battlefield 1942'. ??
TheFlameflo

TheFlameflo Le 23 janvier 2017 à 00:13

Salut !

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

Codeur61 Le 23 janvier 2017 à 20:52

Salut 😉
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

TheOldNoob Le 23 janvier 2017 à 22:50

Pour relier avec ton bouton, tu peu faire un formulaire, dans lequel tu met un input qui aura un type="hidde" (ou hidden, la de suite j'ai un doute) 
Codeur61

Codeur61 Le 23 janvier 2017 à 23:10

Merci mais du coup c'est bon?
Codeur61

Codeur61 Le 24 janvier 2017 à 18:42

J'ai fais un essai avec un submit hidden (j'ai regarder si c'était idde ou hidden)
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
Codeur61

Codeur61 Le 25 janvier 2017 à 20:05

UP PLEASE :'(
TheFlameflo

TheFlameflo Le 25 janvier 2017 à 22:26

Salut !

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

Codeur61 Le 27 janvier 2017 à 16:34

Salut et merci, 
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 !;)
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte