Problème avec requète sous PDO

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème avec requète sous PDO

Re: Problème avec requète sous PDO

par evengyl » 03 avr. 2014, 16:56

j'ai quand meme tester pour être sur mais en fait dans ma répopnse après avoir fait ce que tu m'as dis ben je me retrouve avec toutes les réponse du array
regarde ce que j'ai fait et regarde la réponse :)
$menu = $bdd -> query('SELECT * FROM menu') or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$sous_menu = $bdd -> query('SELECT * FROM sous_menu') or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$donnees_sous_menu = $sous_menu->fetch();
$i = '0';

echo "<ul>";


while($donnees_menu = $menu -> fetch())
{
	$i++;
	echo "<li>";
	echo $donnees_menu['nom_onglet'];
	echo "</li>";

	if($i == $donnees_sous_menu['ID_menu'])
	{
		echo "<ul>";
		foreach($donnees_sous_menu as $affichage)
		{
			echo "<li>";
			echo $affichage['nom_onglet_sous_menu'];
			echo "</li>";
		}
		$sous_menu -> closeCursor();
		echo "</ul>";
	}	
}
$menu-> closeCursor();
echo "</ul>";


réponse :
Documentation
Photos
Videos
Contact
Boutique
1
1
5
5
b
b
<
<

Re: Problème avec requète sous PDO

par Kal747 » 03 avr. 2014, 12:53

Sisi :lol:

Tu utilise $sous_menu de cette façon :

1. $sous_menu = $bdd -> query('SELECT * FROM sous_menu') or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
2. $sous_menu['ID_menu'];

Il n'y a pas de fetch entre les 2, tu ne peux pas faire $sous_menu['ID_menu'] sur un PDOStatement, ça te renvoi l'erreur que tu as.

Je ne sais pas a quoi ressemble ta base, mais ne cherche tu pas a faire plutôt :

1. $sous_menu = $bdd -> query('SELECT * FROM sous_menu') or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
2. $donnees_sous_menu = $sous_menu -> fetch();
3. $donnees_sous_menu ['ID_menu']

?

Re: Problème avec requète sous PDO

par evengyl » 03 avr. 2014, 10:07

nn je ne pense pas car c'est une deuxième boucle qui opère pour l'affichage , donc je pense que la problème viens du fetch() , ma variable n'est pas conditionnée pour revevoir des données array , qui ne sont déclarée que à la ligne
while($donnees_sous_menu = $sous_menu -> fetch())

Re: Problème avec requète sous PDO

par Kal747 » 03 avr. 2014, 10:01

Ton erreur vient de la ligne (si je ne me trompe pas)
$sous_menu['ID_menu']
En effet la fois ou tu utilise la variable $sous_menu avant c'est pour cette ligne :
$sous_menu = $bdd -> query('SELECT * FROM sous_menu') or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
Or "PDO::query() retourne un objet PDOStatement, ou FALSE si une erreur survient.". Ce n'est en aucun cas un array.

Je pense que tu t'es trompé de variable.

Peu-etre voulais tu utiliser la variable "$donnees_menu" plutot ?

Problème avec requète sous PDO

par evengyl » 03 avr. 2014, 08:53

Voici mon petit bout de code qui doit être assez clair :)
<?php
try
    {
        $bdd = new PDO('mysql:host=localhost; dbname=madness_piercing', 'root', '');
    }
    catch (Exeption $e)
    {
        die('Erreur : ' .$e->getMessage());
    }
 
 
 
$menu = $bdd -> query('SELECT * FROM menu') or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$sous_menu = $bdd -> query('SELECT * FROM sous_menu') or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$i = '0';
$id_onglet;
echo "<ul>";
while($donnees_menu = $menu -> fetch())
{
    $i++;
    echo "<li>";
    echo $donnees_menu['nom_onglet'];
    echo "</li>";
 
    if($i == ($id_onlget = $sous_menu['ID_menu']))
    {
        echo "<ul>";
        while($donnees_sous_menu = $sous_menu -> fetch())
        {
            echo "<li>";
            echo $donnees_sous_menu['nom_onglet_sous_menu'];
            echo "</li>";
        }
        $sous_menu -> closeCursor();
        echo "</ul>";
    }
     
     
}
$menu-> closeCursor();
echo "</ul>";
?>
l'erreur est la suivante Fatal error: Cannot use object of type PDOStatement as array in C:\wamp\www\lucie\include_php\test\menu_sql.php on line 25

en fait je ne comprends pa d'ou viens l'erreur alors que je ne fais que utiliser une variable :(