|
|
|
|
Posté par
wallash, le vendredi 1 juin 2007 à 11:09:41Configuration: Windows XP Internet Explorer 6.0
Bon, premièrement faut s'acrocher pour lire ton text. Un gros pavé comme sa, ça donne pas envie... ;op
Faire des lien dynamique sa pas trés dure. PHP génère de l'HTML il te suffit de récuppérer les info dans ta BDD et de les utiliser pour creer ton lien. <a href="article.php?id_catégorie='.$id_categorie_recup_dans_BDD.'"> '.$Nom_categorie_recup_dans_BDD.'</a> Bien sur, ca sous entend que tu stock l'id et le Nom de tes catégorie dans ta BDD.
|
Si tu a des doute sur ta requête, soumet la toi même au SGBD. Tu saura ainsi sur quoi porter ton attention.
Pour te permettre de comprendre un peu mieux ce que fait ton programme afin de le débuggé, n`hésite surtout pasa afficher tes variable sur ta page : echo $taVariable; Test sa à différent endroit, avant un if, aprés un if, au tout début... bref savoir si le programme fait bien ce que tu veut, ou plutôt quand ne le fait-il pas ! PS : Espace ton text !!!! je finirai certainement par ne plus trouver le courage de lire un pavé bien compacte ! |
Je sais aps trop si t'a bien fait ta requete.
Une solution : $requete = 'SELECT * FROM matable'; // Si j'ai bien compris tu veux tout afficher ou alors $requete = "SELECT * FROM matable WHERE categorie = '.$ma_categorie.'"; // Si c'est suivant une catégorie ensuite $resultat = mysql_query($requete); // Pour executer While($ligne = mysql_fetch_array($resultat)) // Cela met tt dans un tableau { <a href="article.php?id_cat='.$id_cat_de_laBDD.'"> '.$Nom_categorie_de_la_BDD.'</a> } En fait, tant qu'il y aura des catégorie dans ta BDD, elles seront affichées, le lien sera fait avec l'id. Ca le fait ??? |
slt à tous, je m'excuse pour mon abscence depuis la semaine dernière car j'avais plus accès au net à cause de mon fournisseur d'accès,et merci rastajeff pour le temps que tu as accordé à mon message et mon pb d'affichage est désormais résolu sauf que maintenant c'est pagination qui m'embête. |
commeje te disais tantôt rastajeff maintenant c'est le pb de pagination qui embête et voici les codes de mes pages.
page rubrique.php **************************** <?php $host = 'localhost'; $user = 'root'; $pass = ''; $db = 'bdd'; //========================================= // initialisation des variables //========================================= // on va afficher 5 résultats par page. $nombre =12; // si limite n'existe pas on l'initialise à zéro if (!$limite) $limite = 0; // on cherche le nom de la page. $path_parts = pathinfo($_SERVER['PHP_SELF']); $page = $path_parts["basename"]; //========================================= // connection à la DB //========================================= $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); mysql_select_db($db) or die ('Erreur :'.mysql_error()); //========================================= // requête SQL qui compte le nombre total // d'enregistrements dans la table. //========================================= $select = 'SELECT count(id_rubrique) FROM rubrique'; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); $row = mysql_fetch_row($result); $total = $row[0]; //========================================= // vérifier la validité de notre variable // $limite; //========================================= $verifLimite= verifLimite($limite,$total,$nombre); // si la limite passée n'est pas valide on la remet à zéro if(!$verifLimite) { $limite = 0; } //========================================= // requête SQL qui ne prend que le nombre // d'enregistrement necessaire à l'affichage. //========================================= $id_categorie=$_GET['id_categorie']; $select = 'select * FROM rubrique WHERE id_categorie='.$id_categorie.' ORDER BY id_rubrique ASC limit '.$limite.','.$nombre; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); while($data = mysql_fetch_array($result)) { $tablo[]=$data; } //détermine le nombre de colonnes $nbcol=3; echo '<table border="0" valign="top" width="450" cellspacing="0" cellpadding="0">'; $nb=count($tablo); for($i=0;$i<$nb;$i++){ //les valeurs à afficher $valeur1=$tablo[$i]['Nom_rubrique']; $id_rubrique=$tablo[$i]['id_rubrique']; if($i%$nbcol==0) echo '<tr>'; echo '<td align="center"><a href = "article.php?id_rubrique='.$id_rubrique.'">'.$valeur1.'</a><br/></td>'; if($i%$nbcol==($nbcol-1)) echo '</tr>'; } echo '</table>'; //========================================= // si on a récupéré un resultat on l'affiche. //========================================= //echo'nombre de rubrique trouvées'.$num_result.'<br>'; //else echo 'Pas d\'enregistrements dans cette table...'; //========================================= // si le nombre d'enregistrement à afficher // est plus grand que $nombre //========================================= if($total > $nombre) { // affichage des liens vers les pages affichePages($nombre,$page,$total); // affichage des boutons // displayNextPreviousButtons($limite,$total,$nombre,$page); } ?> *************************************** et voici la page article.php ******************************* <?php $host = 'localhost'; $user = 'root'; $pass = ''; $db = 'bdd'; //========================================= // initialisation des variables //========================================= // on va afficher 5 résultats par page. $nombre = 4; // si limite n'existe pas on l'initialise à zéro if (!$limite) $limite = 0; // on cherche le nom de la page. $path_parts = pathinfo($_SERVER['PHP_SELF']); $page = $path_parts["basename"]; //========================================= // connection à la DB //========================================= $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); mysql_select_db($db) or die ('Erreur :'.mysql_error()); //========================================= // requête SQL qui compte le nombre total // d'enregistrements dans la table. //========================================= $id_rubrique=$_GET['id_rubrique']; $select = 'SELECT count(id_article) FROM article WHERE id_rubrique='.$id_rubrique; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); $row1 = mysql_fetch_row($result); $total = $row1[0]; //========================================= // vérifier la validité de notre variable // $limite; //========================================= $verifLimite= verifLimite($limite,$total,$nombre); // si la limite passée n'est pas valide on la remet à zéro if(!$verifLimite) { $limite = 0; } //========================================= // requête SQL qui ne prend que le nombre // d'enregistrement necessaire à l'affichage. //========================================= $select = 'select photo_article,description FROM article WHERE id_rubrique='.$id_rubrique.' ORDER BY id_article ASC limit '.$limite.','.$nombre; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); //========================================= // si on a récupéré un resultat on l'affiche. //========================================= if($total) { // début du tableau echo '<center><table border="0" cellspacing="0" cellpadding="0" align="center" width="300" height="500">'; // première ligne on affiche les titres prénom et surnom dans 2 colonnes echo '<tr>'; echo '<td><b><center>IMAGE</center></b></td>'; echo '<td><b>CATALOGUE</b></td>'; echo '</tr>'; // lecture et affichage des résultats sur 2 colonnes while($row = mysql_fetch_array($result)) { echo '<tr>'; echo '<td>'; echo"<img src='IMAGES/img/$row[photo_article]'>"; echo '</td>'; echo '<td>'.$row['description'].'</td>'; echo '</tr>'; } echo '</table></center>'; } else echo 'Pas d\'enregistrements dans cette table...'; mysql_free_result($result); //========================================= // si le nombre d'enregistrement à afficher // est plus grand que $nombre //========================================= if($total > $nombre) { // affichage des liens vers les pages affichePages($nombre,$page,$total); // affichage des boutons // displayNextPreviousButtons($limite,$total,$nombre,$page); } ?> ********************************** donc comme j'ai prévu 4 produits par page,il faut bien que si les produits de la rubrique sont plus de 4, on affiche les liens de pagination sous forme de numéro.quand je clique sur les différents numéros de page( numéros de ma pagination), un message apparait disant que " undefine variable id_rubrique in c://../article.php on line ... " ce qui fait que les articles suivants ne s'affichent pas et je ne parviens donc pas à bien définir la variable $id_rubrique à fin de mieux recevoir les valeurs passées par url depuis la page rubrique.php. merci à vous d'avance. |
Apparemment ton problème se situe au niveau de ta variable $id_rubrique qui n'est pas défini, ce qui veut dire qu'il n'y à rien dedans.
Voici ton code : (pour afficher du code, utilise le bouton code juste au dessus de la zone de text quand tu édite) $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
while($data = mysql_fetch_array($result))
{
$tablo[]=$data;
}
//détermine le nombre de colonnes
$nbcol=3;
echo '<table border="0" valign="top" width="450" cellspacing="0" cellpadding="0">';
$nb=count($tablo);
for($i=0;$i<$nb;$i++){
//les valeurs à afficher
$valeur1=$tablo[$i]['Nom_rubrique'];
$id_rubrique=$tablo[$i]['id_rubrique'];
(C'est plus lisible un fois que ca s'affiche ;o)) Donc, il ne trouve rien dans ton $id_rubrique. On en déduit que cette instruction n'affect rien dans la variable : $id_rubrique=$tablo[$i]['id_rubrique']; C'est au niveau de l'utilisation du résulta du "mysql_query" que ca ne va pas (au niveau du while). Personnellement je fait en général mon traitement directement dans le while donc je ne suis pas certain de ce que je vai te dire. Je pense que tu devrai écrire un truc du genre :
$compteur=0;
while($data = mysql_fetch_array($result))
{
$tablo[$compteur]=$data;
$compteur++;
}
Car, si on imagine que ta requête te rnvoie un tableau alors $data = mysql_fetch_array($result) ne t'en renvoie qu'une ligne à la fois (chaque tour de boucle égale une ligne). A chaque tour de boucle tu doit mettre cette ligne dans un nouveau tableau. (je te précise au cas ou que $tablo[][] est un tableau de tableau. PS: J'en suis navré mais si ton prochain post est encore une fois aussi difficile à lire, je craint abandonne ;o{ |
slt mr white et merci pour le temps que tu m'accorde
et j'ai essayer de definir une variable $compteur comme tu l'a dit mais il n'ya pas de changement , je sais pas si il ya des modifications autres à faire pour que ça marche, voici le code tel que j'ai modifier.
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'bdd';
//=========================================
// initialisation des variables
//=========================================
// on va afficher 4 résultats par page.
$nombre =4;
// si limite n'existe pas on l'initialise à zéro
if (!$limite) $limite = 0;
// on cherche le nom de la page.
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts["basename"];
//=========================================
// connection à la DB
//=========================================
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
//=========================================
// requête SQL qui compte le nombre total
// d'enregistrements dans la table.
//=========================================
$select = 'SELECT count(id_rubrique) FROM rubrique';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
//=========================================
// vérifier la validité de notre variable
// $limite;
//=========================================
$verifLimite= verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite) {
$limite = 0;
}
//=========================================
// requête SQL qui ne prend que le nombre
// d'enregistrement necessaire à l'affichage.
//=========================================
$id_categorie=$_GET['id_categorie'];
$select = 'select * FROM rubrique WHERE id_categorie='.$id_categorie.' ORDER BY id_rubrique ASC limit '.$limite.','.$nombre;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$compteur=0;
while($data = mysql_fetch_array($result))
{
$tablo[$compteur]=$data;
$compteur++;
}
//détermine le nombre de colonnes
$nbcol=3;
echo '<table border="0" valign="top" width="450" cellspacing="0" cellpadding="0">';
$nb=count($tablo);
for($i=0;$i<$nb;$i++){
//les valeurs à afficher
$valeur1=$tablo[$i]['Nom_rubrique'];
$id_rubrique=$tablo[$i]['id_rubrique'];
if($i%$nbcol==0)
echo '<tr>';
echo '<td align="center"><a href = "article.php?id_rubrique='.$id_rubrique.'">'.$valeur1.'</a><br/></td>';
if($i%$nbcol==($nbcol-1))
echo '</tr>';
}
echo '</table>';
//=========================================
// si on a récupéré un resultat on l'affiche.
//=========================================
//echo'nombre de rubrique trouvées'.$num_result.'<br>';
//else echo 'Pas d\'enregistrements dans cette table...';
//=========================================
// si le nombre d'enregistrement à afficher
// est plus grand que $nombre
//=========================================
if($total > $nombre) {
// affichage des liens vers les pages
affichePages($nombre,$page,$total);
// affichage des boutons
// displayNextPreviousButtons($limite,$total,$nombre,$page);
}
?>
|
Même si ca ne change pas grand chose, j'avai mal lut ton message d'erreur qui conçerne ta page article. Je suppose que ca ne change rien car je pense que dans la page article la variable $_GET['id_rubrique'] se qui signifie que ta page rubrique ne l'envoie pas.
En général, quand on récupère des variable d'un page vers l'autre on la test exemple :
if(isset($_GET['id_rubrique'])){
$id_rubrique=$_GET['id_rubrique'];
}
Avec si on veut un else pour afficher un message relatant l'erreur. Test avec ce test. Mets un echo 'test'; avant le if (pour être certain qu'on arrive jusque là) puis dans le if (s'il ne s'affiche pas alors $_GET['id_rubrique'] n'est pas défini. Si c'est le cas alors le problème vient de la page rubrique. Essai de trouver toi même où dans ton code quelque chose ne se déroule pas comme tu le désir. Pour sa, affiche tes variables (un peu comme je t'es expliquer avec echo $tavariable). Affiche id_rubrique avant le lien, aprés son affectation ( $id_rubrique=$tablo[$i]['id_rubrique']; ). Tu pourra remonter jusqu'a l'erreur. Surement dans le while. Mais ton code peut, je pense être simplifier:
execution de la requête
début du tableau <table...>
while($data = mysql_fetch_array($result)){
echo '<tr>';
echo '<td align="center">
<a href = "article.php?id_rubrique='.$data['id_rubrique'].'">'.$data['nom_rubrique'].'</a><br/></td>';
echo '</tr>';
}
fin du tableau </table>
Car ton $data est un tableau comportant tout les champ d'un enregistrement de ta requête. Et a chaque tour de boucle on passe à l'enregistrement suivant.
Voila, j'éspère que tu t'en sortira.
Bon courage ;o)
|
| 10/02 11h16 | Codes d'erreur de Windows | Windows |
| 05/02 15h33 | Unable to load dynamic library '/usr/lib/php4/20020429/mysql.so | PHP |
| 07/11 17h39 | [PHP] Transformer une URL en lien hypertexte cliquable | PHP |
| 10/12 11h42 | Créer un site beau, dynamique et respectueux des standards | Webmaster |
| 27/03 16h03 | [PHP] Méthodes de débogage | PHP |
| 04/04 20h15 | Probleme de Lien dynamique avec php | 3 |
| 13/06 12h13 | Liens dynamiques en PHP dans tableau | 0 |
| 09/10 22h44 | Faire disparaitre un lien dynamique php/sql | 11 |
| 07/10 16h39 | Lien dynamique dans page PHP | 5 |
![]() | HTTrack - HTTrack est un aspirateur de site très puissant et open source. Ses nombreuses options de configuration en font un outil de... | Catégorie: Aspirateurs de site Licence: Open Source |
![]() | Filmotech - Filmothech est un programme de gestion de collection de votre base de données vidéo. Il prend en charge notamment les... | Catégorie: Edition vidéo Licence: Freeware/gratuit |
![]() | PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de... | Catégorie: PHP Licence: Freeware/gratuit |
![]() | WAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de... | Catégorie: Serveurs Licence: Freeware/gratuit |
![]() | Dynamite Joe | Catégorie: Jeu vidéo PC | |
![]() | K-1 Premium 2004 Dynamite | Catégorie: Jeu vidéo PS2 | |
![]() | Lancom 8011 Dynamic VPN-Gateway | Catégorie: Routeur | |
![]() | Sharkoon Dynamic 5.1 | Catégorie: Casque audio |