Exécuter une requete sql lors d'un click sur un bouton

Résolu
fra -  
Fraa_w Messages postés 29 Statut Membre -
Bonjour,
après plus de deux jours de recherche sur des forums et des vidéos je n'arrive toujours pas à trouver une solution à mon problème
d'ailleurs je ne sais pas si c'est vraiment possible !

dans une page.php je veux mettre un bouton à partir duquel on récupère des informations depuis ma base de données () que lorsque on clique sur ce bouton.

Je vous remercie



Configuration: Windows / Firefox 91.0

5 réponses

jee pee Messages postés 42374 Statut Modérateur 9 737
 
Bonjour,

Tu peux faire une page php qui contient un formulaire avec seulement un bouton et un champ caché, la page s'auto appelle et on teste pour voir si le champ caché est bien renseigné, auquel cas on execute le code php désiré

<body>
<form action= "<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="application/x-www-form-urlencoded">
<div>
<input type="hidden" name="suite" value="C'est parti" />
<input type="submit" value="Démarrer" />
</div>
</form>
<?php
if(isset($_POST["suite"]))
{
echo "<h2>". $_POST["suite"]. "</h2>";
}
?>
</body> 

0
fra
 
tout d'abord je te remercie pour ta réponse, comme je suis débutant je n'ai pas bien saisi le concept du formulaire



<body>
<!-- Voici le bouton -->
<button id="id1">bouton 1</button>

<?php
// ceci est la requete que je veux executer après le clique

$team1 = $database->query('SELECT nom FROM teams WHERE id = 1');
$team1 = $team1->fetch();

?>

<!-- en suite recuperer le resulat ici par exemple ici -->
<button id="resultat"> <?php echo $team1[0]?> </button>

</body>
0
jee pee Messages postés 42374 Statut Modérateur 9 737
 
Tu remplaces l'echo de ma ligne 11 par ta requete sql

<body>
<form action= "<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="application/x-www-form-urlencoded">
<div>
<input type="hidden" name="suite" value="C'est parti" />
<input type="submit" value="Démarrer" />
</div>
</form>
<?php
if(isset($_POST["suite"]))
{
  $team1 = $database->query('SELECT nom FROM teams WHERE id = 1');
  $team1 = $team1->fetch();
  echo $team1[0];
}
?>
</body> 


PS : Pour la mise en forme des sources, au dessus de la zone d'édition de tes messages, il y a des icônes pour l'enrichissement du texte. Celle qui a cet aspect
<> ▼
permet d'appliquer au code, suivant une liste de valeurs, le format correspondant à sa nature (C, Python, Shell, ...).

0
fra
 
alors j'ai repris exactement la même chose sauf que le résultat de la requête s'affiche avant de cliquer sur le bouton

Ps : merci pour ta remarque prochainement je mettrai le format correspondant à la nature du code
0
jee pee Messages postés 42374 Statut Modérateur 9 737 > fra
 
Si le fichier a déjà été exécuté une fois et que tu fais actualiser la page, c'est normal.

j'ouvre le navigateur, je l’exécute une fois, je n'ai que le bouton, je valide, alors j'ai une erreur php puisque pas de base de donnée chez moi.

mais tu devrais regarder la proposition de jordane45 qui donne une solution plus globale intégrant la config bdd
0
Fraa_w Messages postés 29 Statut Membre > jee pee Messages postés 42374 Statut Modérateur
 
oui jee pee j'ai essayé la méthode de jordan et ça marche
merci beaucoup à vous deux
0
jordane45 Messages postés 40050 Statut Modérateur 4 755
 
Bonjour,

La première question à se poser c'est :
Veux tu que les données apparaissent sans recharger le reste de la page .... ou tu t'en moques ??

Si tu t'en moques.. dans ce cas.. oui, un formulaire suffira.

Si tu ne veux pas que le reste de la page se réactualise (comme quand tu fais F5 sur ton clavier ..) là ça se complique .. car il faudra utiliser du javascript + ajax.

Partons du principe que tu veux faire au plus simple et que le refresh ne soit pas dérangeant pour toi..

Dans ce cas :

<?php
//on place de préférence le maximum de code PHP  AVANT le début du code html ...


// code de connexion à la bdd
// ....
//...

