[RESOLU] Html/Php Uncaught exception 'PDOException' with message 'SQLSTATE[42000]

Mrus
Invité n'ayant pas de compte PHPfrance

28 mars 2019, 22:45

Bonjour, bonsoir,
Simple demande, j'aurai besoin de votre aide car je suis bloqué dans mon code.
Voici les trois fichiers :
Un premier formulaire qui lui fonctionne sans problème (intitulé form.arbitre.consultation.php):
<!DOCTYPE html>
<html>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="css/style.css">
<head>
<title>Consultation par arbitre</title>
</head>
<body>
<form method="POST" action="form/info_arbitre.php">
<SELECT name="liste_arbitre" onchange='submit()'>
<?php 

include 'include/fonctions.php';
$connex = connexion_bd();
$req = 'SELECT * FROM arbitre';
$resultat = $connex->query($req);

while($ligne = $resultat->fetch(PDO::FETCH_OBJ)){
?>
<OPTION value ="<?php echo $ligne->num_arbitre; ?>"> <?php echo $ligne->nom_arbitre. "   ". $ligne->prenom_arbitre;?></OPTION>

<?php
}
?>
</SELECT>

</form>
</body>
</html>
Voici ensuite le deuxième formulaire(info_arbitre):
<!DOCTYPE html>
<html>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="css.css">
<head>
<title>Convocation</title>
</head>
<body>
<form method="POST" action="form/info_convocation.php">
<?php
require ('../include/fonctions.php');
$connex = connexion_bd();
$req2='SELECT * FROM arbitre a left join club c on a.num_club=c.num_club WHERE num_arbitre='.$_POST['liste_arbitre'];
$resultat = $connex->query($req2);
while($ligne = $resultat->fetch(PDO::FETCH_OBJ)){
?>

<table>
<tr><th>NOM</th><th>PRENOM</th><th>VILLE</th><th>CP</th><th>DATE DE NAISSANCE</th><th>TELEPHONE</th><th>E-MAIL</th><th>CLUB</th></tr>
<th><?php echo "$ligne->nom_arbitre"?></th>
<th><?php echo "$ligne->prenom_arbitre"?></th>
<th><?php echo "$ligne->ville_arbitre"?></th>
<th><?php echo "$ligne->cp_arbitre"?></th>
<th><?php echo "$ligne->date_naissance_arbitre"?></th>
<th><?php echo  "$ligne->tel_fixe_arbitre"?>
<?php echo  "$ligne->tel_port_arbitre"?></th>
<th><?php echo "$ligne->mail_arbitre"?></th>
<th><?php $club=$ligne->nom_club;
			if(is_null($ligne->num_club))
	{
			echo "Aucun";
		}else{
		echo "$club";
		}
		?>
        </th></tr>
</table>
<?php

}?>
<SELECT name="liste_match" onchange='submit()'>
<?php 

$connex = connexion_bd();

// $req = "SELECT * FROM arbitre a inner join club c on a.num_club=c.num_club équipe e on a.num_club=e.num_club championnat ch on e.num_championnat=ch.num_championnat type_championnat tc on ch.num_type_championnat=tc.num_type_championnat WHERE num_arbitre_s or num_arbitre_p=".$_GET['liste_arbitre'];
$req3= '(SELECT * FROM matchs m inner join arbitre a on m.num_arbitre_s=a.num_arbitre Where m.num_arbitre_s='.$_POST['liste_arbitre'].'
)UNION
(SELECT * FROM matchs m inner join arbitre a on m.num_arbitre_p=a.num_arbitre Where m.num_arbitre_p='.$_POST['liste_arbitre'].')';
$resultat = $connex->query($req3);
while($ligne = $resultat->fetch(PDO::FETCH_OBJ)){
?>
<option value ="<?php echo $ligne->num_match;?>"> <?php echo $ligne->date_match. "   ". $ligne->heure_match;?></OPTION>
<?php } $resultat->closeCursor(); ?></select> 
<?php
$resultat->closecursor();
?>
</form> 
</body>
</html>
Et enfin le dernier fichier qui semble contenir le problème même si je ne suis pas sûr de cela (info_convocation):
<!DOCTYPE html>
<html>
<meta charset="utf-8" />

