Probleme php mysql
Résolu
audi68
Messages postés
571
Date d'inscription
Statut
Membre
Dernière intervention
-
audi68 Messages postés 571 Date d'inscription Statut Membre Dernière intervention -
audi68 Messages postés 571 Date d'inscription Statut Membre Dernière intervention -
Bonjour a tous,
Je suis entrain de coder mon site
J ai un petit souci
J ai une base de donné comme ceci
id/date/image/dossier
1/201-05-27/222.jpg/1
2/201-05-27/333.jpg/1
3/2012-65-56/215.jpg/2
j aimerais afficher sur une page la photos avec le lien vers le dossier
Mais vu que j ai plusieurs fois le meme dossier j aimerais affihcer uniquement un dossier et une photos
Pour le dossier je fais comme ceci par contre je bloque pour prendre qu une seule image
<?php echo "\t\t<ul>\n";
include('config.php');
$req = mysql_query("SELECT DISTINCT dossier FROM exif ORDER BY date ASC") or die(mysql_error()); // Requête SQL
while($dnn = mysql_fetch_array($req))
{
?>
<li> <a href=" <?php echo "contenu3.php?dossier=$dnn['dossier']";?>"><img src="<?php echo $dnn['dossier'];?>/<?php echo $dnn['image'];?>" alt="Photo prise le <?php echo $dnn['datef'];?> à <?php echo $dnn['heure'];?> par <?php echo $dnn['personne'];?> ""/></a>
</li>
<?php
}
mysql_close();
?>
</ul>
Merci de votre aide
Je suis entrain de coder mon site
J ai un petit souci
J ai une base de donné comme ceci
id/date/image/dossier
1/201-05-27/222.jpg/1
2/201-05-27/333.jpg/1
3/2012-65-56/215.jpg/2
j aimerais afficher sur une page la photos avec le lien vers le dossier
Mais vu que j ai plusieurs fois le meme dossier j aimerais affihcer uniquement un dossier et une photos
Pour le dossier je fais comme ceci par contre je bloque pour prendre qu une seule image
<?php echo "\t\t<ul>\n";
include('config.php');
$req = mysql_query("SELECT DISTINCT dossier FROM exif ORDER BY date ASC") or die(mysql_error()); // Requête SQL
while($dnn = mysql_fetch_array($req))
{
?>
<li> <a href=" <?php echo "contenu3.php?dossier=$dnn['dossier']";?>"><img src="<?php echo $dnn['dossier'];?>/<?php echo $dnn['image'];?>" alt="Photo prise le <?php echo $dnn['datef'];?> à <?php echo $dnn['heure'];?> par <?php echo $dnn['personne'];?> ""/></a>
</li>
<?php
}
mysql_close();
?>
</ul>
Merci de votre aide
A voir également:
- Probleme php mysql
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Expert php pinterest - Télécharger - Langages
- Php alert - Forum PHP
- Mysql a répondu : documentation connexion impossible : paramètres incorrects. - Forum Bases de données
18 réponses
utilise l'attribut LIMIT dans ta requete si tu veux un seul résultat : rajoute : LIMIT 0,1 (cela aura pour effet de prendre 1 résultat à partir du résultat 0, donc le premier résultat)
Pour le moment, tu récupere une liste des dossiers avec ta requete, il faut faire une autre requete pour récupérer le reste : dans ton while:
J'ai pas exactement compris si c'est ca que tu souhaites faire.
Pour le moment, tu récupere une liste des dossiers avec ta requete, il faut faire une autre requete pour récupérer le reste : dans ton while:
$sql = "SELECT * FROM exif WHERE dossier=".$dnn['dossier']." LIMIT 0,1)
J'ai pas exactement compris si c'est ca que tu souhaites faire.
en procédant ainsi ta requette n'extrait pas tous les champs dont tu as besoin pour l'affichage ensuite:
donc essayes:
donc essayes:
$req = mysql_query("SELECT * FROM exif GOUP BY dossier ORDER BY date ASC") or die(mysql_error()); // Requête SQL
Merci ca fonctionne
C est ce que je voulais par contre il me recupere la 1ere image dans la base y a t il moyen de dire qu il en prenne une aleatoirement?
Merci de votre aide
C est ce que je voulais par contre il me recupere la 1ere image dans la base y a t il moyen de dire qu il en prenne une aleatoirement?
Merci de votre aide
je ne vois pas de solution via la requette MYSQL
mais voici une idée en php avec un array (pas testé il peut y avoir des bugs)
mais voici une idée en php avec un array (pas testé il peut y avoir des bugs)
<?php // .... $req = mysql_query("SELECT * FROM exif ORDER BY date ASC") or die(mysql_error()); // Requête SQL sans dedoublonnement //on va stocker les données dans un array a 2 dimensions $array_donnees=array(); while($dnn = mysql_fetch_array($req)) { $array_donnees[$dnn['dossier']][]=$dnn['image'].'|'.$dnn['datef'].'|'.$dnn['heure'].'|'.$dnn['personne']; // séparation des données image par un pipe | // le [] permet l'incrémentation auto de l'index du sous array de chaque dossier } //on va parcourir l'array et pour chaque dossier afficher aléatoirement une image avec la fonction array_rand foreach($array_donnees as $clef=>$s_array_image){ //$clef=nom dossier //image aléatoire: $key_aleatoire=array_rand($s_array_image, 1); $donnees_image=$s_array_image[$key_aleatoire]; $array_donnees_image = explode('|',$donnees_image); //genration des liens echo '<li>'; echo '<a href="contenu3.php?dossier='.$clef.'"><img src="'.$clef.'/'.$array_donnees_image[0].'" alt="Photo prise le '.$array_donnees_image[1].' à '.$array_donnees_image[2].' par '.$array_donnees_image[3].' /></a>'; echo '</li>'; } ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci ca fonctionne
C est ce que je voulais
Un derniere question
Est il possible de choisir uniquement les photos en paysage?
Par contre la dimension des photos ne sont pas stocker dans ma base de donnée
est ce un probleme?
Merci de votre aide
C est ce que je voulais
Un derniere question
Est il possible de choisir uniquement les photos en paysage?
Par contre la dimension des photos ne sont pas stocker dans ma base de donnée
est ce un probleme?
Merci de votre aide
ce serait plus simple si tu les avait ds la bdd, mais bon avec php il ya tjs une solution
autre remarque:
$req = mysql_query("SELECT * FROM exif ORDER BY date ASC")
j'espère que les dates du champ date sont au fromat mysql yyyymmdd ? sinon le tri ne sera pas bon
<?php //fonction php que tu mets au début du body function image_aleatoire_paysage($s_array_image,$cpt){ $nb_image_ds_dossier=sizeof($s_array_image); //image aléatoire: $key_aleatoire=array_rand($s_array_image, 1); $donnees_image=$s_array_image[$key_aleatoire]; $array_donnees_image = explode('|',$donnees_image); //si il n'y a pas d'image paysage la fct va boucler indefiniement donc on teste: $cpt++; if($cpt > $nb_image_ds_dossier ){ return $array_donnees_image; // on quitte la fct en renvoyant l'image même si au format portrait ?? } $image=$array_donnees_image[0]; //recup du nom de l'image //recup des dimensions de l'image list($width, $height, $type, $attr) = getimagesize($image); //au passage remarques que tu as aussi le type donc tu peux aussi tester et prendre seulement celles d'un ou plusieurs types jpg, png etc //vas voir sur G.... la fct getimagesize() if($width < $height){ //on reboucle sur la fonction pour en "chercher" une autre image_aleatoire_paysage($s_array_image,$cpt) } else{ //si format paysage on retourne l'array des donnees image return $array_donnees_image; } } ?> <?php //.... foreach($array_donnees as $clef=>$s_array_image){ //$clef=nom dossier //image aléatoire au format paysage: $array_donnees_image = image_aleatoire_paysage($s_array_image,0); //genration des liens //..
autre remarque:
$req = mysql_query("SELECT * FROM exif ORDER BY date ASC")
j'espère que les dates du champ date sont au fromat mysql yyyymmdd ? sinon le tri ne sera pas bon
Merci de ta reponse mais ca ne marche pas il m indique cet erreur
Warning: Division by zero in /mnt/113/sda/5/6/monsite/mondossier/page.php on line 70
Warning: getimagesize() [function.getimagesize]: Unable to access 0 in /mnt/113/sda/5/6/monsite/mondossier/page.php on line 70
il manquait aussi un point vrgule a une ligne mais la je ne vois pas.........
Oui les dates sont stocker sous cette forme avec l heure 2012-05-19 18:41:02 mais les resultats me semble juste
Merci
Warning: Division by zero in /mnt/113/sda/5/6/monsite/mondossier/page.php on line 70
Warning: getimagesize() [function.getimagesize]: Unable to access 0 in /mnt/113/sda/5/6/monsite/mondossier/page.php on line 70
il manquait aussi un point vrgule a une ligne mais la je ne vois pas.........
Oui les dates sont stocker sous cette forme avec l heure 2012-05-19 18:41:02 mais les resultats me semble juste
Merci
met un echo pour voir:
après la ligne
$image=$array_donnees_image[0]; //recup du nom de l'image
mets echo "chemin image= ".$image;
après la ligne
$image=$array_donnees_image[0]; //recup du nom de l'image
mets echo "chemin image= ".$image;
merci de ta reponse
je crois qu il manque le dossier
il me met bien le nom de l image mais pas le dossier
par contre si je rajoute $clef avant echo $image il ne me l affiche pas
je crois qu il manque le dossier
il me met bien le nom de l image mais pas le dossier
par contre si je rajoute $clef avant echo $image il ne me l affiche pas
il manquait le chemin vers l'image pour getsizeimage c'est à dire le dossier
modifies les lignes:
modifies les lignes:
//dans la fonction php function image_aleatoire_paysage($dossier,$s_array_image,$cpt){ list($width, $height, $type, $attr) = getimagesize($dossier.'/'.$image); //on reboucle sur la fonction pour en "chercher" une autre image_aleatoire_paysage($dossier,$s_array_image,$cpt); et dans la boucle foreach: //image aléatoire au format paysage: $array_donnees_image = image_aleatoire_paysage($clef,$s_array_image,0);
merci de ta reponse
Mais plus rien ne s affiche il me met cette erreur
Warning: getimagesize() [function.getimagesize]: Read error! in /mnt/113/sda/5/6/..........php on line 57
merci de ton aide
Mais plus rien ne s affiche il me met cette erreur
Warning: getimagesize() [function.getimagesize]: Read error! in /mnt/113/sda/5/6/..........php on line 57
merci de ton aide
j'ai fait une petite bdd chez moi pour tester, effectivement il y a des pb de temps en temps, ce soir je suis un peu ko et pas l'esprit à réfléchir, je verrai ça demain matin.
bon ce matin j'ai trouvé, cela venait de l'appel recursif de la fonction qui ne retournait pas la valeur vers l'appel original depuis la boucle foreach.
J'ai changé un peu de methode dans la fct:
et donc l'appel dans la boucle foreach devient:
par contre pour l'erreur getimagesize vérifies par un echo que le chemin dossier/photo est bien bon
et que le nomde la photo BDD correspond bien à celui du fichier photo dans le dossier.
J'ai changé un peu de methode dans la fct:
<?php //fonction php que tu mets au début du body function image_aleatoire_paysage($dossier,$s_array_image){ $nb_image_ds_dossier=sizeof($s_array_image); for ($i=0;$i<($nb_image_ds_dossier)*5;$i++){ //on limite la boucle à 5 fois le nombre de photos //image aléatoire: $key_aleatoire=array_rand($s_array_image, 1); $donnees_image=$s_array_image[$key_aleatoire]; $array_donnees_image = explode('|',$donnees_image); $image=$array_donnees_image[0]; //recup du nom de l'image //recup des dimensions de l'image list($width, $height, $type, $attr) = getimagesize($dossier.'/'.$image); if($width > $height){ return $array_donnees_image; } } //au cas ou pas de photo paysage trouvée on retourne la derniere de la boucle return $array_donnees_image; } ?>
et donc l'appel dans la boucle foreach devient:
//image aléatoire au format paysage: $array_donnees_image = image_aleatoire_paysage($clef,$s_array_image);
par contre pour l'erreur getimagesize vérifies par un echo que le chemin dossier/photo est bien bon
et que le nomde la photo BDD correspond bien à celui du fichier photo dans le dossier.
Merci super ca fonctionne c est ce que je voulais
Je n ai pas essayer avec un echo car les photos sont juste
Par contre je n es pas vraiement compris ce que tu as modifié
Merci de ton aide
Si tu pouvais un peu m expliquer ce serai super
Je n ai pas essayer avec un echo car les photos sont juste
Par contre je n es pas vraiement compris ce que tu as modifié
Merci de ton aide
Si tu pouvais un peu m expliquer ce serai super
avant dans la fonction quand la photo n'était pas en paysage la fonction s'appelait elle même (récursive) par la ligne :
//on reboucle sur la fonction pour en "chercher" une autre
image_aleatoire_paysage($dossier,$s_array_image,$cpt);
donc elle s'exécute plusieurs fois
et dans ce cas on "perdait" la réponse
maintenant dans la fonction j'ai mis une boucle for($i
...
qui recherche la photo paysage
dès qu'elle est trouvée ça return les données image
bon j'espère que c'est assez clair ?
//on reboucle sur la fonction pour en "chercher" une autre
image_aleatoire_paysage($dossier,$s_array_image,$cpt);
donc elle s'exécute plusieurs fois
et dans ce cas on "perdait" la réponse
maintenant dans la fonction j'ai mis une boucle for($i
...
qui recherche la photo paysage
dès qu'elle est trouvée ça return les données image
bon j'espère que c'est assez clair ?