Fonction Php déclenchée par un bouton

romain7110

romain7110 Le 8 juin 2016 à 19:50 (Édité le 25 janvier 2019 à 17:51)

Bonsoir à tous !
Je me tourne aujourd'hui une nouvelle fois vers vous pour que vous m'aidiez avec votre savoir :)

Mon problème est le suivant :
- Je liste une table de ma BDD qui représente un listing d'équipes dans un joli tableau.
- A la fin de chaque ligne du tableau, je génère un bouton qui permet d'intégrer l'équipe.

Ma question est :
Est-il possible en PHP de créer une fonction appelée via un bouton et qui accepte un paramètre ? (l'ID de l'équipe en question qui serait généré en même temps que la ligne du tableau).
Etant donné que le nombre d'équipe n'est jamais constant, c'est la solution qui me paraissait la plus simple.
Quelque chose comme les onclick="rejoindre()" en Javascript mais version PHP vu que je dois bidouiller dans la BDD
Désolé si la question parait vraiment bête mais je ne suis pas une flèche en PHP. 
dqfjsqhgfdqhvsq

dqfjsqhgfdqhvsq Le 8 juin 2016 à 22:32

Euh... J'ai pas tout compris à ce que tu voulais faire là ^^
Ranarxhag

Ranarxhag Le 8 juin 2016 à 23:41

Hey ! Si j'ai bien compris ce que tu veux faire ce n'est pas compliqué. 😀

Au lieu de créer des boutons, tu crées des liens que tu stylise un peu pour qu'ils aient la gueule d'un bouton.

Ensuite le href ce serait simplement des paramètres que tu passes à l'URL.

Genre <a href="?id=_id_de_lequipe_">

L'id de léquipe tu la génère dynamiquement grâce à la boucle.

Ensuite sur cette même page tu vérifie si la variable GET ['id'] existe et si elle existe tu exécute ton script pour intégrer l'équipe.

Desolé si je n'ai pas été forcément clair. Il se fait tard et je suis sur mon mobile 😀
romain7110

romain7110 Le 9 juin 2016 à 17:43

Désolé mais je me suis relu et je ne peux pas faire plus clair Thibault  
Merci pou ta réponse Ranarxhag.
J'ai suivi tes conseils et voici mon code actuel pour ma page PHP :
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=batalia', 'root', '');
session_start();
if(isset($_SESSION['id'])){   
$_SESSION = array();
      if(isset($_GET['id']))
      {
         // supprime l'ancienne equipe
         $reqteam = $bdd->prepare('DELETE * FROM listing_mequipes WHERE id_joueur = ?');
         $reqteam->execute(array($_SESSION['id']));
         // ajoute la nouvelle equipe
         $funct = $bdd->prepare("INSERT INTO listing_mequipes(id_equipe, id_joueur) VALUES(?, ?)");
         $funct->execute(array($_GET['id'], $_SESSION['id']));
      }
   }
header("Location: ../index/index.php?id=".$_SESSION['id']);
?>
J'ai deux problèmes : 1) lorsque je suis redirigé je ne suis plus connecté (je repasse visiteur).
2) je dois avoir fait une faute dans mes requêtes SQL car elles ne s’exécutent pas.
Pour mieux comprendre mon code, ma table listing_mequipes et une table avec 2 entrée (id_equipe et id_joueur). Pour faire simple je veux juste check si l'user est déjà dans une équipé, si c'est le cas supprimer la ligne et dans tout les cas l'inscrire dans la nouvelle.
Ranarxhag

Ranarxhag Le 9 juin 2016 à 18:20

Problème habituel ça 😀

Tu as oublié de mettre un session_start(); au tout début de ta page. De ce fait, ta variable de session n'est pas créée sur cette page et tu es "déconnecté".

En ce qui concerne tes requêtes, elles sont très bien faites. Seulement, un problème en entraîne souvent un autre. Tu veux delete et insert dans ta base de données en fonction des variables de SESSION. Mais puisqu'elles n'existent pas, ton code ne peut pas s'effectuer 😉 
romain7110

romain7110 Le 9 juin 2016 à 18:47

Un grand merci à toi. Mon problème est résolu pour le session_start();
 Néanmoins un problème persiste : L’écriture marche sans problème mais pas la suppression. C'est la première que je fais en PHP.
Florian

Florian Le 9 juin 2016 à 20:03

Hola,

Déjà il peux y avoir des failles SQL & XSS de plus pour delete faut enlever le * donc $reqteam = $bdd->prepare('DELETE FROM listing_mequipes WHERE id_joueur = ?');
romain7110

romain7110 Le 9 juin 2016 à 20:08

Problème résolu c'était bien le caractère * qui me créait le bug. Un grand merci encore pour vos réponses. c'est vraiment sympa de votre part !
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte