Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/06/2011, 15h27   #1
Invité de passage
 
Inscription : juin 2011
Messages : 13
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 13
Points : 0
Points : 0
Par défaut Problème script affichage base de données

Bonjour tout le monde,

J'ai une base de données mysql où sont enregistrées des références de livres (titre,auteur,éditeur,etc.). Pour afficher mes données à l'écran, j'ai fait un tableau, chaque colonne correspondant à un champ de la base de données. J'ai un formulaire html avec champs "titre","auteur","editeur","genre" où l'utilisateur peut entrer sa recherche soit par nom d'auteur, soit part titre, soit par éditeur, soit par genre. J'ai fait un script PHP avec les requêtes mysql pour sortir les données demandées par l'utilisateur. Or j'ai un petit souci : alors que je voudrais que toutes les données d'un même critère soient dans le même tableau, elles se mettent chacune dans des tableaux différents. Je m'explique : si par exemple l'utilisateur veut sortir tous les livres d'un même auteur, il remplit le champ "auteur". Et au lieu que tous les livres de cet auteur soient dans le même tableau, il y a un tableau par livre de cet auteur. Cela fait 2 jours que je planche là-dessus et que je triture mon code dans tous les sens, sans succès. Il n'y a pas de parse error, donc il ne s'agit pas d'une erreur de syntaxe. Mon code doit être faux, mais je ne vois pas où ; seul je n'y arrive pas .
Est-ce que quelqu'un aurait la gentillesse de regarder mon code php et me dire quelles corrections je dois apporter ?

Voici mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
<?php
 
	/*Connexion au serveur :*/
	$id_sql=mysql_connect("127.0.0.1","user","password") OR die ('Erreur de connexion'.mysql_error());
 
	/*Connexion à la base de données "bibliotheque" :*/
	$ok=mysql_select_db("bibliotheque",$id_sql) OR die ('Erreur de sélection'.mysql_error());
 
	/*Si le champ "auteur" est rempli :*/
	if(isset($_POST['auteur']))
	{
		$sql='SELECT * FROM livres WHERE auteur="'.$_POST['auteur'].'"';
		$req=mysql_query($sql) OR die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
		while($tableau=mysql_fetch_array($req))
		{
			echo '<body bgcolor="#ffeecc"><br><br>
					<h2><center>Auteur demand&eacute;&nbsp;:&nbsp;<i>'.$_POST['auteur'].'</i></center></h2>
					<table border="1" cellpadding="10" cellspacing="0" width="90%" align="center"> 
						<tr>
							<th width="500">Titre</th>
							<th width="500">Auteur</th>
							<th width="500">Editeur</th>
							<th width="150">Genre</th>
							<th width="500">R&eacute;sum&eacute;</th>
						</tr>
						<tr>
							<td align="center" style="font-size:11pt; font-weight:normal">"'.$tableau['titre'].'"</td>
							<td align="center" style="font-size:11pt; font-weight:bold">'.$_POST['auteur'].'</td>
							<td align="center" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['editeur'].'</td>
							<td align="center" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['genre'].$tableau['autre_genre'].'</td>
							<td align="justify" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['resume'].'</td>
						</tr>
					</table>';
			}	
 
		}
C'est une partie du code ; j'ai ensuite un "if(isset($_POST)" par champ, puis à la fin je ferme la connexion au serveur mysql.

Je vous remercie d'avance pour l'aide apportée.
sam86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 15h40   #2
Futur Membre du Club
 
Femme
Développeur Web
Inscription : janvier 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2011
Messages : 16
Points : 18
Points : 18
Si j'ai bien compris tu veux un tableau par auteur avec une ligne par livre ?
Il suffit d'afficher le début du tableau html (avec le nom de l'auteur) avant de parcourir les livres (avec le while).

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
if(isset($_POST['auteur']))
{
	$sql='SELECT * FROM livres WHERE auteur="'.$_POST['auteur'].'"';
	$req=mysql_query($sql) OR die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
    if(mysql_num_rows($req)>0)
    {
        echo '<body bgcolor="#ffeecc"><br><br>
    				<h2><center>Auteur demand&eacute;&nbsp;:&nbsp;<i>'.$_POST['auteur'].'</i></center></h2>
    				<table border="1" cellpadding="10" cellspacing="0" width="90%" align="center"> 
    					<tr>
    						<th width="500">Titre</th>
    						<th width="500">Auteur</th>
    						<th width="500">Editeur</th>
    						<th width="150">Genre</th>
    						<th width="500">R&eacute;sum&eacute;</th>
    					</tr>  ';
 
    	while($tableau=mysql_fetch_array($req))
    	{
    		echo '<tr>
    						<td align="center" style="font-size:11pt; font-weight:normal">"'.$tableau['titre'].'"</td>
    						<td align="center" style="font-size:11pt; font-weight:bold">'.$_POST['auteur'].'</td>
    						<td align="center" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['editeur'].'</td>
    						<td align="center" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['genre'].$tableau['autre_genre'].'</td>
    						<td align="justify" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['resume'].'</td>
    					</tr>';
 
    	}
        echo			'</table>';
    }
}
La condition
Code :
if(mysql_num_rows($req)>0)
permet de ne pas afficher le tableau de l'auteur s'il n' a pas de livre.
ninog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 15h42   #3
Membre expérimenté
 
Avatar de amoiraud
 
Homme Adrien
Développeur Web
Inscription : octobre 2006
Messages : 405
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2006
Messages : 405
Points : 531
Points : 531
Envoyer un message via MSN à amoiraud
Salut,
Normal qu'il y ai un tableau par livre tu déclare ton tableau dans la boucle while, sors simplement la balise table de ta boucle et le premier <tr> avec les titres des champs
amoiraud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 16h40   #4
Invité de passage
 
Inscription : juin 2011
Messages : 13
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 13
Points : 0
Points : 0
Citation:
Envoyé par ninog Voir le message
Si j'ai bien compris tu veux un tableau par auteur avec une ligne par livre ?
Il suffit d'afficher le début du tableau html (avec le nom de l'auteur) avant de parcourir les livres (avec le while).
Un grand merci ninog de t'être intéressé à mon cas : ÇA MARCHE ! Tu me sauves la vie ! Depuis le temps que je sèche là-dessus... J'ai enfin tous les livres d'un même auteur rassemblés en un seul tableau. Mais j'ai un autre problème, je ne sais pas si tu peux encore m'aider : après chaque tableau, j'ai systématiquement un tableau "genre" qui s'affiche, avec une dizaine de livres qui ne sont pas forcément les 10 premiers de la base de données, et avec des genres mélangés. Exemple : je demande "Emile Zola" j'ai le tableau avec tous les livres de cet auteur, mais en-dessous j'ai un 2e tableau, "genre" qui ne correspond à rien et qui est totalement indésirable. Et pour tous les champs c'est pareil.

Je mets l'intégralité de mon code cette fois :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
 
<?php
 
	/*Connexion au serveur :*/
	$id_sql=mysql_connect("127.0.0.1","user","password") OR die ('Erreur de connexion'.mysql_error());
 
	/*Connexion à la base de données "bibliotheque" :*/
	$ok=mysql_select_db("bibliotheque",$id_sql) OR die ('Erreur de sélection'.mysql_error());
 
	/*Si le champ "auteur" est rempli :*/
	if(isset($_POST['auteur']))
	{
		$sql='SELECT * FROM livres WHERE auteur="'.$_POST['auteur'].'"';
		$req=mysql_query($sql) OR die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
		if(mysql_num_rows($req)>0)
    {
			echo '<body bgcolor="#ffeecc"><br><br>
					<h2><center>Auteur demand&eacute;&nbsp;:&nbsp;<i>'.$_POST['auteur'].'</i></center></h2>
					<table border="1" cellpadding="10" cellspacing="0" width="90%" align="center"> 
						<tr>
							<th width="500">Titre</th>
							<th width="500">Auteur</th>
							<th width="500">Editeur</th>
							<th width="150">Genre</th>
							<th width="500">R&eacute;sum&eacute;</th>
						</tr>';
 
			while($tableau=mysql_fetch_array($req))
    	{
    		echo '<tr>	
							<td align="center" style="font-size:11pt; font-weight:normal">"'.$tableau['titre'].'"</td>
							<td align="center" style="font-size:11pt; font-weight:bold">'.$_POST['auteur'].'</td>
							<td align="center" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['editeur'].'</td>
							<td align="center" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['genre'].$tableau['autre_genre'].'</td>
							<td align="justify" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['resume'].'</td>
						</tr>';
			}
			echo '</table>';
			}	
 
		}
 
		/*Si le champ "titre" est rempli :*/
		if(isset($_POST['titre']))
		{
			$sql='SELECT * FROM livres WHERE titre="'.$_POST['titre'].'"';
			$req=mysql_query($sql) OR die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
			if(mysql_num_rows($req)>0) 
			{
				echo '<body bgcolor="#ffeecc"><br><br>
						<h2><center>Livres demand&eacute;s&nbsp;:</center></h2>
						<table border="1" cellpadding="10" cellspacing="0" width="90%" align="center"> 
							<tr>
								<th width="500">Titre</th>
								<th width="500">Auteur</th>
								<th width="500">Editeur</th>
								<th width="150">Genre</th>
								<th width="500">R&eacute;sum&eacute;</th>
							</tr>';
 
					while($tableau=mysql_fetch_array($req))
    	{
    		echo '<tr>		
								<td align="center" style="font-size:11pt; font-weight:bold">"'.$_POST['titre'].'"</td>
								<td align="center" style="font-size:11pt; font-weight:normal">'.$tableau['auteur'].'</td>
								<td align="center" style="font-size:11pt; font-weight:normal">'.$tableau['editeur'].'</td>
								<td align="center" style="font-size:11pt; font-weight:normal">'.$tableau['genre'].$tableau['autre_genre'].'</td>
								<td align="justify" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['resume'].'</td>
							</tr>';
					}
				echo	'</table>';
			}
		}
 
		/*Si le champ "éditeur" est rempli :*/	
		if(isset($_POST['editeur']))
		{
			$sql='SELECT * FROM livres WHERE editeur="'.$_POST['editeur'].'"';
			$req=mysql_query($sql) OR die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
			if(mysql_num_rows($req)>0) 
			{
				echo '<body bgcolor="#ffeecc"><br><br>
						<h2><center>Editeur demand&eacute;&nbsp;:&nbsp;<i>'.$_POST['editeur'].'</i></center></h2>
						<table border="1" cellpadding="10" cellspacing="0" width="90%" align="center"> 
							<tr>
								<th width="500">Titre</th>
								<th width="500">Auteur</th>
								<th width="500">Editeur</th>
								<th width="150">Genre</th>
								<th width="500">R&eacute;sum&eacute;</th>
							</tr>';
 
			while($tableau=mysql_fetch_array($req))
    	{
    		echo '<tr>
								<td align="center" style="font-size:11pt; font-weight:normal">"'.$tableau['titre'].'"</td>
								<td align="center" style="font-size:11pt; font-weight:normal">'.$tableau['auteur'].'</td>
								<td align="center" style="font-size:11pt; font-weight:bold">&nbsp;'.$_POST	['editeur'].'</td>
								<td align="center" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['genre'].$tableau['autre_genre'].'</td>
								<td align="justify" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['resume'].'</td>
							</tr>';
				}
				echo	'</table>';	
			}
		}
 
		/*Si le champ "genre" est rempli :*/
		if(isset($_POST['genre']))
		{
			$sql='SELECT * FROM livres WHERE genre="'.$_POST['genre'].'"';
			$req=mysql_query($sql) OR die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
			if(mysql_num_rows($req)>0) 
			{
				echo '<body bgcolor="#ffeecc"><br><br>
						<h2><center>Genre demand&eacute;&nbsp;:&nbsp;<i>'.$_POST['genre'].'</i></center></h2>
						<table border="1" cellpadding="10" cellspacing="0" width="90%" align="center"> 
							<tr>
								<th width="500">Titre</th>
								<th width="500">Auteur</th>
								<th width="500">Editeur</th>
								<th width="150">Genre</th>
								<th width="500">R&eacute;sum&eacute;</th>
							</tr>';
 
			while($tableau=mysql_fetch_array($req))
    	{
    		echo '<tr>							
								<td align="center" style="font-size:11pt; font-weight:normal">"'.$tableau['titre'].'"</td>
								<td align="center" style="font-size:11pt; font-weight:normal">'.$tableau['auteur'].'</td>
								<td align="center" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['editeur'].'</td>
								<td align="center" style="font-size:11pt; font-weight:bold">&nbsp;'.$_POST['genre'].'</td>
								<td align="justify" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['resume'].'</td>
							</tr>';
					}
					echo	'</table>';
			}
		}
	/*Fermeture de la connexion :*/				
	mysql_close();
