<?php
$bdd= new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Finder</title>
</head>
<header>
<div id=class"Contact"> </div>
</header>
<body>
<fieldset>
<legend><center><h2>Type de course</h2></center></legend>
<div id=class"recherche"> <p>Veuillez choisir le type de course : </p>
<form>
<SELECT name="Type">
<option value="1" >Course par tour</option>
<option value="2">Course contre la montre </option>
<option value="3">Depart arrivee</option>
<option value="4">Duathlon</option>
<option value="5"></option>
<input type="submit" name="Valeur" value="Definir le type de course" title="valider pour aller à la page sélectionnée" />
<?php
if($Type == '1' ){
$bdd= new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$donnees = $bdd->query('SELECT * FROM donnees');
while ($result = $donnees->fetch()){
echo 'Nom : '.$result['Nom'] ; echo '<br>' ;
echo 'Nombre : '.$result['Nombre'] ; echo '<br>';
echo 'Le : '.$result['Jour'] . '/' . $result['Mois'] .'/'. $result['Annee'] ; echo'<br>';
echo 'Departement : '.$result['Departement'] ; echo '<br>';
echo 'Organisation : '.$result['Organisation'] ; echo '<br>';
echo 'Depart : '.$result['Depart'] ; echo '<br>';
}
} else {echo "Veuillez saisir un type de course ";}
?>
</SELECT>
</form>
</fieldset>
</div>
</body>
</html>
Bonjour a tous je travaille comme chronometreur sportif et j'aimerais classer toutes mes courses dans une BDD pour les retrouver grace a mon site internet, donc j'aimerais que grace a mon menu deroulant je saisisse le type de course et que la base de donnees me renvoi les donnees de cette course en fonction de son Type mais j'ai une erreur je ne comprend pas d'ou elle viens...
Mon erreur est : Notice: Undefined variable: Type in C:\wamp64\www\Site\index.php on line 30
Pourtant je la recupere bien cette valeur ..
- Edité par NicolasManellio 27 mars 2017 à 12:22:02
Je suis débutant moi aussi donc c'est à prendre avec des pincettes mais pour moi c'est tout le code qui est à revoir. J'ai l'impression que y a rien de cohérent, en fait.
Le message de chirstouphe est vrai aussi mais sinon, là tu dis au script : si le type de course est le n°1, affiche moi * (tout !) ce qu'il y en bdd
Si tu veux utiliser une variable toto il faut qu'elle existe.
Ce code pourra t'aider dans ces cas:
<?php
//si on veut utiliser $toto il faut qu'il soit défini
if (!isset($toto)) {
$toto = "cool";
}
//plus loin dans le code,
//tu ne sais pas si tu l'as défini, mais tu te protèges
if (isset($toto) && $toto == "cool") {
echo " Toto est ".$toto;
}
Note: exemple bidon pour te montrer comment vérifier l'existence d'une variable
en gros, vus que tu calle directement ta condition dans la page, lors de l'exécution du php il va lire toutes ta page ainsi que ta condition et va tomber sur '$_POST['Type'] == '1' il va l'exécuter or vus que tu n'as pas exécuter ton form la variable type n'est pas initialisé donc elle te sortira une erreur.
car pour moi la requêtes est OK.
EDIT + correction de sombrelune :
<form method="POST" action="#">
<SELECT name="Type">
<option value="1" >Course par tour</option>
<option value="2">Course contre la montre </option>
<option value="3">Depart arrivee</option>
<option value="4">Duathlon</option>
<option value="5"></option>
</SELECT>
<input type="submit" name="Valeur" value="Definir le type de course" title="valider pour aller à la page sélectionnée" />
</form>
<?php
if(isset($_POST['Type'])){
$bdd= new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$donnees = $bdd->query('SELECT * FROM donnees WHERE Type='.$_POST['Type'].'');
while ($result = $donnees->fetch()){
echo 'Nom : '.$result['Nom'] ; echo '<br>' ;
echo 'Nombre : '.$result['Nombre'] ; echo '<br>';
echo 'Le : '.$result['Jour'] . '/' . $result['Mois'] .'/'. $result['Annee'] ; echo'<br>';
echo 'Departement : '.$result['Departement'] ; echo '<br>';
echo 'Organisation : '.$result['Organisation'] ; echo '<br>';
echo 'Depart : '.$result['Depart'] ; echo '<br>';
}
} else {echo "Veuillez saisir un type de course ";}
?>
Le @ devant les fonctions/variables sert à masquer les erreurs PHP, ce n'est pas une bonne pratique de masquer les erreurs, il faut simplement les corriger! Ici il suffit d'utiliser isset($_POST['Type']) pour savoir si la variable existe, et il faut enlever le == 1 qui n'a plus rien à faire ici.
Il faut également utiliser une requete PDO prepare/execute pour éviter les injections SQL.
Le code donné par Quentin134 sous-entend que tu as une colonne "Type" dans ta table "donnees" qui contiendrait une valeur numérique (dans la liste des valeurs de ton select pour que la requete SQL retourne des résultats).
- Edité par Sombrelune 27 mars 2017 à 15:05:44
- Activer les erreurs : PHP - PDO-MYSQLI - ¯\_ツ_/¯ - Documentations :PHP - MySQL -
Quelques erreurs notamment dans te balises même si cela n'empêche pas le code de fonctionner. Fait surtout attention à la façon dont tu récupères les données du formulaire et à ta requête qui ne prends pas en compte le résultat. Bref ceci devrait fonctionner
<form>
<!-- Pense a fermer ton select au bon endroit -->
<select name="Type">
<option value="1" >Course par tour</option>
<option value="2">Course contre la montre </option>
<option value="3">Depart arrivee</option>
<option value="4">Duathlon</option>
<option value="5"></option>
</select>
<input type="submit" name="Valeur" value="Definir le type de course" title="valider pour aller à la page sélectionnée" />
</form>
<!-- Les données à afficher n'ont rien à faire dans le formulaire -->
<?php if(isset($_POST['Type'])){ //les données envoyées existent
$bdd = new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$donnees = $bdd->prepare('SELECT * FROM donnees WHERE Type=:type'); //modification de la requête en fonction de la valeur de $_POST['Type'] + requête préparée
$donnees->bindParam('type', $_POST['Type']); //paramètres de la requête
$donnees->execute(); //exécution de la requête
while ($result = $donnees->fetch()){
echo 'Nom : '.$result['Nom'] ; echo '<br>' ;
echo 'Nombre : '.$result['Nombre'] ; echo '<br>';
echo 'Le : '.$result['Jour'] . '/' . $result['Mois'] .'/'. $result['Annee'] ; echo'<br>';
echo 'Departement : '.$result['Departement'] ; echo '<br>';
echo 'Organisation : '.$result['Organisation'] ; echo '<br>';
echo 'Depart : '.$result['Depart'] ; echo '<br>';
}
} else { echo "Veuillez saisir un type de course"; } ?>
Il manque également l'attribut method dans le <form> qui doit être en POST ici, le method par defaut étant GET on ne rentrerait jamais dans la condition.
<form method="post" action="">
- Edité par Sombrelune 27 mars 2017 à 15:27:22
- Activer les erreurs : PHP - PDO-MYSQLI - ¯\_ツ_/¯ - Documentations :PHP - MySQL -
Merci ma condition marche, je vous remercie, je vais maintenant essayer de faire un autre Bloc pour insérer une valeur dans a base de données je vous remercie
Code Final pour qui ça intéresserais :
<?php
$bdd= new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Finder</title>
</head>
<header>
<div id=class"Contact"> </div>
</header>
<body>
<fieldset>
<legend><center><h2>Type de course</h2></center></legend>
<div id=class"recherche"> <p>Veuillez choisir le type de course : </p>
<form method="post" action="">
<!-- Pense a fermer ton select au bon endroit -->
<select name="Type">
<option value="1" >Course par tour</option>
<option value="2">Course contre la montre </option>
<option value="3">Depart arrivee</option>
<option value="4">Duathlon</option>
<option value="5"></option>
</select>
<input type="submit" name="Valeur" value="Definir le type de course" title="valider pour aller à la page sélectionnée" />
</form>
<!-- Les données à afficher n'ont rien à faire dans le formulaire -->
<?php if(isset($_POST['Type'])){ //les données envoyées existent
$bdd = new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$donnees = $bdd->prepare('SELECT * FROM donnees WHERE Type=:type'); //modification de la requête en fonction de la valeur de $_POST['Type'] + requête préparée
$donnees->bindParam('type', $_POST['Type']); //paramètres de la requête
$donnees->execute(); //exécution de la requête
while ($result = $donnees->fetch()){
echo 'Nom : '.$result['Nom'] ; echo '<br>' ;
echo 'Nombre : '.$result['Nombre'] ; echo '<br>';
echo 'Le : '.$result['Jour'] . '/' . $result['Mois'] .'/'. $result['Annee'] ; echo'<br>';
echo 'Departement : '.$result['Departement'] ; echo '<br>';
echo 'Organisation : '.$result['Organisation'] ; echo '<br>';
echo 'Depart : '.$result['Depart'] ; echo '<br>';
}
} else { echo "Veuillez saisir un type de course"; } ?>
</fieldset>
</div>
</body>
</html>
- Edité par NicolasManellio 27 mars 2017 à 15:33:55
Bien vu Sombrelune, j'avais oublié que par défaut les données étaient passées en GET.
NicolasManellio, tu pourrais prendre un screenshot du schéma de la partie de ta DB qui nous intéresse ? Pour le coup on fait des propositions mais sans connaitre le nom des champs, impossible de savoir précisément si un erreur peut provenir de là
EDIT: Le temps que je mette mon message t'as édité le tien Je suis content que ça fonctionne N'hésite pas à revenir si tu as d'autres problèmes dans ton projet.
Merci ma condition marche, je vous remercie, je vais maintenant essayer de faire un autre Bloc pour insérer une valeur dans a base de données je vous remercie
Code Final pour qui ça intéresserais :
<?php
$bdd= new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Finder</title>
</head>
<header>
<div id=class"Contact"> </div>
</header>
<body>
<fieldset>
<legend><center><h2>Type de course</h2></center></legend>
<div id=class"recherche"> <p>Veuillez choisir le type de course : </p>
<form method="post" action="">
<!-- Pense a fermer ton select au bon endroit -->
<select name="Type">
<option value="1" >Course par tour</option>
<option value="2">Course contre la montre </option>
<option value="3">Depart arrivee</option>
<option value="4">Duathlon</option>
<option value="5"></option>
</select>
<input type="submit" name="Valeur" value="Definir le type de course" title="valider pour aller à la page sélectionnée" />
</form>
<!-- Les données à afficher n'ont rien à faire dans le formulaire -->
<?php if(isset($_POST['Type'])){ //les données envoyées existent
$bdd = new PDO('mysql:host=localhost;dbname=course', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$donnees = $bdd->prepare('SELECT * FROM donnees WHERE Type=:type'); //modification de la requête en fonction de la valeur de $_POST['Type'] + requête préparée
$donnees->bindParam('type', $_POST['Type']); //paramètres de la requête
$donnees->execute(); //exécution de la requête
while ($result = $donnees->fetch()){
echo 'Nom : '.$result['Nom'] ; echo '<br>' ;
echo 'Nombre : '.$result['Nombre'] ; echo '<br>';
echo 'Le : '.$result['Jour'] . '/' . $result['Mois'] .'/'. $result['Annee'] ; echo'<br>';
echo 'Departement : '.$result['Departement'] ; echo '<br>';
echo 'Organisation : '.$result['Organisation'] ; echo '<br>';
echo 'Depart : '.$result['Depart'] ; echo '<br>';
}
} else { echo "Veuillez saisir un type de course"; } ?>
</fieldset>
</div>
</body>
</html>
Probleme condition
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
</radiax>
</radiax>