Problème avec ORDER BY
Résolu
nano49070
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
nano49070 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
nano49070 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je n'y connais vraiment pas grand chose en PHP MYSQL alors merci de m'aider.
J'ai une requête MYSQL qui fonctionne mais qui me donne des résultats dans le désordre (ou plus exactement dans un ordre que je ne maitrise pas)
J'aimerais avoir les résultats de ma requête dans l'ordre (si possible décroissant) des a.annonce_id
A chaque fois que je tente de mettre un ORDER BY j'ai des messages d'erreur
voila ma requête:
Par avance grand merci à ceux qui pourrons m'aider, je ne sais pas si c'est important mais
mon site est déjà un peu ancien et est en PHP3
EDIT: Ajout de la coloration syntaxique.
Je n'y connais vraiment pas grand chose en PHP MYSQL alors merci de m'aider.
J'ai une requête MYSQL qui fonctionne mais qui me donne des résultats dans le désordre (ou plus exactement dans un ordre que je ne maitrise pas)
J'aimerais avoir les résultats de ma requête dans l'ordre (si possible décroissant) des a.annonce_id
A chaque fois que je tente de mettre un ORDER BY j'ai des messages d'erreur
voila ma requête:
$user_id = $userdata['user_id']; $sql = mysql_query(" SELECT a.annonce_id, c.cat_name, a.count_photos, a.annonce_title, a.annonce_date, a.main_photo_id, p.photo_id, p.photo_name, p.annonce_id FROM " . ANNONCES_TABLE . " a LEFT OUTER JOIN " . table_photos . " p ON a.main_photo_id = p.photo_id LEFT OUTER JOIN " . CATEGORIES_TABLE . " c ON a.cat_id = c.cat_id where a.poster_id = '$user_id' LIMIT $start,$app") ;
Par avance grand merci à ceux qui pourrons m'aider, je ne sais pas si c'est important mais
mon site est déjà un peu ancien et est en PHP3
EDIT: Ajout de la coloration syntaxique.
A voir également:
- Problème avec ORDER BY
- By click downloader avis - Forum Enregistrement / Traitement audio
- Ads by cooking ✓ - Forum Virus
- Order@live-helper.com - Forum Consommation & Internet
- Files by google - Accueil - Applications & Logiciels
- Photos liked by ne fonctionne plus - Forum Facebook
7 réponses
Bonjour.
Sachant qu'il faut placer l'order by avant le LIMIT.
mais comme le dit NHENRY... quels messages d'erreur ?
Avec quel code ?
Sachant qu'il faut placer l'order by avant le LIMIT.
mais comme le dit NHENRY... quels messages d'erreur ?
Avec quel code ?
Bonjour NHenry et Jordane45 et merci de vous intéresser à mon cas.
J'avais du effectivement mettre le order by au mauvais endroit car maintenant plus de problème j'ai bien mes annonces classées par ordre décroissant d'id :-)
Par contre, j'ai un nouveau soucis qui m'avait échappé avec cette requête, car j'ai deux types d'annonces (avec et sans photos)
Ma requête affiche bien les deux types d'annonces mais lorsque je récupère les résultats pour afficher dans un tableau :
la photo, l'id de l'annonce, le titre, la catégorie, la date de publication, la date d'expiration
tout marche impeccablement bien pour les annonces avec photo mais our les annonces sans photo j'ai le résultat suivant :
La colonne photo affiche une image par défaut "pas de photo" (c'est ce que je souhaite donc pas de soucis)
la colonne id reste vide (elle devrait contenir l'id de l'annonce )
toutes les autres colonnes sont remplies correctement!
Je pense que c'est un problème de jointure des différentes table mais je suis largué ;-(
encore merci de me consacrer un peu de votre temps.
J'avais du effectivement mettre le order by au mauvais endroit car maintenant plus de problème j'ai bien mes annonces classées par ordre décroissant d'id :-)
Par contre, j'ai un nouveau soucis qui m'avait échappé avec cette requête, car j'ai deux types d'annonces (avec et sans photos)
Ma requête affiche bien les deux types d'annonces mais lorsque je récupère les résultats pour afficher dans un tableau :
la photo, l'id de l'annonce, le titre, la catégorie, la date de publication, la date d'expiration
tout marche impeccablement bien pour les annonces avec photo mais our les annonces sans photo j'ai le résultat suivant :
La colonne photo affiche une image par défaut "pas de photo" (c'est ce que je souhaite donc pas de soucis)
la colonne id reste vide (elle devrait contenir l'id de l'annonce )
toutes les autres colonnes sont remplies correctement!
Je pense que c'est un problème de jointure des différentes table mais je suis largué ;-(
encore merci de me consacrer un peu de votre temps.
Je pense que ma requête fonctionne mais qu'elle génère d'autres problèmes par ailleurs.
l'ensemble du code de la requête et de l'affichage des résultats est :
$user_id = $userdata['user_id'];
$sql = mysql_query("
SELECT a.annonce_id, c.cat_name, a.count_photos, a.annonce_title, a.annonce_date, a.main_photo_id, p.photo_id, p.photo_name, p.annonce_id
FROM " . ANNONCES_TABLE . " a
LEFT OUTER JOIN " . table_photos . " p
ON a.main_photo_id = p.photo_id
LEFT OUTER JOIN " . CATEGORIES_TABLE . " c
ON a.cat_id = c.cat_id
where a.poster_id = '$user_id'
ORDER BY a.annonce_id DESC
LIMIT $start,$app") ;
while ( $row = mysql_fetch_array($sql))
{
$photo_path = !empty($row['photo_name']) ? 'upload/thumbs/' . $row['photo_name'] : $script_path . $template_path . '/images/nophoto.gif';
$expiration_date = $row['annonce_date']+$script_config['announcement_duration']*3600*24;
$template->assign_block_vars('annonces', array(
'ANNONCE_ID' => $row['annonce_id'],
'EXPIRE_DATE' => create_date($expiration_date,'','','d/m/Y'),
'ANNONCE_DATE' => create_date($row['annonce_date'],'','','d/m/Y'),
'CATEGORIE' => $row['cat_name'],
'IMAGE' => '<img src="' . $photo_path . '">',
'TITLE' => $row['annonce_title'])
);
}
J'ai probablement un gros soucis avec ce qui est après le while quand il n'y à pas de photo et mon $row semble prendre des valeurs étrange (j'ai un décompte des annonces qui affiche le nombre d'annonces et alors que j'ai 5 annonces il me met "vous avez 2 photos"
l'ensemble du code de la requête et de l'affichage des résultats est :
$user_id = $userdata['user_id'];
$sql = mysql_query("
SELECT a.annonce_id, c.cat_name, a.count_photos, a.annonce_title, a.annonce_date, a.main_photo_id, p.photo_id, p.photo_name, p.annonce_id
FROM " . ANNONCES_TABLE . " a
LEFT OUTER JOIN " . table_photos . " p
ON a.main_photo_id = p.photo_id
LEFT OUTER JOIN " . CATEGORIES_TABLE . " c
ON a.cat_id = c.cat_id
where a.poster_id = '$user_id'
ORDER BY a.annonce_id DESC
LIMIT $start,$app") ;
while ( $row = mysql_fetch_array($sql))
{
$photo_path = !empty($row['photo_name']) ? 'upload/thumbs/' . $row['photo_name'] : $script_path . $template_path . '/images/nophoto.gif';
$expiration_date = $row['annonce_date']+$script_config['announcement_duration']*3600*24;
$template->assign_block_vars('annonces', array(
'ANNONCE_ID' => $row['annonce_id'],
'EXPIRE_DATE' => create_date($expiration_date,'','','d/m/Y'),
'ANNONCE_DATE' => create_date($row['annonce_date'],'','','d/m/Y'),
'CATEGORIE' => $row['cat_name'],
'IMAGE' => '<img src="' . $photo_path . '">',
'TITLE' => $row['annonce_title'])
);
}
J'ai probablement un gros soucis avec ce qui est après le while quand il n'y à pas de photo et mon $row semble prendre des valeurs étrange (j'ai un décompte des annonces qui affiche le nombre d'annonces et alors que j'ai 5 annonces il me met "vous avez 2 photos"
As tu testé ta requête en direct dans ta bdd ?
Regardes ceci : https://codes-sources.commentcamarche.net/faq/10778-heidisql-tester-ses-requetes-sql
Regardes ceci : https://codes-sources.commentcamarche.net/faq/10778-heidisql-tester-ses-requetes-sql
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai installé Heidi sql pour tester ma requête, mais je ne suis pas certain d'avoir compris comment cela m'aidera
il me trouve des erreurs sql 1064 mais je ne sais pas ce que c'est......
J'ai supprimé tout ce qui concernait les images dans ma précédente requête
Ce code semble fonctionner en tous points:
$user_id = $userdata['user_id'];
$sql = mysql_query("
SELECT a.annonce_id, c.cat_name, a.count_photos, a.annonce_title, a.annonce_date, a.main_photo_id
FROM " . ANNONCES_TABLE . " a
LEFT OUTER JOIN " . CATEGORIES_TABLE . " c
ON a.cat_id = c.cat_id
where a.poster_id = '$user_id'
ORDER BY a.annonce_id DESC
LIMIT $start,$app") ;
while ( $row = mysql_fetch_array($sql) )
{
$expiration_date = $row['annonce_date']+$script_config['announcement_duration']*3600*24;
$template->assign_block_vars('annonces', array(
'ANNONCE_ID' => $row['annonce_id'],
'EXPIRE_DATE' => create_date($expiration_date,'','','d/m/Y'),
'ANNONCE_DATE' => create_date($row['annonce_date'],'','','d/m/Y'),
'CATEGORIE' => $row['cat_name'],
'IMAGE' => ($row['count_photos']) ? '<img src="' . $template_path . '/images/pic.png" alt="' . $row['count_photos'] . ' photo(s)">' : '',
'TITLE' => $row['annonce_title'])
);
Le seul hic c'est que j'aimerais quand même bien arriver à afficher la photo de chaque annonce qui en contient plutôt qu'une image qui symbolise qu'il y a des photos.
il me trouve des erreurs sql 1064 mais je ne sais pas ce que c'est......
J'ai supprimé tout ce qui concernait les images dans ma précédente requête
Ce code semble fonctionner en tous points:
$user_id = $userdata['user_id'];
$sql = mysql_query("
SELECT a.annonce_id, c.cat_name, a.count_photos, a.annonce_title, a.annonce_date, a.main_photo_id
FROM " . ANNONCES_TABLE . " a
LEFT OUTER JOIN " . CATEGORIES_TABLE . " c
ON a.cat_id = c.cat_id
where a.poster_id = '$user_id'
ORDER BY a.annonce_id DESC
LIMIT $start,$app") ;
while ( $row = mysql_fetch_array($sql) )
{
$expiration_date = $row['annonce_date']+$script_config['announcement_duration']*3600*24;
$template->assign_block_vars('annonces', array(
'ANNONCE_ID' => $row['annonce_id'],
'EXPIRE_DATE' => create_date($expiration_date,'','','d/m/Y'),
'ANNONCE_DATE' => create_date($row['annonce_date'],'','','d/m/Y'),
'CATEGORIE' => $row['cat_name'],
'IMAGE' => ($row['count_photos']) ? '<img src="' . $template_path . '/images/pic.png" alt="' . $row['count_photos'] . ' photo(s)">' : '',
'TITLE' => $row['annonce_title'])
);
Le seul hic c'est que j'aimerais quand même bien arriver à afficher la photo de chaque annonce qui en contient plutôt qu'une image qui symbolise qu'il y a des photos.
Bonsoir,
J'ai finalement réussi à résoudre mon problème, merci à tous ceux qui ont tenté de m'aider.
J'ai finalement réussi à résoudre mon problème, merci à tous ceux qui ont tenté de m'aider.
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)
TU peux aussi indiquer la solution que tu as trouvé...ça pourra éventuellement aider d'autres internautes qui auraient le même souci....
Cordialement,
Jordane
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)
TU peux aussi indiquer la solution que tu as trouvé...ça pourra éventuellement aider d'autres internautes qui auraient le même souci....
Cordialement,
Jordane
Voila le code qui fonctionne, j'ai changé la place du Order by et la ligne 'IMAGE'
$sql = mysql_query("
SELECT a.annonce_id, c.cat_name, a.count_photos, a.annonce_title, a.annonce_date, a.main_photo_id, p2.photo_id, p2.photo_name
FROM " . ANNONCES_TABLE . " a
LEFT OUTER JOIN " . CATEGORIES_TABLE . " c
ON a.cat_id = c.cat_id
LEFT OUTER JOIN " . PHOTOS_TABLE . " p2
ON a.main_photo_id = p2.photo_id
where a.poster_id = '$user_id'
ORDER BY a.annonce_id DESC
LIMIT $start,$app") ;
while ( $row = mysql_fetch_array($sql) )
{
$photo_path = !empty($row['photo_name']) ? 'upload/thumbs/' . $row['photo_name'] : $script_path . $template_path . '/images/nophoto.gif';
$expiration_date = $row['annonce_date']+$script_config['announcement_duration']*3600*24;
$template->assign_block_vars('annonces', array(
'ANNONCE_ID' => $row['annonce_id'],
'EXPIRE_DATE' => create_date($expiration_date,'','','d/m/Y'),
'ANNONCE_DATE' => create_date($row['annonce_date'],'','','d/m/Y'),
'CATEGORIE' => $row['cat_name'],
'IMAGE' => ($row['count_photos']) ? '<img src="' . $photo_path . '" alt="' . $row['count_photos'] . ' photo(s)">' : '',
'TITLE' => $row['annonce_title'])
);
$sql = mysql_query("
SELECT a.annonce_id, c.cat_name, a.count_photos, a.annonce_title, a.annonce_date, a.main_photo_id, p2.photo_id, p2.photo_name
FROM " . ANNONCES_TABLE . " a
LEFT OUTER JOIN " . CATEGORIES_TABLE . " c
ON a.cat_id = c.cat_id
LEFT OUTER JOIN " . PHOTOS_TABLE . " p2
ON a.main_photo_id = p2.photo_id
where a.poster_id = '$user_id'
ORDER BY a.annonce_id DESC
LIMIT $start,$app") ;
while ( $row = mysql_fetch_array($sql) )
{
$photo_path = !empty($row['photo_name']) ? 'upload/thumbs/' . $row['photo_name'] : $script_path . $template_path . '/images/nophoto.gif';
$expiration_date = $row['annonce_date']+$script_config['announcement_duration']*3600*24;
$template->assign_block_vars('annonces', array(
'ANNONCE_ID' => $row['annonce_id'],
'EXPIRE_DATE' => create_date($expiration_date,'','','d/m/Y'),
'ANNONCE_DATE' => create_date($row['annonce_date'],'','','d/m/Y'),
'CATEGORIE' => $row['cat_name'],
'IMAGE' => ($row['count_photos']) ? '<img src="' . $photo_path . '" alt="' . $row['count_photos'] . ' photo(s)">' : '',
'TITLE' => $row['annonce_title'])
);