2009-10-26 6 views
1

Je ne peux pas obtenir le code suivant pour afficher les éléments de la base de données où l'ID parent est égal à l'ID.MySQL et PHP problème d'affichage?

Voici le code ci-dessous.

// Query member data from the database and ready it for display 
$mysqli = new mysqli("localhost", "root", "", "sitename"); 
$dbc = mysqli_query($mysqli,"SELECT * FROM categories WHERE id=parent_id"); 

if (!$dbc) { 
// There was an error...do something about it here... 
print mysqli_error(); 
} 

while ($row = mysqli_fetch_assoc($dbc)) { 
echo '<li><a href="' , $row['url'] , '" title="' , $row['description'] , '">' , $row['category_name'] , '</a>'; 
    } 

Je pense que je sais ce que je fais mal comment puis-je avoir cette requête vérifier une requête précédente?

+0

Pourriez-vous nous fournir plus d'informations? Comme ce que l'exaclty ne fonctionne pas. Vous pouvez également ignorer l'instruction if dans la boucle while, car vous ne sélectionnez que les lignes où parent_id est égal à id. – svens

+0

Est-ce que les catégories ont une colonne appelée "parent_id"? ou est parent_id destiné à être un paramètre fourni à la requête? – Mikeb

+0

categories a un champ parent_id – stack

Répondre

0

Je pense que cette ligne devrait être repensée:

if ($row['parent_id'] == $row['id']) { 

la cause sont u que sa logique correcte?

+0

Ouais - vous ne montrez que des lignes où parent = id –

+0

@adam .. celui-ci m'a gratter la tête vraiment .. je veux dire que je ne comprends pas vraiment le double contrôle là-bas et la logique de la requête en premier lieu. –

1

je mettrais la requête SQL dans un var afin que vous puissiez le sortir, essayez ce directement dans la base de données pour voir s'il y a des lignes correspondantes:

$mysqli = new mysqli("localhost", "root", "", "sitename"); 
$query = "SELECT * FROM categories WHERE id=parent_id"; 
echo $query; 
0

Essayez ne faire quelque chose comme:

if ($row['parent_id'] == $row['id']) { 
    echo '<li><a href="' , $row['url'] , '" title="' , $row['description'] , '">' , $row['category_name'] , '</a>'; 
} 
else { 
    echo "there is no match!"; 
} 

Et voir si le problème est, en fait, pas dans la requête SQL, mais dans votre logique de l'application (ce qui je pense est plus likelly). Cela dit, essayez de déboguer les requêtes SQL avec phpMyAdmin. Juste postez la requête que vous voulez là et vérifiez la sortie. Si la sortie est correcte, regardez dans votre logique, si ce n'est pas dans votre requête. Essayez de diviser votre problème en plus petits morceaux, ce qui facilite grandement le débogage.

Espérons que ça aide.