?>
J'espère que tu pourras encore m'aider (ou quelqu'un d'autre).
D'avance un grand merci.
sam86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 17h49   #5
Futur Membre du Club
 
Femme
Développeur Web
Inscription : janvier 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2011
Messages : 16
Points : 18
Points : 18
Je ne sais pas si c'est ça mais sache que isset vérifie si la variable existe, pas si elle est remplie donc avec
Code :
if(isset($_POST['genre']))
la condition est exécutée même si la variable genre est vide.

La requête
Code :
SELECT * FROM livres WHERE genre=""
est alors exécutée et va te retourner tous les livres sans genre.

Pour éviter cela tu peux en plus tester la variable avec empty pour vérifier qu'elle n'est pas vide :
Code :
if(isset($_POST['genre']) && !empty($_POST['genre']))
ninog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 18h41   #6
Invité de passage
 
Inscription : juin 2011
Messages : 13
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 13
Points : 0
Points : 0
Merci encore ninog. Tu m'aides vraiment beaucoup et ça me permet de décoincer mon travail. C'est pas facile de débuter dans un langage. C'est ma première application web (mon baptême du web !). C'est pourquoi je nage un peu dans la semoule.
Si je peux me permettre de te demander encore quelquechose ? Dans mon formulaire html j'ai des boutons radio pour que l'utilisateur puisse cocher le genre de son livre. Mais au cas où le genre ne serait pas dans la liste, il y a un champ de saisie "text" qui s'appelle "autre_genre" dans lequel l'utilisateur peut entrer le genre de son livre.
Mon script php actuel renvoie les genres entrés par les boutons radios, mais pas ceux entrés par le champ de saisie "autre_genre". Pourtant j'ai rajouté une partie "if(isset($_POST['autre_genre'])" à la suite du "if(isset($_POST['genre'])". J'avais essayé aussi de faire "(if(isset($_POST['genre']) || ($_POST['autre_genre'])))", mais ça ne marche pas, ça ne retourne jamais les genres entrés par le champ de saisie.

