par
sadeq » 21 mars 2012, 11:07
Excuse moi j'ai oublié de mettre une accolade pour le deuxième IF. Tu vois quand il y a un mélange de while et if il faut être vigilant et réviser la structure pour que tout WHILE commence par { et se termine par } et de même tout IF doit avoir ses { ... } de même tout ELSE doit commencer par { et finir par }. C'est comme ça la syntaxe.
En plus, quand un IF est imbriqué dans un WHILE (se trouve dedans) il faut d'abord terminer le IF avant de terminer le WHILE et vis-versa.
Exemple 1: Respect du WHILE:
==========================
Exemple 2: Respect du IF/ELSE:
============================
Code : Tout sélectionner
IF (condition logique) { ... traitement ...} ELSE { ... traitement ... }
Exemple 3: Imbrication du IF dans le WHILE:
======================================
Code : Tout sélectionner
WHILE (condition logique) {
..... traitement du while commence ....
IF (condition logique) { ... traitement du if ...} ELSE { ... traitement du else ... }
..... traitement du while continue ....
}
Exemple 4: Imbrication du WHILE dans le IF:
======================================
Code : Tout sélectionner
IF (condition logique) {
..... traitement du IF commence ....
WHILE (condition logique) { ... traitement du while ...}
..... traitement du IF continue ....
}
ELSE { ... traitement du else qui peut être structuré comme celui du IF etc... }
Finalement voici le corrigé de ton code:
<?php
include "includes/database.php";
print_r($_GET);
$id = $_GET['id'];
$query = "SELECT * FROM `Book`, `Publisher` WHERE Book.publisher_id = Publisher.publisher_id AND Book.book_id=$id";
//$query = "SELECT * FROM `Book` WHERE book_id=$id";
$query2 = "SELECT * FROM `Author` WHERE Author.author_id = Author.author_id=$id";
//print $query;
//print $abkg063->error;
// perform the query
$result = $abkg063->query($query);
if (mysql_num_rows($result)>0) { //nbre d'enregistrements retournés par $query
while ($row = $result->fetch_assoc()) {
echo "<h1>This works: $row[title]</h1>";
// deuxième requête
$result2 = $abkg063->query($query2);
if (mysql_num_rows($result2)>0) { //nbre d'enregistrements retournés par $query2
while ($row2 = $result2->fetch_assoc()) {
echo "<h1>This works: $row2['author']</h1>";
} //fin while pour $row2
} //fin if pour $result2
?>
<h2> this also works: <?php echo $row['title']?></h2>
<img src="/imgages/book_covers/<?php echo $row['book_id']?>.jpg" width=200 height=300 >
<?php
} //fin while pour $row
// Print out book details
echo "OK";
} //fin if pour $result
else {
// No book found with such id
echo "NOT FOUND!";
}
Je te conseille de compter les accolades ouvrantes et fermantes de ton programme et il faut que le nombre des ouvrantes soit le même que celui des fermantes et que toute accolade fermante } rencontrée ferme la première accolade ouvrante { qui la précède dans la séquence.
Je te conseille aussi d'utiliser un bon éditeur de code php qui te permettra de bien maitriser l'indentation et les blocs structurés du IF, WHILE, ...
Editeurs comme : NetBeans IDE pour PHP, Eclipse, Code Lobster pour PHP, PHPedit, ....
Excuse moi j'ai oublié de mettre une accolade pour le deuxième IF. Tu vois quand il y a un mélange de while et if il faut être vigilant et réviser la structure pour que tout WHILE commence par { et se termine par } et de même tout IF doit avoir ses { ... } de même tout ELSE doit commencer par { et finir par }. C'est comme ça la syntaxe.
En plus, quand un IF est imbriqué dans un WHILE (se trouve dedans) il faut d'abord terminer le IF avant de terminer le WHILE et vis-versa.
Exemple 1: Respect du WHILE:
==========================
[code]WHILE (condition logique) { ..... traitement .... }[/code]
Exemple 2: Respect du IF/ELSE:
============================
[code]IF (condition logique) { ... traitement ...} ELSE { ... traitement ... }[/code]
Exemple 3: Imbrication du IF dans le WHILE:
======================================
[code]WHILE (condition logique) {
..... traitement du while commence ....
IF (condition logique) { ... traitement du if ...} ELSE { ... traitement du else ... }
..... traitement du while continue ....
}[/code]
Exemple 4: Imbrication du WHILE dans le IF:
======================================
[code]IF (condition logique) {
..... traitement du IF commence ....
WHILE (condition logique) { ... traitement du while ...}
..... traitement du IF continue ....
}
ELSE { ... traitement du else qui peut être structuré comme celui du IF etc... }
[/code]
Finalement voici le corrigé de ton code:
[php]<?php
include "includes/database.php";
print_r($_GET);
$id = $_GET['id'];
$query = "SELECT * FROM `Book`, `Publisher` WHERE Book.publisher_id = Publisher.publisher_id AND Book.book_id=$id";
//$query = "SELECT * FROM `Book` WHERE book_id=$id";
$query2 = "SELECT * FROM `Author` WHERE Author.author_id = Author.author_id=$id";
//print $query;
//print $abkg063->error;
// perform the query
$result = $abkg063->query($query);
if (mysql_num_rows($result)>0) { //nbre d'enregistrements retournés par $query
while ($row = $result->fetch_assoc()) {
echo "<h1>This works: $row[title]</h1>";
// deuxième requête
$result2 = $abkg063->query($query2);
if (mysql_num_rows($result2)>0) { //nbre d'enregistrements retournés par $query2
while ($row2 = $result2->fetch_assoc()) {
echo "<h1>This works: $row2['author']</h1>";
} //fin while pour $row2
} //fin if pour $result2
?>
<h2> this also works: <?php echo $row['title']?></h2>
<img src="/imgages/book_covers/<?php echo $row['book_id']?>.jpg" width=200 height=300 >
<?php
} //fin while pour $row
// Print out book details
echo "OK";
} //fin if pour $result
else {
// No book found with such id
echo "NOT FOUND!";
}[/php]
Je te conseille de compter les accolades ouvrantes et fermantes de ton programme et il faut que le nombre des ouvrantes soit le même que celui des fermantes et que toute accolade fermante } rencontrée ferme la première accolade ouvrante { qui la précède dans la séquence.
Je te conseille aussi d'utiliser un bon éditeur de code php qui te permettra de bien maitriser l'indentation et les blocs structurés du IF, WHILE, ...
Editeurs comme : NetBeans IDE pour PHP, Eclipse, Code Lobster pour PHP, PHPedit, ....