Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
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 09/01/2011, 15h04   #1
Invité de passage
 
Inscription : novembre 2010
Messages : 3
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 3
Points : 1
Points : 1
Par défaut affichage de données

Bonjour, je débute en php et j'ai un problème que j'arrive pas a régler.
j'ai une bases de données avec 2 tables qui sont reliée
la 1ére contient tout mes produits et la seconde contient les type de produits.
j'ai voulu afficher mes produits dans un tableau avec 4 colonnes et 2 lignes et une barre de navigation pour l'affichage page par page, sa fonctionne parfaitement comme je veux voila le screen




mon probléme c'est que lorsque je souhaite afficher mes produits par type sa fonctionne mais j'ai des erreurs du genr " Warning: mysql_result() [function.mysql-result]: Unable to jump to row 3 on MySQL result index 6 in "....

pour être encore plus claire voila le screen




et voila 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
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
 
<?php
require_once("connexionMysql.inc.php");
/* Paramètres modifiables */
		$stringQueryCount = "SELECT COUNT(*) FROM produits;"; // A adapter à votre table (on peut ajouter une close WHERE)
		if(isset($_GET['type_produit']))
$stringQueryToShow="SELECT p.photo, p.nom_produit, p.description, p.prix, p.date, t.type FROM produits as p, type_produit as t WHERE p.type_produit=t.id and type_produit=".$_GET['type_produit'] ;
else
$stringQueryToShow="SELECT p.photo, p.nom_produit, p.description, p.prix, p.date, t.type FROM produits as p, type_produit as t WHERE p.type_produit=t.id";
 
 
		$nbLines = 2; // Nombre de ligne par page
		$nbColumns = 4; // Nombre de colone par page
 
		/* Récupération du nombre de rows */
		$query_getCountMembers = mysql_query($stringQueryCount); 
		$query_getCountMembers = mysql_fetch_array($query_getCountMembers);
		$query_getCountMembers = $query_getCountMembers['COUNT(*)'];
		/* Récupération des rows dans la table */
		$query_getMembers = mysql_query($stringQueryToShow);
 
		/* Calcul du nombre de page à afficher*/
		$nbItemByPage = $nbLines*$nbColumns; 
		// On calcul le reste de la division par le nombre d'entrée dans la table et le nombre d'élément qu'on veut afficher par page
		$numberOfPages = $query_getCountMembers % $nbItemByPage; 
		if($numberOfPages>0)
		// Si notre reste est supérieur à 0
		{
			// On calcul le nombre à ajouter pour avoir un multiple du nombre d'élément par page
			$numberOfPages = $nbItemByPage - $numberOfPages;
		}
		// On termine :(le nombre d'entré + le nombre à ajouter pour avoir notre multiple) / le nombre d'élement par page
		$numberOfPages = ($query_getCountMembers + $numberOfPages)/$nbItemByPage;
 
 
//---requete du menu de selection type produits---//
$requete2="SELECT id,type  FROM type_produit ";
$resultat2=mysql_query($requete2);
?>
 
<?php
 
	/* Creation des tableaux */
		$partNumber = 1; // On initialise cette variable pour nommer les div : Part1, Part2, etc.
		for($min = 0; $min < $query_getCountMembers; $min = $min+$nbItemByPage)
		{
			// On commence par créer une div contenant un tableau. Chaque fois qu'on reviendra dans la boucle
			// une nouvelle div et un nouveau tableau seront créés. Notre fonction javascript modifiera la propriété 
			// CSS Display pour afficher ou non le tableau choisi
 
			// Vous pouvez modifier la WIDTH dans <table width="100%"> par une autre valeur de votre choix
			echo '
			<div id="Part'. $partNumber .'" style="display:none;">
			<table width="100%">
			';
			// On incrémente la variable $partNumber pour afficher un nouveau numéro lorsqu'on repasse dans la première boucle for
			$partNumber++; 							
			for($a=$min; $a<($min+$nbItemByPage); $a++)
			// La seconde boucle for permet de gérer la création de nos lignes en fonction du paramètre $nbLines
			{
				echo '<tr>';
				for($b=1; $b<=$nbColumns; $b++)
				// La troisième boucle for permet de gérer la création de nos colones en fonction du paramètre $nbColumns
				{
					if($a >= $query_getCountMembers)
					// Si on a dépassé le nombre d'élément contenu dans la table ouvre et ferme nos balises <td> pour uniformiser le tableau
					// Ce qui arrivera si $query_getCountMembers n'est pas un multiple de $nbItemByPage
					// N.B. : Des lignes entières vides ne prennent pas d'espace sur la page web.
					{
						echo '<td></td>';
					}
					else
					{
						echo '
						<td>';
						/* Affichage personnalisé de vos données récupérées*/
						// Dans cette partie vous choisissez comment va être affiché les éléments dans le tableau.
						// La condition principale pour afficher correctement vos éléments est d'utiliser la syntaxe suivante :
						// --> mysql_result($query_getMembers, $a, 'nom_de_votre_colone')
						// !!! 	NE MODIFIEZ RIEN D'AUTRE QUE LE PARAMETRE 'nom_de_votre_colone' !!!
 
						///Exemple :
						echo '<p>';
						echo mysql_result($query_getMembers, $a,  'nom_produit');
						echo '</p>';
						echo '<img src="images/';
						echo mysql_result($query_getMembers, $a, 'photo');
						echo '" alt="" width="120" height="90" align="center" id="2" />';
						echo '<p>';
						echo mysql_result($query_getMembers, $a, 'description');
						echo '</p>';
						echo '<p>';
						echo mysql_result($query_getMembers, $a, 'prix');
						echo '</p>';
 
						echo'
						</td>
							';
						if($b < $nbColumns)
						// On incrémente manuellement $a car si $b est inférieur aux nombre de colone à afficher dans le tableau
						// $a ne repasse pas la seconde boucle for
						{
							$a++;
						}	
					}
				} // On ferme la troisième boucle for
 
				echo '</tr>'; // On ferme la balise <tr> pour revenir à la ligne	
			} // On ferme la seconde boucle for
			// On ferme notre tableau ainsi que la div associé
			echo '
			</table>
			</div>';
		}// On ferme la première boucle for
		if($numberOfPages>1)
		{
			echo 'Pages'; // Affiche le mot page
			for($a=1 ; $a<=$numberOfPages; $a++)
			/* On affiche tout les liens et on applelle notre fonction javascript sur chaque lien */
			{
			echo '
			<a id="anchor'.$a.'" href="#'.$a.'" onClick="onPartChanged('.$a.','.$numberOfPages.')"/>'.$a.'</a>
			';
			if ($a<$numberOfPages) echo ' - ';
			}
			echo '<br />'; // L'indispensable saut de ligne 
		}
	?>
</body>
</html>
voila j'espère que quelqu'un aurais la gentillesse de m'aider résoudre mon probléme
b-good est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 21h30   #2
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Si le bogue apparait seulement lorsque tu veux affiche par rapport un type alors ton erreur viens de ta requête, soit:

Code :
1
2
3
4
5
 
$stringQueryToShow="SELECT p.photo, p.nom_produit, p.description, p.prix, p.date, t.type 
FROM produits as p, type_produit as t 
WHERE p.type_produit=t.id 
AND type_produit=".$_GET['type_produit'] ;
Donc tu peux peut être ajouter des guillemets ou des cotes autour de ton type_produit soit:

Code :
1
2
3
4
5
 
$stringQueryToShow="SELECT p.photo, p.nom_produit, p.description, p.prix, p.date, t.type 
FROM produits as p, type_produit as t 
WHERE p.type_produit=t.id 
AND type_produit='".$_GET['type_produit']."'" ;
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 23h58   #3
Invité de passage
 
Inscription : novembre 2010
Messages : 3
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 3
Points : 1
Points : 1
déja merci pour ta réponse david, sinon j'ai mis '".$_GET['type_produit']."'" dans ma requette mais sa donne le même résultat moi a mon avis le prob c'est la requete
Code :
1
2
 
$stringQueryCount = "SELECT COUNT(*) FROM produits;";
qui compte le nombre totale d'éléments qu'il ya dans la table
si j'ai 9 éléments au total dans ma table produits sa les affiches tous
page par page , mais quand je veux affiché par exemple uniquement les produits de type cartes mére grâce a cette requete
Code :
1
2
3
4
5
 
if(isset($_GET['type_produit']))
$stringQueryToShow="SELECT p.photo, p.nom_produit, p.description, p.prix, p.date, t.type FROM produits as p, type_produit as t WHERE p.type_produit=t.id and type_produit='".$_GET['type_produit']."'" ;
else
$stringQueryToShow="SELECT p.photo, p.nom_produit, p.description, p.prix, p.date, t.type FROM produits as p, type_produit as t WHERE p.type_produit=t.id";
sachant que le nombre d'éléments de type carte mére par exemple est de 3
sa compte tout jours qu'il ya 9 éléments a afficher et apartire du 3éme element sa affiche que des erreures et sa stop au 9éme element ..
et j'y arrive pas a régler sa
b-good est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 06h50   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Il faut evidemment que dans ton comptage, tu prennes en compte le critere egalement.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 13h37   #5
Invité de passage
 
Inscription : novembre 2010
Messages : 3
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 3
Points : 1
Points : 1
mon problème est résolu !!! j'ai suivi ton conseil sabotage et rajouté
Code :
1
2
 
if(isset($_GET['type_produit'])) et un else pour $stringQueryCount
résultat sa fonctionne parfait ! je vous remercie les gars, je vais devoir mettre [RESOLU] a mon 1er poste
b-good est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h28.


 
 
 
 
Partenaires

Hébergement Web