Voici le code que j'ai fait (et qui doit être faux...) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
/*Si le champ "genre" est rempli :*/
		if(isset($_POST['genre']) && !empty($_POST['genre']))
		{
			$sql='SELECT titre,auteur,editeur,resume FROM livres WHERE genre="'.$_POST['genre'].'"';
			$req=mysql_query($sql) OR die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
			if(mysql_num_rows($req)>0) 
			{
				echo '<body bgcolor="#ffeecc"><br><br>
						<h2><center>Genre demand&eacute;&nbsp;:&nbsp;<i>'.$_POST['genre'].'</i></center></h2>
						<table border="1" cellpadding="10" cellspacing="0" width="90%" align="center"> 
							<tr bgcolor="#f15609">
								<th width="500">Titre</th>
								<th width="500">Auteur</th>
								<th width="500">Editeur</th>
								<th width="500">R&eacute;sum&eacute;</th>
							</tr>';
 
			while($tableau=mysql_fetch_array($req))
    	{
    		echo '<tr>							
								<td align="center" style="font-size:11pt; font-weight:bold">"'.$tableau['titre'].'"</td>
								<td align="center" style="font-size:11pt; font-weight:normal">'.$tableau['auteur'].'</td>
								<td align="center" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['editeur'].'</td>
								<td align="justify" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['resume'].'</td>
							</tr>';
					}
					echo	'</table>';
			}
		}
 
 
		/*Si le champ "autre_genre" est rempli :*/
		if(isset($_POST['autre_genre']) && !empty($_POST['autre_genre']))
		{
			$sql='SELECT titre,auteur,editeur,resume FROM livres WHERE genre="'.$_POST['autre_genre'].'"';
			$req=mysql_query($sql) OR die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
			if(mysql_num_rows($req)>0) 
			{
				echo '<body bgcolor="#ffeecc"><br><br>
						<h2><center>Genre demand&eacute;&nbsp;:&nbsp;<i>'.$_POST['autre_genre'].'</i></center></h2>
						<table border="1" cellpadding="10" cellspacing="0" width="90%" align="center"> 
							<tr bgcolor="#f15609">
								<th width="500">Titre</th>
								<th width="500">Auteur</th>
								<th width="500">Editeur</th>
								<th width="500">R&eacute;sum&eacute;</th>
							</tr>';
 
			while($tableau=mysql_fetch_array($req))
    	{
    		echo '<tr>							
								<td align="center" style="font-size:11pt; font-weight:bold">"'.$tableau['titre'].'"</td>
								<td align="center" style="font-size:11pt; font-weight:normal">'.$tableau['auteur'].'</td>
								<td align="center" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['editeur'].'</td>
								<td align="justify" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['resume'].'</td>
							</tr>';
					}
					echo	'</table>';
			}
		}		
 
	/*Fermeture de la connexion :*/				
	mysql_close();
?>
J'espère ne pas abuser de ta patience, et que tu voudras bien encore m'aider. Merci d'avance.
sam86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 10h24   #7
Futur Membre du Club
 
Femme
Développeur Web
Inscription : janvier 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2011
Messages : 16
Points : 18
Points : 18
Le problème c'est que ta condition pour autre_genre est dans le
Code :
if(isset($_POST['genre']) && !empty($_POST['genre']))
or ce code n'est pas exécuté s'il n'y a pas une case "genre" sélectionnée.

Il serait plus logique de faire ceci :

Code :
1
2
3
4
5
6
7
8
/*Si le champ "genre" est rempli :*/
if(isset($_POST['genre']) && !empty($_POST['genre']))
{
    // ...			
} elseif(isset($_POST['autre_genre']) && !empty($_POST['autre_genre'])) /*Sinon si le champ "autre_genre" est rempli :*/
{
    // ...
}
Bon courage tu y es presque !
ninog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 11h10   #8
Invité de passage
 
