[RESOLU] Problème syntaxe PHP pour requête SQL

jasinskimathieu
Invité n'ayant pas de compte PHPfrance

22 janv. 2015, 16:23

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 !!

Mammouth du PHP | 1339 Messages

22 janv. 2015, 19:15

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/>";
        }
Bon sinon tu me fais un message privé et on se fait un TeamViewer

jasinskimathieu
Invité n'ayant pas de compte PHPfrance

23 janv. 2015, 16:58

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

jasinskimathieu
Invité n'ayant pas de compte PHPfrance

23 janv. 2015, 17:01

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

Mammouth du PHP | 1339 Messages

23 janv. 2015, 18:57

$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
Bon sinon tu me fais un message privé et on se fait un TeamViewer

jasinskimathieu
Invité n'ayant pas de compte PHPfrance

23 janv. 2015, 23:54

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