Probleme php mysql
Résolu/Fermé
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
-
4 oct. 2012 à 22:36
audi68 Messages postés 571 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 - 11 oct. 2012 à 22:02
audi68 Messages postés 571 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 - 11 oct. 2012 à 22:02
A voir également:
- Probleme php mysql
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Error 2002 (hy000): can't connect to local mysql server through socket '/var/lib/mysql/mysql.sock' (2) ✓ - Forum Linux / Unix
- Mysql gratuit ou payant - Forum MySQL
- Bouton php - Forum PHP
18 réponses
KiKiLeMMerDeuR
Messages postés
284
Date d'inscription
dimanche 6 décembre 2009
Statut
Membre
Dernière intervention
6 décembre 2013
36
Modifié par KiKiLeMMerDeuR le 5/10/2012 à 11:08
Modifié par KiKiLeMMerDeuR le 5/10/2012 à 11:08
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.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
5 oct. 2012 à 13:39
5 oct. 2012 à 13:39
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
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
6 oct. 2012 à 18:52
6 oct. 2012 à 18:52
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
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
8 oct. 2012 à 09:39
8 oct. 2012 à 09:39
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
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
8 oct. 2012 à 19:04
8 oct. 2012 à 19:04
Merci je vais tester
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
8 oct. 2012 à 21:39
8 oct. 2012 à 21:39
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
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
Modifié par Alain_42 le 9/10/2012 à 09:49
Modifié par Alain_42 le 9/10/2012 à 09:49
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
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
9 oct. 2012 à 20:58
9 oct. 2012 à 20:58
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
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
9 oct. 2012 à 21:07
9 oct. 2012 à 21:07
c est cette ligne qui pose probleme
list($width, $height, $type, $attr) = getimagesize($image);
list($width, $height, $type, $attr) = getimagesize($image);
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
9 oct. 2012 à 22:01
9 oct. 2012 à 22:01
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;
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
9 oct. 2012 à 22:13
9 oct. 2012 à 22:13
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
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
9 oct. 2012 à 22:35
9 oct. 2012 à 22:35
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);
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
10 oct. 2012 à 20:02
10 oct. 2012 à 20:02
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
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
10 oct. 2012 à 22:16
10 oct. 2012 à 22:16
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.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
11 oct. 2012 à 09:41
11 oct. 2012 à 09:41
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.
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
11 oct. 2012 à 20:32
11 oct. 2012 à 20:32
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
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
11 oct. 2012 à 20:59
11 oct. 2012 à 20:59
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 ?
audi68
Messages postés
571
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
5 août 2015
9
11 oct. 2012 à 22:02
11 oct. 2012 à 22:02
merci oui c est plus clair je vois un peu mieux