Inscription : juin 2011
Messages : 13
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 13
Points : 0
Points : 0
J'ai essayé de modifier mon code mais ça ne fonctionne pas plus. En fait je ne sais pas trop où placer le "elseif". Voilà ce que j'ai fait :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
/*Si le champ "genre" est rempli :*/
		if(isset($_POST['genre']) && !empty($_POST['genre']))
		{
			$sql='SELECT titre,auteur,editeur,resume FROM livres WHERE genre="'.$_POST['genre'].'"';
			$req=mysql_query($sql) OR die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
		}
		elseif(isset($_POST['autre_genre']) && !empty($_POST['autre_genre'])) 
		{			
			$sql2='SELECT titre,auteur,editeur,resume FROM livres WHERE genre="'.$_POST['autre_genre'].'"';
			$req=mysql_query($sql2) OR die ('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error())
 
			if(mysql_num_rows($req)>0) 
			{
				echo '<body bgcolor="#ffeecc"><br><br>
						<h2><center>Genre demand&eacute;&nbsp;:&nbsp;<i>'.$_POST['genre'].'</i></center></h2>
						<table border="1" cellpadding="10" cellspacing="0" width="90%" align="center" style="border-collapse:collapse; border:solid black 2px;"> 
							<tr bgcolor="#f15609">
								<th width="500">Titre</th>
								<th width="500">Auteur</th>
								<th width="500">Editeur</th>
								<th width="500">R&eacute;sum&eacute;</th>
							</tr>';
 
				while($tableau=mysql_fetch_array($req))
    			{
    				echo '<tr>							
								<td align="center" style="font-size:11pt; font-weight:bold">"'.$tableau['titre'].'"</td>
								<td align="center" style="font-size:11pt; font-weight:normal">'.$tableau['auteur'].'</td>
								<td align="center" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['editeur'].'</td>
								<td align="justify" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['resume'].'</td>
							</tr>';
				}
					echo	'</table>';
			}
		}
De plus, j'ai oublié de préciser, qu'il faut que les valeurs de "autre_genre" s'inscrivent dans la même colonne que celle des données "genre". En effet dans la base de données je n'ai créé qu'une seule colonne "genre", et les valeurs de "genre" et "autre_genre" s'y inscrivent bien. Mais lorsque je veux récupérer dans mon tableau formaté les valeurs "autre_genre" dans la colonne "genre" (ça doit être transparent pour l'utilisateur) là ça ne fonctionne plus.

Merci de m'aider.
sam86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 14h41   #9
Futur Membre du Club
 
Femme
Développeur Web
Inscription : janvier 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2011
Messages : 16
Points : 18
Points : 18
Avec ton code lorsqu'un genre est sélectionné tu fais la requête mais tu n'exploites pas le résultat qui est affiché uniquement si la condition autre_genre est vérifiée.
Tu dois utiliser les conditions pour différencier les requêtes mais après le traitement est le même. La meilleure solution est de stocker dans une variable le genre retenu selon les conditions :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
if(isset($_POST['genre']) && !empty($_POST['genre']))
{	
    $genre = $_POST['genre'];
} elseif(isset($_POST['autre_genre']) && !empty($_POST['autre_genre'])) 
{			
    $genre = $_POST['autre_genre'];
}
 
$sql='SELECT titre,auteur,editeur,resume FROM livres WHERE genre="'.$genre.'"';
$req=mysql_query($sql) OR die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error())
 
if(mysql_num_rows($req)>0) 
{
	echo '<body bgcolor="#ffeecc"><br><br>
			<h2><center>Genre demand&eacute;&nbsp;:&nbsp;<i>'.$genre.'</i></center></h2>
			<table border="1" cellpadding="10" cellspacing="0" width="90%" align="center" style="border-collapse:collapse; border:solid black 2px;"> 
				<tr bgcolor="#f15609">
					<th width="500">Titre</th>
					<th width="500">Auteur</th>
					<th width="500">Editeur</th>
					<th width="500">R&eacute;sum&eacute;</th>
				</tr>';
 
	while($tableau=mysql_fetch_array($req))
	{
		echo '<tr>							
					<td align="center" style="font-size:11pt; font-weight:bold">"'.$tableau['titre'].'"</td>
					<td align="center" style="font-size:11pt; font-weight:normal">'.$tableau['auteur'].'</td>
					<td align="center" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['editeur'].'</td>
					<td align="justify" style="font-size:11pt; font-weight:normal">&nbsp;'.$tableau['resume'].'</td>
				</tr>';
	}
	echo	'</table>';
}
ninog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 14h59   #10
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
à voir : Affichage de données dans un tableau HTML
dont les sections :
- IV. Affichage "en ligne" avec Base de Données
- VI. Affichage "en colonne" avec Base de Données
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 15h10   #11
Invité de passage
 
Inscription : juin 2011
Messages : 13
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 13
Points : 0
Points : 0
Ben écoute ninog j'ai essayé ton code (copié/collé), mais ça ne marche pas plus. Ça me renvoie les genres, mais toujours pas les autres genres.
sam86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 11h19   #12
Futur Membre du Club
 
Femme
Développeur Web
Inscription : janvier 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2011
Messages : 16
Points : 18
Points : 18
C'est soit l'un soit l'autre non ? S'il y a un genre ça affiche les livre de ce genre sinon s'il y a un autre genre ça affiche les livres de cet autre genre.
ninog est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h58.


 
 
 
 
Partenaires

Hébergement Web