<head>
<title>Consultation</title>
</head>
<body>
<form method="POST" action="">
<?php
require ('../include/fonctions.php');
$connex = connexion_bd();
$req3='SELECT * FROM matchs m inner join équipe e on m.num_equipe_1=e.num_equipe inner join salle s on m.num_salle=s.num_salle WHERE num_match =='.$_POST['liste_match'];
$result = $connex->query($req3);
while($ligne = $result->fetch(PDO::FETCH_OBJ)){
?>

<table>
<tr><th>N°</th><th>SALLE</th><th>ADRESSE</th><th>DATE</th><th>HEURE</th><th>EQUIPE 1</th><th>EQUIPE 2</th><th>CO-ARBITRE</th><th>REMUNERATION</th></tr>
<th><?php echo "$ligne->num_match"?></th>
<th><?php echo "$ligne->num_salle"?></th>
<th><?php echo "$ligne->adresse_salle"?></th>
<th><?php echo "$ligne->date_match"?></th>
<th><?php echo "$ligne->heure_match"?></th>
<th><?php echo  "$ligne->"?>
<?php echo  "$ligne->tel_port_arbitre"?></th>
<th><?php echo "$ligne->mail_arbitre"?></th>
<th><?php echo "$ligne->num_equipe_1"?></th>
<th><?php echo "$ligne->num_equipe_2"?></th>
</th></tr>
</table>
<?php

}
$resultat->closecursor();
?>
</form>
</body>
</html>
Image

En sélectionnant un arbitre par son nom, on tombe sur la page suivant qui semble tout autant fonctionner:

Image

En selectionnant ensuite une date de match, on obtient les erreurs suivantes;

Image

Image

Mammouth du PHP | 1531 Messages

29 mars 2019, 09:33

l'erreur semblke venir d'une de tes requètes

$req2='SELECT * FROM arbitre a left join club c on a.num_club=c.num_club WHERE num_arbitre='.$_POST['liste_arbitre'];
ou
$req3='SELECT * FROM matchs m inner join équipe e on m.num_equipe_1=e.num_equipe inner join salle s on m.num_salle=s.num_salle WHERE num_match =='.$_POST['liste_match'];

Les mot clé des requète ne doivent pas être en majuscule mais cela aide à leur lecture.
test les dans phpmyadmin pour plus de détail sur les erreurs
pour la première, précise de quelle table vient num_match
pour la seconde remplace le double égale par un simple.
et termine les pas un point virgule

dernier point vérifie toujours que tu as les info de $_POST et ce quelle contiennet avant de les injecter dans une requète, cela t'évitera un risque d'injection sql.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie

Mrus
Invité n'ayant pas de compte PHPfrance

30 mars 2019, 21:25

Bonsoir,
j'ai corrigé et testé mes requêtes mais je n'arrive toujours pas à accéder au dernier formulaire..

Mrus
Invité n'ayant pas de compte PHPfrance

31 mars 2019, 12:12

Je ne sais pas pourquoi mais
$_GET['liste_arbitre']
ne fonctionne pas . :/

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8108 Messages

31 mars 2019, 20:02

Je ne sais pas pourquoi mais
$_GET['liste_arbitre']
ne fonctionne pas . :/
Parce que ton formulaire est envoyé en POST et non pas en GET :

Code : Tout sélectionner

<form method="POST" action="form/info_arbitre.php"> <SELECT name="liste_arbitre" onchange='submit()'>

Tu peux faire un var_dump($_GET) ou un var_dump($_POST) pour voir toutes les données reçues en GET ou en POST
Quand tout le reste a échoué, lisez le mode d'emploi...

Mrus
Invité n'ayant pas de compte PHPfrance

01 avr. 2019, 11:56

J'ai beau mettre la même méthode partout, sa ne résout pas le problème :|

Mrus
Invité n'ayant pas de compte PHPfrance

01 avr. 2019, 12:17

En tout cas en method post comme get, liste_arbitre continue de faire défaut et je ne sais pas pourquoi :(...

Mammouth du PHP | 1531 Messages

01 avr. 2019, 15:48

fait un var_dump($_GET) ou un var_dump($_POST) pour voir ce que tu obtiens

si tu passe en GET, tu peux vérifier manuellement dans l'url que la pramètre est bien passé ou non

PS attention que si aucun formulaire n'est envoyé juste avant l'affichage, $_POST et_GET seront vide
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie

Mrus
Invité n'ayant pas de compte PHPfrance

01 avr. 2019, 17:54

Je ne vois pas trop comment utiliser le var_dump mais en GET l'url affiche bien /info_arbitre.php?liste_arbitre=1 jusque là ça fonctionne, mais lorsque je sélectionne un match, l'url devient : /info_arbitre.php?liste_match=4, mais plus aucun signe de liste_arbitre du coup.

Mrus
Invité n'ayant pas de compte PHPfrance

01 avr. 2019, 18:08

D'ailleurs sauriez vous m'expliquez pour quoi l'url afficher est : /info_arbitre.php?liste_match=4 et non pas /info_convocation.php?liste_match=4 ?

Mrus
Invité n'ayant pas de compte PHPfrance

01 avr. 2019, 18:34

Bon en fin de compte mon php à fini par fonctionnée, il me manquais la fermeture de la balise
</form>
^^"""