alors le problème vient du fait que getidTournoi ne doit pas retourner un tableau mais une seule donnée et que getData ne doit pas prendre en paramètre un tableau.
public function getidTournoi($Nomtournoi) {
$bdd = new PDO('mysql:host=localhost;dbname=bdd','root','',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$requete = $bdd -> prepare ('SELECT id_tournoi FROM tournoi WHERE tournoi.Nom_tournoi='.$Nomtournoi.'');
$requete -> execute();
$data= $requete -> fetch();
if($data !== false){
return $data['id_tournoi']; // en supposant fetch_assoc
}else {
// traitement de l'erreur (throw exception ?) tu as l'erreur possible avec la méthode [url=http://php.net/manual/fr/pdostatement.errorinfo.php]errorInfo()[/url]
}
}
aller au passage on utilise du SQL un poil plus normé (et récent c'est sql 99, pour 1999

) en utilisant le clef join
<?php
public function getData($idTournoi)
{
$bdd = new PDO('mysql:host=localhost;dbname=bdd', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$sql = <<<sql
SELECT id_joueur, prenom_joueur FROM joueur
join joue using(id_joueur)
WHERE joue.id_tournoi=:idtournoi
sql;
$requete = $bdd -> prepare($sql);
// si l'id est bien un entier sinon change le type ou enlève le 3ème paramètre si c'est une chaine de caractères
$requete->bindParam(':idtournoi', $idTournoi, PDO::PARAM_INT);
$requete -> execute();
$dataTable = $requete -> fetchAll();
// bonne pratique
$requete->closeCursor();
return $dataTable;
}
Pense que tu peux ne faire qu'une seule connexion et passer l'objet "PDO" aux classe qui en ont besoin (au pire fait un singleton). Le but c'est ne pas à avoir à chercher cette connexion partout dans le code pour changer les info d'accès (donc évite les emmerde) et tu va aussi éviter de créer plein de connexion concurente et te faire bouler par le sgbd parce que tu ne pas en ouvrir une infinité.
@+
alors le problème vient du fait que getidTournoi ne doit pas retourner un tableau mais une seule donnée et que getData ne doit pas prendre en paramètre un tableau.
[php]public function getidTournoi($Nomtournoi) {
$bdd = new PDO('mysql:host=localhost;dbname=bdd','root','',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$requete = $bdd -> prepare ('SELECT id_tournoi FROM tournoi WHERE tournoi.Nom_tournoi='.$Nomtournoi.'');
$requete -> execute();
$data= $requete -> fetch();
if($data !== false){
return $data['id_tournoi']; // en supposant fetch_assoc
}else {
// traitement de l'erreur (throw exception ?) tu as l'erreur possible avec la méthode [url=http://php.net/manual/fr/pdostatement.errorinfo.php]errorInfo()[/url]
}
}[/php]
aller au passage on utilise du SQL un poil plus normé (et récent c'est sql 99, pour 1999 :-) ) en utilisant le clef join ;)
[php]<?php
public function getData($idTournoi)
{
$bdd = new PDO('mysql:host=localhost;dbname=bdd', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$sql = <<<sql
SELECT id_joueur, prenom_joueur FROM joueur
join joue using(id_joueur)
WHERE joue.id_tournoi=:idtournoi
sql;
$requete = $bdd -> prepare($sql);
// si l'id est bien un entier sinon change le type ou enlève le 3ème paramètre si c'est une chaine de caractères
$requete->bindParam(':idtournoi', $idTournoi, PDO::PARAM_INT);
$requete -> execute();
$dataTable = $requete -> fetchAll();
// bonne pratique
$requete->closeCursor();
return $dataTable;
}[/php]
Pense que tu peux ne faire qu'une seule connexion et passer l'objet "PDO" aux classe qui en ont besoin (au pire fait un singleton). Le but c'est ne pas à avoir à chercher cette connexion partout dans le code pour changer les info d'accès (donc évite les emmerde) et tu va aussi éviter de créer plein de connexion concurente et te faire bouler par le sgbd parce que tu ne pas en ouvrir une infinité.
@+