IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

affichage de données


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 2
    Points
    2
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Si le bogue apparait seulement lorsque tu veux affiche par rapport un type alors ton erreur viens de ta requête, soit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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']."'" ;

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut evidemment que dans ton comptage, tu prennes en compte le critere egalement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    mon problème est résolu !!! j'ai suivi ton conseil sabotage et rajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage de données en OpenGL
    Par bennnun dans le forum OpenGL
    Réponses: 6
    Dernier message: 10/05/2005, 02h34
  2. TDBCtrlGrid - Affichage des données
    Par audreyb dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/10/2004, 13h10
  3. [JTable] Problème d'affichage des données
    Par ddams dans le forum Composants
    Réponses: 2
    Dernier message: 15/09/2004, 17h07
  4. Affichage de données (histograme, graphe etc.)
    Par sunshine33 dans le forum Autres Logiciels
    Réponses: 11
    Dernier message: 13/01/2004, 14h16
  5. PB : affichage de données avec accent sous delphi 6
    Par kinda dans le forum Débuter
    Réponses: 3
    Dernier message: 03/07/2003, 13h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo