Affichage resultat requete sql

Signaler
Messages postés
155
Date d'inscription
dimanche 21 octobre 2007
Statut
Membre
Dernière intervention
23 novembre 2015
-
Messages postés
155
Date d'inscription
dimanche 21 octobre 2007
Statut
Membre
Dernière intervention
23 novembre 2015
-
Bonjour,

Après mon problème de calendrier, j'ai un souci avec le nombre exact de ligne que me retourne mes requêtes.
J'ai un petit album photo que je conçoit en récupérant les données dans une table album de ma base mysql.

Voici une partie de code :

Bonjour



<?php
//creation de la requete d'affichage
$requete2= "select * from reserv_album a, reserv_voiture v where a.id_voiture=v.id_voiture and v.categorie='A'";
$resultat=mysql_query($requete2) or die(mysql_error());

while($row2=mysql_fetch_array($resultat))
{?>



//on affiche la photo en taille normale
<?php
echo\" * ".$row2['titre']."
";
echo" : ";
?>


//on affiche les miniatures des photos

<?php
$chemin1 =$row2['chemin1'];
$chemin3=$row2['chemin3'];

echo "<li></li> ";
echo "<li></li>";
?>



<?php
}
?>



Ma question est la suivante : J'ai un seul affichage alors que dans ma base j'ai deux résultats.

En fait, sa m'affiche bien la première ligne de ma bd mais pas la seconde.
J'utilisais une boucle for avant, mais sa ne change rien don j'ai retiré et remplacer par la boucle while.

Comment expliquer cela ? C'est sur que c'est un problème de codage, mais je ne vois vraiment pas ce qui peut la causer.

Pourriez vous regarder mon bout de code, et me dire ce que vous trouvez louche svp ?

En fait, pour l'affichage, j'utilise entre autre du javascript, pour que lorsque l'on clique sur une miniature, elle s'affiche en taille normal.
Un fichier css pour la définition de mes éléments.

5 réponses

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
18
bonjour

si tu mets ça avant le while ça te dit quoi ?

$num_rows = mysql_num_rows($resultat);

echo "$num_rows enregistrements\n";

</dl> ?? ça doit arreter le code



<?php
//creation de la requete d'affichage
$requete2="select * from reserv_album a, reserv_voiture v where a.id_voiture=v.id_voiture and v.categorie='A'";
$resultat=mysql_query($requete2) or die(mysql_error());

while($row2=mysql_fetch_array($resultat))
{?>



//on affiche la photo en taille normale
<?php
echo\" * ".$row2['titre']."
";
echo" :
";
?>



a++
Messages postés
155
Date d'inscription
dimanche 21 octobre 2007
Statut
Membre
Dernière intervention
23 novembre 2015

Salut

Merci pour ta réponse. Alors quand j'ajoute le ti-bout de code, j'ai ceci à l'ecran :

--> 2 enregistrements

Mais il n'y a toujours qu'un seul qui s'affiche.

Je vais regarder si le </dl> n'empeche pas la suite de l'exécution.
Messages postés
155
Date d'inscription
dimanche 21 octobre 2007
Statut
Membre
Dernière intervention
23 novembre 2015

Alors, je pense avoir avancé!

Maintenant j'ai bien l'affichage complet des résultats de ma requête sql.

2 choses :

-> sur ma page php, je déclarait deux fois un tableau associatif : mysql_fetch_array($resultat)
-> ensuite, j'ai passé tout mon code en php. J'ai fait des echo de chacune de mes lignes, supprimant ainsi les balises <?php et ?> et html.
Mon code ressemble maintenant à sa :

<?php
//creation de la requete d'affichage
$requete2= "select * from reserv_album a, reserv_voiture v where a.id_voiture=v.id_voiture and v.categorie='A'";

$resultat=mysql_query($requete2) or die(mysql_error());
while($row2=mysql_fetch_array($resultat))
{
echo '
';
echo '';
echo\" * ".$row2['titre']."
";
echo" : ";
echo '
';

echo ' ';

$chemin1 =$row2['chemin1'];$chemin3=$row2['chemin3'];

echo "<li></li> ";

echo "<li></li>";


echo ' ';
echo '
';
Messages postés
155
Date d'inscription
dimanche 21 octobre 2007
Statut
Membre
Dernière intervention
23 novembre 2015

Petite remarque

Pour l'affichage du premier résultat, tout marche nikel. Aucun souci : en cliquant sur les miniatures on a bien l'image qui s'affiche en taille normal dans la div réservé à cela.

Cependant, pour les autres résultats de la requete, quand je clique sur les miniatures, sa m'ouvre mes images dans une nouvelles fenetres, et non plus dans la div.

Est-ce normal ? Y a t-il un moyen d'éviter cela ? Merci de vos réponses.
Messages postés
155
Date d'inscription
dimanche 21 octobre 2007
Statut
Membre
Dernière intervention
23 novembre 2015

slt a tous!

Je pense avoir trouvé mon problème. en fait il s'agit de ma fonction JavaScript.
Dans mon html, je fait appel à une fonction pour afficher les miniatures en tailles réelles.

Malheureusement, en ayant plusieurs résultats pour ma requete, la fonction qui se charge quand on ouvre la page n'attribue les bons éléments aux photos qu'à la première ligne. Je vais la modifier pour voir si j'arrive à changer sa.

la voici cette fonction
function displayPics()
{
var photos = document.getElementById('galerie_mini') ;
// On récupère l'élément ayant pour id galerie_mini
var liens = photos.getElementsByTagName('a') ;
// On récupère dans une variable tous les liens contenu dans galerie_mini
var big_photo = document.getElementById('big_pict') ;
// Ici c'est l'élément ayant pour id big_pict qui est récupéré, c'est notre photo en taille normale

var titre_photo = document.getElementById('photo').getElementsByTagName('dt')[0] ;
// Et enfin le titre de la photo de taille normale

// Une boucle parcourant l'ensemble des liens contenu dans galerie_mini
for (var i = 0 ; i < liens.length ; ++i) {
// Au clique sur ces liens
liens[i].onclick = function() {
big_photo.src = this.href; // On change l'attribut src de l'image en le remplaçant par la valeur du lien
big_photo.alt = this.title; // On change son titre
titre_photo.firstChild.nodeValue = this.title; // On change le texte de titre de la photo
return false; // Et pour finir on inhibe l'action réelle du lien
};
}
}
window.onload = displayPics;
// Il ne reste plus qu'à appeler notre fonction au chargement de la page