//traitement du formulaire 
if( isset($_POST['id1'])  ){
  // ceci est la requete que je veux executer après le clique 
  try{
     $req = $database->query('SELECT nom FROM teams WHERE id = 1');
     $team1 = $req->fetch();
  }catch(Exception $e){
     echo "Erreur " . $e->getMessage();
  }
     $nom = !empty($team1['nom']) ? $team1['nom']: "";
}
?>
<Doctype html>
<html> 
  ...


<body>
<form action="" method="post" >
<!-- Voici le bouton -->
<button type="submit" id="id1" name="id1">bouton 1</button>

<!-- en suite recuperer le resulat ici par exemple ici  -->
<button id="resultat"> <?php echo $nom; ?> </button>
</form>

</body>
</html>


0
Fraa_w Messages postés 29 Statut Membre
 
merci beaucoup jordan pour ta réponse ça a l'air de fonctionner, j'ai juste une petite erreur avant de cliquer sur le bouton.

image lors du chargement de la page



image après le clique

0
jordane45 Messages postés 40050 Statut Modérateur 4 755
 
Ah oui .. il faut déplacer la ligne
 $nom = !empty($team1['nom']) ? $team1['nom']: "";

après la fin du IF ( donc en dessous de la ligne 19 actuelle)
0
Fraa_w Messages postés 29 Statut Membre > jordane45 Messages postés 40050 Statut Modérateur
 
Quand je fais ça il m'affiche le résultat lors du chargement de la page (avant de cliquer sur le bouton)
0
jordane45 Messages postés 40050 Statut Modérateur 4 755 > Fraa_w Messages postés 29 Statut Membre
 
Heuuu... Qu'as tu fais au juste
0
Fraa_w Messages postés 29 Statut Membre > jordane45 Messages postés 40050 Statut Modérateur
 
Voici ce que j'ai fait



j'ai repris ton code et j'ai décalé ça : $nom = !empty($team1['nom']) ? $team1['nom']: "";

vers la fin de la condition If


<?php
//on place de préférence le maximum de code PHP AVANT le début du code html ...


// code de connexion à la bdd
// ....
//...

//traitement du formulaire
if( isset($_POST['id1']) )
{
// ceci est la requete que je veux executer après le clique

$database = new PDO ('mysql:host=localhost;dbname=visualisation', 'root','');

try
{
$req = $database->query('SELECT nom FROM teams WHERE id = 1');
$team1 = $req->fetch();
}catch(Exception $e){
echo "Erreur " . $e->getMessage();
}
}

$nom = !empty($team1['nom']) ? $team1['nom']: "";

?>


<form action="" method="post" >
<!-- Voici le bouton -->
<button class="custom-btn btn-4" type="submit" id="id1" name="id1">bouton 1</button>

<!-- en suite recuperer le resulat ici par exemple ici -->
<button class="custom-btn btn-4" id="resultat"> <?php echo $nom ; ?> </button>
</form>
0
jordane45 Messages postés 40050 Statut Modérateur 4 755 > Fraa_w Messages postés 29 Statut Membre
 
Déjà, tu n'as pas utiliser les balises de code...

Ensuite, qu'est-ce qui ne fonctionne pas dans ce code ?
Il me semble juste...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fraa_w Messages postés 29 Statut Membre
 
J'ai une toute dernière question si vous pouvez me donner une piste

Est ce que c'est possible d'afficher le bouton qui comporte le résultat dans une autre page.php

"" Quand on clique sur le bouton ( bouton1 ) ça ouvre une nouvelle page qui comporte le bouton (G_Conso) ""


Merciiii
0
jee pee Messages postés 42374 Statut Modérateur 9 737
 
;-)))

c'est dommage on était sur un formulaire et la réponse en un seul fichier

pour le faire dans un autre fichier php, il faut, plutôt que le formulaire s'auto appelle, appeler le second fichier php
0
Fraa_w Messages postés 29 Statut Membre > jee pee Messages postés 42374 Statut Modérateur
 
Je me suis dit si j'arrive à le faire dans le même fichier je saurai comment récupérer le résultat de la requête dans une nouveau fichier
Je continue de creuser merci Jee pee pour la piste
0
jee pee Messages postés 42374 Statut Modérateur 9 737 > Fraa_w Messages postés 29 Statut Membre
 
généralement les utilisateurs qui le font en 2 fichiers formulaire et utilisation des réponses cherche à regrouper tout en un

action="fichier2.php"
pour appeler un autre fichier
0
Fraa_w Messages postés 29 Statut Membre > jee pee Messages postés 42374 Statut Modérateur
 
ça marche je cherche dans ce sens
0