{PHP} variable PHP dans un attribut d'une balise HTML
Fermé
Fraa_w
Messages postés
26
Date d'inscription
mercredi 22 décembre 2021
Statut
Membre
Dernière intervention
5 novembre 2022
-
28 déc. 2021 à 12:00
jordane45 Messages postés 38300 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 novembre 2024 - 28 déc. 2021 à 16:37
jordane45 Messages postés 38300 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 novembre 2024 - 28 déc. 2021 à 16:37
A voir également:
- {PHP} variable PHP dans un attribut d'une balise HTML
- Easy php - Télécharger - Divers Web & Internet
- Editeur html - Télécharger - HTML
- Balise br - Forum CSS
- Balise <br> HTML ✓ - Forum HTML
2 réponses
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
28 déc. 2021 à 14:29
28 déc. 2021 à 14:29
Bonjour,
Déjà.. commence par placer le code de connexion à la bdd dans un fichier à part que tu n'auras qu'à inclure dans tes différents scripts au lieu de recopier/coller le même code...
En plus, actives-y l'affichage des éventuelles erreurs PDO... ainsi que l'affichage des erreurs PHP.
Donc .. crée le fichier cnxBdd.php
Ensuite, dans ton fichier, modifie le code comme ceci :
Puis dans la page chaine.php
Et enfin, dans le fichier traitement.php
NB: J'ai écrit le code de tête et sans connaitre la structure exacte de tes tables.
J'ai supposé que chaque table contenait un champ "id" ...
En fonction de ça, il te faudra peut-être adapter un peu le code et corriger d'éventuelles erreurs de syntaxe si il y en a..
Déjà.. commence par placer le code de connexion à la bdd dans un fichier à part que tu n'auras qu'à inclure dans tes différents scripts au lieu de recopier/coller le même code...
En plus, actives-y l'affichage des éventuelles erreurs PDO... ainsi que l'affichage des erreurs PHP.
Donc .. crée le fichier cnxBdd.php
<?php //Fichier cnxBdd.php //------------------------------------// //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //connexion à la bdd try{ $database = new PDO ('mysql:host=localhost;dbname=visualisation', 'root','');// Activation des erreurs PDO $database->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $database->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } ?>
Ensuite, dans ton fichier, modifie le code comme ceci :
<?php // Page 2.php //--------------------------// //connexion à la bdd require_once "cnxBdd.php"; try{ $t = $database->query('SELECT nom FROM f_teams WHERE id = 1'); $t = $t->fetch(); $x = $t[0] ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); } if( !empty($x)){ // r d try{ $dX = $database->query('SELECT * FROM domaine WHERE equipe = 1'); $dX = $dX->fetchAll(); }catch(Exception $e) { echo "Erreur " . $e->getMessage(); } } if(!empty($dX)){ ?> <form action="./chaine.php" method="post" > <?php foreach($dx as $d){ ?> <button type="submit" class="custom-btn btn-9" id="domaine_<?php echo $d['id'];?>" name="domaine[]" value="<?php echo $d['id']; ?>"> <?php echo $d["nom"] ?> </button> <?php } ?> </form> <?php } ?>
Puis dans la page chaine.php
<?php // chaine.php //--------------------------// //connexion à la bdd require_once "cnxBdd.php"; //on récupère les données transmises en POST $domaine = !empty($_POST['domaine']) ? $_POST['domaine'] : NULL; if($domaine){ //préparation de la requête et des variables $sql = "SELECT nom FROM domaine WHERE id = ?"; $datas = array($domaine); //Execution de la requete try{ $requete = $database -> prepare($sql) ; $requete->execute($datas) ; $d1 = $requete->fetch(); $nom_domaine = $d1['nom'] ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } if(!empty($nom_domaine)) { //préparation de la requête et des variables $sql = "SELECT * FROM chaine WHERE domaine = ?"; // ici, dans ta table.. domaine c'est l'id du domaine ou son nom ?? => ça devrait être son id... $datas = array($domaine); //Execution de la requete try{ $requete = $database -> prepare($sql) ; $requete->execute($datas) ; $chaines = $requete->fetchAll(); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } }else{ echo "Aucun domaine envoyé..."; var_dump($_POST); //juste le temps des tests... } ?> <?php if(!empty($chaines)){ ?> <form action="./traitement.php" method="post" > <?php foreach($cX as $c) { ?> <button type="submit" class="custom-btn btn-9" id="chaine_<?php echo $c['id'];?>" name="chaine[]" value="<?php echo $c['id'];?>"> <?php echo $c["nom"];?> </button> <?php } ?> </form> <?php } ?>
Et enfin, dans le fichier traitement.php
<?php // Fichier traitement.php var_dump($_POST);
NB: J'ai écrit le code de tête et sans connaitre la structure exacte de tes tables.
J'ai supposé que chaque table contenait un champ "id" ...
En fonction de ça, il te faudra peut-être adapter un peu le code et corriger d'éventuelles erreurs de syntaxe si il y en a..
Fraa_w
Messages postés
26
Date d'inscription
mercredi 22 décembre 2021
Statut
Membre
Dernière intervention
5 novembre 2022
28 déc. 2021 à 16:21
28 déc. 2021 à 16:21
Merci énormément Jordan45 pour ta réponse
ça marche bien pour la première la page domaine ( page 2 ) mais pas pour la page chaine ( page 3) j'ai eu quelques erreurs que je n'arrive pas du tout à comprendre ...
( j'ai mis en gras mon problème si tu ne peux pas lire tout ça hahaha : ) )
- Un formulaire dans une boucle foreach qui retourne des boutons comme ceci
je partage juste le nécessaire cette fois-ci
////////ici je suis dans la page domaine///////
l'idée c'est de comparer l'attribut
si c'est ce bouton là avec cet attribut là qui est cliqué dans la page d'avant (page domaine) - > on affiche ça
si c'est un bouton là avec un autre attribut name dans la page d'avant (page domaine ) - > on affiche ça
PS : j'ai plusieurs bouton donc je ne peux pas mettre n'importe quel string (c'est la boucle qui doit générer cet attribut )
le problème est dans la ligne 9 dans le code d'en bas
cette ligne là :
////////ici je suis dans la page chaine///////
si c'est le même j'affiche ces chaines la dans la page chaine
mais ça marche pas
ça marche bien pour la première la page domaine ( page 2 ) mais pas pour la page chaine ( page 3) j'ai eu quelques erreurs que je n'arrive pas du tout à comprendre ...
( j'ai mis en gras mon problème si tu ne peux pas lire tout ça hahaha : ) )
- Un formulaire dans une boucle foreach qui retourne des boutons comme ceci
je partage juste le nécessaire cette fois-ci
////////ici je suis dans la page domaine///////
<form action="./chaine.php" method="post" > <?php foreach($domaineX as $domaine) { ?> <button type="submit" class="custom-btn btn-9" id="<?php echo htmlspecialchars($domaine[0]); ?>" name="<?php echo htmlspecialchars($domaine["nom"]); ?>"> <?=$domaine["nom"] ?> </button> <!-- ca donne la meme chose --> <!-- <?php echo htmlspecialchars($domaine["nom"]); ?> --> <?php } ?> </form>
l'idée c'est de comparer l'attribut
name " "de ce bouton avec le résultat d'une requête dans une autre page (page chaine).
si c'est ce bouton là avec cet attribut là qui est cliqué dans la page d'avant (page domaine) - > on affiche ça
si c'est un bouton là avec un autre attribut name dans la page d'avant (page domaine ) - > on affiche ça
PS : j'ai plusieurs bouton donc je ne peux pas mettre n'importe quel string (c'est la boucle qui doit générer cet attribut )
le problème est dans la ligne 9 dans le code d'en bas
cette ligne là :
if( isset($_POST["$z"]) )
////////ici je suis dans la page chaine///////
<?php $domaine1 = $database->query('SELECT nom FROM domaine WHERE id = 1'); $domaine1 = $domaine1->fetch(); $z = $domaine1[0] ; if( isset($_POST["$z"]) ) { // le,probléme est ici try { $chaineX = $database->query('SELECT* FROM chaine WHERE domaine = 1'); $chaineX = $chaineX->fetchAll(); }catch(Exception $e) { echo "Erreur " . $e->getMessage(); } $chainex = !empty($chaineX['nom']) ? $chaineX['nom']:""; }
si c'est le même j'affiche ces chaines la dans la page chaine
mais ça marche pas
<?php if(!empty($chaineX)) { ?> <form action="./traitement.php" method="post" > <?php foreach($chaineX as $chaine) { // $domaineX = $domaineX->fetch(); ?> <button class="custom-btn btn-9" id="chaine" name="<?php echo htmlspecialchars($chaine[0]); ?>"> <?=$chaine["nom"] ?> </button> <?php } ?> </form> <?php } ?>
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
28 déc. 2021 à 16:37
28 déc. 2021 à 16:37
le problème c'est que tu es reparti sur ton code ... code foireux .. au lieu d'essayer de comprendre et d'utiliser celui que je t'ai donné...
Pour que tes boutons retournent quelque chose.. mets leur l'attribut VALUE (comme je l'ai fait )
Ensuite.. sur tes pages, fais un var_dump de la variable $_POST pour voir ce qu'elle contient lorsque tu cliques sur un bouton.
NB: Tu remarqueras également que j'ai mis le même "name" à chaque bouton.... car tu ne peux pas deviner à l'avance quelle sera le nom de la variable post avec ta méthode...
Pour que tes boutons retournent quelque chose.. mets leur l'attribut VALUE (comme je l'ai fait )
Ensuite.. sur tes pages, fais un var_dump de la variable $_POST pour voir ce qu'elle contient lorsque tu cliques sur un bouton.
NB: Tu remarqueras également que j'ai mis le même "name" à chaque bouton.... car tu ne peux pas deviner à l'avance quelle sera le nom de la variable post avec ta méthode...