Page 1 sur 1

Problème syntaxe PHP pour requête SQL

Posté : 22 janv. 2015, 16:23
par jasinskimathieu
Bonjour à tous,

Je tiens à vous remercier à l'avance pour l'aide que vous pourriez m'apporter.

J'ai réalisé une requête sous PHPMyAdmin pour extraire des données en faisant de multiples jointures. Voici la requête :
SELECT t_provinces.INDEX_PROVINCES, t_dir_fonct.FONCTION AS fonction, t_clubs1.INDICE, t_clubs1.CLUB, t_affilies_af_frbtt.NOM AS nom_joueur, t_affilies_af_frbtt.PRENOM, t_affilies_af_frbtt.ADRESSE, t_affilies_af_frbtt.CP, t_affilies_af_frbtt.LOCALITE, t_affilies_af_frbtt.TEL, t_affilies_af_frbtt.FAX, t_affilies_af_frbtt.GSM, t_affilies_af_frbtt.MAIL
FROM t_dir_fonct
INNER JOIN t_affilies_af_frbtt ON t_dir_fonct.NUM_INDEX = t_affilies_af_frbtt.NUM_INDEX
INNER JOIN t_clubs1 ON t_affilies_af_frbtt.ID_CLUB = t_clubs1.INDEX_CLUBS
INNER JOIN t_provinces ON t_clubs1.INDEX_PROVINCES = t_provinces.INDEX_PROVINCES
WHERE t_provinces.INDEX_PROVINCES =2 AND fonction =  'Secrétaire'
Quand je veux la "convertir en PHP" je le fais de cette manière :
	$recup_secretaire_club_r = $bdd->prepare('SELECT t_provinces.INDEX_PROVINCES, t_dir_fonct.FONCTION AS fonction, t_clubs1.INDICE, t_clubs1.CLUB, t_affilies_af_frbtt.NOM AS nom_joueur, t_affilies_af_frbtt.PRENOM, t_affilies_af_frbtt.ADRESSE, t_affilies_af_frbtt.CP, t_affilies_af_frbtt.LOCALITE, t_affilies_af_frbtt.TEL, t_affilies_af_frbtt.FAX, t_affilies_af_frbtt.GSM, t_affilies_af_frbtt.MAIL
	FROM t_dir_fonct
		INNER JOIN t_affilies_af_frbtt ON t_dir_fonct.NUM_INDEX = t_affilies_af_frbtt.NUM_INDEX
		INNER JOIN t_clubs1 ON t_affilies_af_frbtt.ID_CLUB = t_clubs1.INDEX_CLUBS
		INNER JOIN t_provinces ON t_clubs1.INDEX_PROVINCES = t_provinces.INDEX_PROVINCES
			WHERE t_provinces.INDEX_PROVINCES=2 AND fonction=?
       ');
	$recup_secretaire_club_r->execute(array("Secrétaire"));
	while($recup_secretaire_club = $recup_secretaire_club_r->fetch())
	{
		echo $recup_secretaire_club['nom_joueur']. "<br/>";
	}
Cependant, rien ne s'affiche sur ma page php et aucune erreur non plus.. La connexion à ma DB est correcte vu que mes autre requêtes fonctionnent. Pourriez-vous m'éclaircir ? Merci beaucoup !!

Re: Problème syntaxe PHP pour requête SQL

Posté : 22 janv. 2015, 19:15
par Elie
Il faut donner un nom a ton execute pour l'utilisé sur le fetch
$recup_secretaire_club_r = $bdd->prepare('SELECT t_provinces.INDEX_PROVINCES, t_dir_fonct.FONCTION AS fonction, t_clubs1.INDICE, t_clubs1.CLUB, t_affilies_af_frbtt.NOM AS nom_joueur, t_affilies_af_frbtt.PRENOM, t_affilies_af_frbtt.ADRESSE, t_affilies_af_frbtt.CP, t_affilies_af_frbtt.LOCALITE, t_affilies_af_frbtt.TEL, t_affilies_af_frbtt.FAX, t_affilies_af_frbtt.GSM, t_affilies_af_frbtt.MAIL
        FROM t_dir_fonct
                INNER JOIN t_affilies_af_frbtt ON t_dir_fonct.NUM_INDEX = t_affilies_af_frbtt.NUM_INDEX
                INNER JOIN t_clubs1 ON t_affilies_af_frbtt.ID_CLUB = t_clubs1.INDEX_CLUBS
                INNER JOIN t_provinces ON t_clubs1.INDEX_PROVINCES = t_provinces.INDEX_PROVINCES
                        WHERE t_provinces.INDEX_PROVINCES=2 AND fonction=?
       ');
        $req = $recup_secretaire_club_r->execute(array("Secrétaire"));
        while($recup_secretaire_club = $req->fetch())
        {
                echo $recup_secretaire_club['nom_joueur']. "<br/>";
        }

Re: Problème syntaxe PHP pour requête SQL

Posté : 23 janv. 2015, 16:58
par jasinskimathieu
Avec ce code :
	$recup_secretaire_club_r = $bdd->prepare('SELECT t_provinces.INDEX_PROVINCES, t_dir_fonct.FONCTION, t_clubs1.INDICE, t_clubs1.CLUB, t_affilies_af_frbtt.NOM AS nom_joueur, t_affilies_af_frbtt.PRENOM, t_affilies_af_frbtt.ADRESSE, t_affilies_af_frbtt.CP, t_affilies_af_frbtt.LOCALITE, t_affilies_af_frbtt.TEL, t_affilies_af_frbtt.FAX, t_affilies_af_frbtt.GSM, t_affilies_af_frbtt.MAIL
	FROM t_dir_fonct
		INNER JOIN t_affilies_af_frbtt ON t_dir_fonct.NUM_INDEX = t_affilies_af_frbtt.NUM_INDEX
		INNER JOIN t_clubs1 ON t_affilies_af_frbtt.ID_CLUB = t_clubs1.INDEX_CLUBS
		INNER JOIN t_provinces ON t_clubs1.INDEX_PROVINCES = t_provinces.INDEX_PROVINCES
			WHERE t_dir_fonct.FONCTION=?
       ');
	$req = $recup_secretaire_club_r->execute('Secrétaire');
	while($recup_secretaire_club = $req->fetch())
	{
		echo $recup_secretaire_club['nom_joueur']. "<br/>";
	}
J"obtiens les erreurs suivantes :
( ! ) Warning: PDOStatement::execute() expects parameter 1 to be array, string given in C:\wamp\www\aftt\wp-content\themes\zeedynamic\page-197.php on line 40
( ! ) Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\aftt\wp-content\themes\zeedynamic\page-197.php on line 41
la ligne 40 est celle qui commence par '$req'.

Merci de l'aide

Re: Problème syntaxe PHP pour requête SQL

Posté : 23 janv. 2015, 17:01
par jasinskimathieu
Petite correction où j'avais oublié l'array
	$recup_secretaire_club_r = $bdd->prepare('SELECT t_provinces.INDEX_PROVINCES, t_dir_fonct.FONCTION, t_clubs1.INDICE, t_clubs1.CLUB, t_affilies_af_frbtt.NOM AS nom_joueur, t_affilies_af_frbtt.PRENOM, t_affilies_af_frbtt.ADRESSE, t_affilies_af_frbtt.CP, t_affilies_af_frbtt.LOCALITE, t_affilies_af_frbtt.TEL, t_affilies_af_frbtt.FAX, t_affilies_af_frbtt.GSM, t_affilies_af_frbtt.MAIL
	FROM t_dir_fonct
		INNER JOIN t_affilies_af_frbtt ON t_dir_fonct.NUM_INDEX = t_affilies_af_frbtt.NUM_INDEX
		INNER JOIN t_clubs1 ON t_affilies_af_frbtt.ID_CLUB = t_clubs1.INDEX_CLUBS
		INNER JOIN t_provinces ON t_clubs1.INDEX_PROVINCES = t_provinces.INDEX_PROVINCES
			WHERE t_dir_fonct.FONCTION=?
       ');
	$req = $recup_secretaire_club_r->execute(array('Secrétaire'));
	while($recup_secretaire_club = $req->fetch())
	{
		echo $recup_secretaire_club['nom_joueur']. "<br/>";
	}
Mais cette erreur s'affiche ...
( ! ) Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\aftt\wp-content\themes\zeedynamic\page-197.php on line 41

Re: Problème syntaxe PHP pour requête SQL

Posté : 23 janv. 2015, 18:57
par Elie
$recup_secretaire_club_r = $bdd->prepare('SELECT t_provinces.INDEX_PROVINCES, t_dir_fonct.FONCTION, t_clubs1.INDICE, t_clubs1.CLUB, t_affilies_af_frbtt.NOM AS nom_joueur, t_affilies_af_frbtt.PRENOM, t_affilies_af_frbtt.ADRESSE, t_affilies_af_frbtt.CP, t_affilies_af_frbtt.LOCALITE, t_affilies_af_frbtt.TEL, t_affilies_af_frbtt.FAX, t_affilies_af_frbtt.GSM, t_affilies_af_frbtt.MAIL
        FROM t_dir_fonct
                INNER JOIN t_affilies_af_frbtt ON t_dir_fonct.NUM_INDEX = t_affilies_af_frbtt.NUM_INDEX
                INNER JOIN t_clubs1 ON t_affilies_af_frbtt.ID_CLUB = t_clubs1.INDEX_CLUBS
                INNER JOIN t_provinces ON t_clubs1.INDEX_PROVINCES = t_provinces.INDEX_PROVINCES
                        WHERE t_dir_fonct.FONCTION=?
       ');
        $recup_secretaire_club_r->execute(array('Secrétaire'));
        while($recup_secretaire_club = $recup_secretaire_club_r->fetch())
        {
                echo $recup_secretaire_club['nom_joueur']. "<br/>";
        }
Je me suis embrouillé dans les noms de variables trop longue

Re: Problème syntaxe PHP pour requête SQL

Posté : 23 janv. 2015, 23:54
par jasinskimathieu
Problème résolu ! Merci pour le code, plus d'erreurs, mais rien ne s'affichait.. Etant donné que la DB est en latin1_swedish_ci j'ai utilisé ceci :
        $recup_secretaire_club_r->execute(array(utf8_decode("Secrétaire")));
Merci pour l'aide apportée