Sammuel

  • Nombre de sujets
    26
  • Nombre de messages
    114
  • Nombre de commentaires
    1
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses dernières news

Aucune news

Ses derniers sujets sur les forums

forum
Sammuel
le 31/03/2011 à 15:44
limit dans une sous requete ?
Salut,

Cela fait un moment que je n'arrive pas à résoudre cette requête... Je ne sais pas d'ailleurs, si c'est la meilleure méthode à utiliser.

Pour résumé, sur une même page, j'aimerais lister plusieurs noms de recettes, avec en dessous de chaque nom, une liste de 5 photos (maximum). Sachant qu'une recette peut avoir un nombre X de photos.
Une recette peut avoir 20 photos, comme 5, 7, 10, 100, 1000 !

Je parle de recettes de cuisine pour simplifer mon exemple :)


Base de données :

RECETTE
recette_id
nom
description

PHOTO
id
recette_id


Résultats retournés

**********
Recette 1
photo 1
photo 2
photo 3
photo 4
**********
Recette 2
photo 5
photo 6
photo 7
photo 8
photo 9
photo 10
photo 11
photo 12
**********
Recette 3
photo 1
**********
Recette 4
photo 1
photo 2
photo 3
photo 4
photo 5
photo 6
**********


Résultats que j'aimerais obtenir

**********
Recette 1
photo 1
photo 2
photo 3
photo 4
**********
Recette 2
photo 5
photo 6
photo 7
photo 8
photo 9
**********
Recette 3
photo 1
**********
Recette 4
photo 1
photo 2
photo 3
photo 4
photo 5
**********


La requête de base est :

SELECT recette.recette_id,recette.nom,recette.description,photo.id FROM recette
LEFT JOIN photo ON photo.recette_id = recette.recette_id


=> mais elle m'affiche TOUTES les recettes avec TOUTES les photos de chaque recette. Ce qui est normal, vu qu'il n'y a pas de limite. Et je crois que l'on ne peut pas faire de "limit" dans un JOIN ?

J'ai tenté quelque chose du genre :

SELECT recette.recette_id,recette.nom,recette.description,p.id
FROM recette
LEFT JOIN (SELECT id,recette_id FROM photo WHERE xxxxxxxxxx) p ON recette.recette_id = p.recette_id
WHERE xxxxxxxxxxxxxxxxxxxxxxxxxxxxx


=> mais cela m'affiche TOUTES les recettes avec TOUTES les photos de chaque recette.
=> J'ai essayé en ajoutant un "limit" dans le SELECT du LEFT JOIN, mais cela ne fait rien :p

Auriez vous une solution pour limiter le nombre de résultat d'une "sous requête" ?
=> Une fois la requête effectuée, je pourrais très bien limiter le nombre d'images à afficher à 5, mais je ne pense pas que ce soit la meilleure solution... surtout si les recettes ont plus d'une centaine de photo chacune :p

Merki.
Sammuel
Salut,

J'aimerais optimiser une tite chose au niveau du while qui retourne les résultats d'une requête mysql.

Le but : si aucun enregistrement mysql n'est retourné, stopper l'affichage de la page et rediriger vers une page 404 par exemple.

J'aimerais optimiser ce code :
$req = mysql_query("REQUETE");

[b]if(mysql_num_rows($req)>0){[/b]
while($row = mysql_fetch_assoc($req)){
$info = array(blaaaaaaaaaaaaaaaaa);
}
}else{
exit();
}


Pour tester si au moins un enregistrement est retourné, je suis 'obligé' de faire un 'mysql_num_rows($req)' et j'aimerais savoir si vous auriez une astuce pour éviter ce genre de chose.

Cela fonctionne, mais peut être qu'il y a mieux comme solution.

Merci !
Sammuel
Salut,

J'ai décidé de passer à l'UTF8, aussi, je rencontre quelques problèmes au niveau de l'encodage entre phpmyadmin et mysql.

J'utilise :
PHP 5.2
MYSQL 5.1
PHPMYADMIN 3.1

Quand j'ajoute des données (dans MYSQL) depuis un formulaire PHP que j'ai créé avec mes petites mains, les données sont bien insérées en UTF8 dans ma base de données. Et je n'utilise rien pour les encoder en UTF8... l'encodage fonctionne tout seul.

Par contre, si je souhaite ajouter des données depuis Phpmyadmin, dans cette même table, il insère les données brutes, sans les encodées en UTF8 !

Quand je parle de "données brute", c'est un texte de ce genre :
Etre averti par email lors d'une réponse à votre sujet

... avec des é, des à , etc...

Je suis donc obligé d'encoder moi même les données en UTF8 avant de les insérer directement dans Phpmyadmin smiley

Si j'utilise mon propre formulaire d'insertion de données, ça fonctionne. Si j'utilise phpmyadmin, ça ne fonctionne pas.

J'ai bo avoir tout retourné, mis tout en UTF8, phpmyadmin ne veut rien savoir ^_^

Je n'ai pas 36000 lignes à ajouter via phpmyadmin, mais ce serait quand même plus pratique s'il s'entendait bien avec son petit copain mysql :p

Sinon, j'ai remarqué qu'il y avait un "bug" avec les "à"... encore un mystère smiley

Avez vous rencontré ce genre de problème ? Si oui, comment procéder ?

Merci smiley

Ses derniers messages sur les forums

forum
Sammuel
le 06/04/2011 à 17:00
limit dans une sous requete ?
C'est ce qu'on appelle une limite de mysql :X

Je vais devoir contourner la chose alors, du genre, ajouter un champ 'selection' à ma table et faire un script qui ira sélectionner aléatoirement 5 photos de chaque recette.
Et je n'aurais plus qu'à les sélectionner.

Je n'aime pas ce genre de complication !
Sammuel
le 31/03/2011 à 15:44
limit dans une sous requete ?
Salut,

Cela fait un moment que je n'arrive pas à résoudre cette requête... Je ne sais pas d'ailleurs, si c'est la meilleure méthode à utiliser.

Pour résumé, sur une même page, j'aimerais lister plusieurs noms de recettes, avec en dessous de chaque nom, une liste de 5 photos (maximum). Sachant qu'une recette peut avoir un nombre X de photos.
Une recette peut avoir 20 photos, comme 5, 7, 10, 100, 1000 !

Je parle de recettes de cuisine pour simplifer mon exemple :)


Base de données :

RECETTE
recette_id
nom
description

PHOTO
id
recette_id


Résultats retournés

**********
Recette 1
photo 1
photo 2
photo 3
photo 4
**********
Recette 2
photo 5
photo 6
photo 7
photo 8
photo 9
photo 10
photo 11
photo 12
**********
Recette 3
photo 1
**********
Recette 4
photo 1
photo 2
photo 3
photo 4
photo 5
photo 6
**********


Résultats que j'aimerais obtenir

**********
Recette 1
photo 1
photo 2
photo 3
photo 4
**********
Recette 2
photo 5
photo 6
photo 7
photo 8
photo 9
**********
Recette 3
photo 1
**********
Recette 4
photo 1
photo 2
photo 3
photo 4
photo 5
**********


La requête de base est :

SELECT recette.recette_id,recette.nom,recette.description,photo.id FROM recette
LEFT JOIN photo ON photo.recette_id = recette.recette_id


=> mais elle m'affiche TOUTES les recettes avec TOUTES les photos de chaque recette. Ce qui est normal, vu qu'il n'y a pas de limite. Et je crois que l'on ne peut pas faire de "limit" dans un JOIN ?

J'ai tenté quelque chose du genre :

SELECT recette.recette_id,recette.nom,recette.description,p.id
FROM recette
LEFT JOIN (SELECT id,recette_id FROM photo WHERE xxxxxxxxxx) p ON recette.recette_id = p.recette_id
WHERE xxxxxxxxxxxxxxxxxxxxxxxxxxxxx


=> mais cela m'affiche TOUTES les recettes avec TOUTES les photos de chaque recette.
=> J'ai essayé en ajoutant un "limit" dans le SELECT du LEFT JOIN, mais cela ne fait rien :p

Auriez vous une solution pour limiter le nombre de résultat d'une "sous requête" ?
=> Une fois la requête effectuée, je pourrais très bien limiter le nombre d'images à afficher à 5, mais je ne pense pas que ce soit la meilleure solution... surtout si les recettes ont plus d'une centaine de photo chacune :p

Merki.
Sammuel
Je me demandais juste s'il n'y avait pas une autre solution, technique PHP, c'est tout :)

Mais à y re-penser, il ne doit pas avoir 36 autres solutions.

Ses derniers commentaires de news

news
Sammuel
le 24/03/2007 à 12:06
Le PHP Facile V4 !
Bravo pour cette nouvelle version, elle est très sympa ! autant que l'autre :)

Ses derniers commentaires de sites

Aucun commentaire de sites

Ses derniers commentaires de wall

Aucun commentaire wall
LoadingChargement en cours