Précédent   Le Forum de Génération Nouvelles Technologies > Logiciels > Développements
S'inscrire Stats IRC FAQ Membres Calendrier Recherche Messages du jour Marquer les forums comme lus

Développements Tout ce qui touche au développement d'applications ou du Web

Réponse
 
LinkBack (4) Outils de la discussion Modes d'affichage
Vieux 05/09/2006, 16h04   4 links from elsewhere to this Post. Click to view. #1 (permalink)
Fireman
Débutant
 
Avatar de Fireman
 
Date d'inscription: août 2004
Localisation: Lyon
Messages: 738
Pouvoir de réputation: 61 Fireman est bien parti(e)
Par défaut Problème de requete SQL/PHP

Bonjour,

Voilà j'aimerai savoir si quelqu'un peu me donné des info sur comment cree un requete specifique.

En fait j'ai un fait un blog sur lequel, je post des messages, bon pour afficher les messages, le listing pas de problème mais là j'aimerai rajouter sur la page ou l'on vois un post, un lien precedent et suivant vers les posts precedent et suivant.

Malheureusement pour moi je ne vois plus comment faire car les post sont enregistrer dans la BD avec un ID qui ne suis pas specialement donc je ne peux pas faire l'ID du post en cours -1 ou +1.

Y a t'il une fonction qui permet de demander a aller chercher l'entrée precedente/suivante dans MySQL ?

Genre ma requete est ainsi là pour le post a afficher :
[PHP]SELECT UNIX_TIMESTAMP(date) AS date,id,ref,titre,texte,musique,tv,vtt FROM blog WHERE `id`='980'[/PHP]
Le post precedent à un ID à 976 mais cela pourrait etre 978 ou autre.

Merci
__________________
Un écran s'éteint, un être s'éveille...
Fireman est déconnecté   Réponse avec citation
Vieux 05/09/2006, 16h51   #2 (permalink)
Manium
Vieux
 
Date d'inscription: septembre 2002
Localisation: BHV
Messages: 4 507
Pouvoir de réputation: 262 Manium deviendra connu bien assez tôt
Par défaut

Salut

tu utilises quelle version de mysql ?
Manium est déconnecté   Réponse avec citation
Vieux 05/09/2006, 17h03   #3 (permalink)
Kikof
Informaticien du dimanche
 
Date d'inscription: mars 2003
Localisation: Autrefois, on appelait cela Europe
Messages: 7 010
Pouvoir de réputation: 386 Kikof est un joyau dans sa gangueKikof est un joyau dans sa gangue
Par défaut

Salut,

* Si les id suivent l'ordre chronologique, c'est à dire si l'assertion suivante est vérifiée : si id1 > id2 alors date1 > date2
Avancer d'un message
Code:
SELECT UNIX_TIMESTAMP(date) AS date,id,ref,titre,texte,musique,tv,vtt 
 FROM blog WHERE `id`> $id_affiche ORDER BY id ASC LIMIT 0,1
Reculer d'un message
Code:
SELECT UNIX_TIMESTAMP(date) AS date,id,ref,titre,texte,musique,tv,vtt 
 FROM blog WHERE `id`< $id_affiche ORDER BY id DESC LIMIT 0,1
$id_affiche contient l'id du message courant.


* Dans le cas contraire on peut se baser de façon plus sûre sur la date selon le même schéma :
Code:
SELECT UNIX_TIMESTAMP(date) AS date,id,ref,titre,texte,musique,tv,vtt 
 FROM blog WHERE date > $date_affiche ORDER BY date ASC LIMIT 0,1
Reculer d'un message
Code:
SELECT UNIX_TIMESTAMP(date) AS date,id,ref,titre,texte,musique,tv,vtt 
 FROM blog WHERE date < $date_affiche ORDER BY date DESC LIMIT 0,1
$date_affiche contient la date du message courant en temps UNIX (s depuis le 1/1/1970).


N'oublie pas de tenir compte des extrêmités de la chaîne (premier et derniers messages).
__________________
Turn the page, the question lies between the lines
Will we, will you...
Can we, can you, can we change?

- Symphony X -
Kikof est déconnecté   Réponse avec citation
Vieux 15/10/2006, 18h39   #4 (permalink)
Fireman
Débutant
 
Avatar de Fireman
 
Date d'inscription: août 2004
Localisation: Lyon
Messages: 738
Pouvoir de réputation: 61 Fireman est bien parti(e)
Par défaut

Merci de vos reponses, j'ai fais ainsi comme suis

Message suivant
[PHP]<?php
$req_inf = mysql_query("CREATE TEMPORARY TABLE temp SELECT ID,REF,TITRE FROM $dbblog WHERE REF =0");
$req_inf = mysql_query("SELECT MAX(ID) FROM temp WHERE ID <$id");
$res_inf = mysql_result($req_inf, 0);
$req_inf2 = mysql_query("SELECT TITRE FROM temp WHERE ID =$res_inf");
$res_inf2 = mysql_result($req_inf2, 0);
$req_inf = mysql_query("DROP TABLE temp");[/PHP]

Message précédent
[PHP]<?php
$req_sup = mysql_query("CREATE TEMPORARY TABLE temp SELECT ID,REF,TITRE FROM $dbblog WHERE REF =0");
$req_sup = mysql_query("SELECT MIN(ID) FROM temp WHERE ID >$id");
$res_sup = mysql_result($req_sup, 0);
$req_sup2 = mysql_query("SELECT TITRE FROM temp WHERE ID =$res_sup");
$res_sup2 = mysql_result($req_sup2, 0);
$req_sup = mysql_query("DROP TABLE temp");[/PHP]

Y a surement plus facile mais bon j'apprend doucement
__________________
Un écran s'éteint, un être s'éveille...
Fireman est déconnecté   Réponse avec citation
Vieux 15/10/2006, 19h08   #5 (permalink)
Kikof
Informaticien du dimanche
 
Date d'inscription: mars 2003
Localisation: Autrefois, on appelait cela Europe
Messages: 7 010
Pouvoir de réputation: 386 Kikof est un joyau dans sa gangueKikof est un joyau dans sa gangue
Par défaut

Je ne vois pas pourquoi tu crées une table temporaire. Ensuite tu fais une requête juste pour avoir l'id puis une autre pour extraire les infos. Pas du tout optimisé ton truc, il ne devrait y avoir qu'une requête, tu en fais 4.

Les requêtes que j'avais postées ne marchent pas ?
__________________
Turn the page, the question lies between the lines
Will we, will you...
Can we, can you, can we change?

- Symphony X -
Kikof est déconnecté   Réponse avec citation
Vieux 18/10/2006, 14h24   #6 (permalink)
Fireman
Débutant
 
Avatar de Fireman
 
Date d'inscription: août 2004
Localisation: Lyon
Messages: 738
Pouvoir de réputation: 61 Fireman est bien parti(e)
Par défaut

Pas pu les testé je pense que des le depart quand j'ai créer mon blog j'ai aps du tout été dans la demarche de cree des tables SQL optimisé du coup comme les infos sont toutes dans la meme table si je veux sortir toutes les infos que j'ai besoin je dois faire plusieurs requetes.

Pour la table temporaire, sans elle ca ne fonctionnait pas.

Pas optimisé c'est sur lol je suis un gros débutant, mais bon disons que vu que ca marche ainsi je vais y laisser de plus vu le passage presque anecdotique sur ce blog mdr ca ne va pas etre trop ce qui va charger le serveur.

Merci encore a vous
__________________
Un écran s'éteint, un être s'éveille...
Fireman est déconnecté   Réponse avec citation
Vieux 18/10/2006, 17h35   #7 (permalink)
Kikof
Informaticien du dimanche
 
Date d'inscription: mars 2003
Localisation: Autrefois, on appelait cela Europe
Messages: 7 010
Pouvoir de réputation: 386 Kikof est un joyau dans sa gangueKikof est un joyau dans sa gangue
Par défaut

Citation:
Pas pu les testé je pense que des le depart quand j'ai créer mon blog j'ai aps du tout été dans la demarche de cree des tables SQL optimisé du coup comme les infos sont toutes dans la meme table si je veux sortir toutes les infos que j'ai besoin je dois faire plusieurs requetes.
SELECT permet de sortir autant de champs que tu veux en une seule requête. C'est au contraire quand les infos sont dispersées dans plusieurs tables qu'on est amené à faire des requêtes multiples. Dans l'exemple que tu donnes, ce n'est pas la structure de la table qui est à revoir mais la wagon de requêtes que tu fais pour pas grand chose. Sur un petit blog, personne n'y verra rien mais s'il doit un jour subir une surcharge (un certain nombres de personnes connectées simultanément), cela va assassiner le serveur. Quant aux tables temporaires, je suis sûr à 99 % que c'est inutile dans ton cas.

Autre chose, si tu postes des questions, qu'on te donne des solutions (foireuses ou pas, ce n'est pas le problème) et que tu ne prends même pas la peine de les tester, il ne faudra pas t'étonner de recevoir de moins en moins de réponses.
__________________
Turn the page, the question lies between the lines
Will we, will you...
Can we, can you, can we change?

- Symphony X -

Dernière modification par Kikof 18/10/2006 à 18h13.
Kikof est déconnecté   Réponse avec citation
Vieux 02/11/2006, 01h52   #8 (permalink)
Fireman
Débutant
 
Avatar de Fireman
 
Date d'inscription: août 2004
Localisation: Lyon
Messages: 738
Pouvoir de réputation: 61 Fireman est bien parti(e)
Par défaut

Mais qui te dis que je ne teste pas ?
Bien sur que je test, j'ai testé au fait et ca ne va pas, car les commentaires s'interpose dans les date et ID des posts, ca recul effectivement ou ca avance mais ca ne chope du coup pas le post je dirai "master" suivant mais les comms.
De toute façon c'est ma faute j'aurai du departagé les posts des commentaires avec une colonne specifique. Enfin j'ai appris (et oui dur dur) comment donc on selectionne une colonne et tout.
__________________
Un écran s'éteint, un être s'éveille...

Dernière modification par Fireman 02/11/2006 à 01h59.
Fireman est déconnecté   Réponse avec citation
Vieux 02/11/2006, 10h09   #9 (permalink)
Kikof
Informaticien du dimanche
 
Date d'inscription: mars 2003
Localisation: Autrefois, on appelait cela Europe
Messages: 7 010
Pouvoir de réputation: 386 Kikof est un joyau dans sa gangueKikof est un joyau dans sa gangue
Par défaut

Citation:
Mais qui te dis que je ne teste pas ?
Je me demande bien...

Citation:
Posté par fireman
Pas pu les testé
Oh yes, am recalling now.

Citation:
ca ne va pas, car les commentaires s'interpose dans les date et ID des posts, ca recul effectivement ou ca avance mais ca ne chope du coup pas le post je dirai "master" suivant mais les comms.
Quelque chose me dit que cela n'a rien à voir avec les créations de tables temporaires mais plutôt avec un détail que j'ignorais :

Citation:
$req_inf = mysql_query("CREATE TEMPORARY TABLE temp SELECT ID,REF,TITRE FROM $dbblog WHERE REF =0");
Et si...

Avancer d'un message
[php]SELECT UNIX_TIMESTAMP(date) AS date,id,ref,titre,texte,musique,tv,vtt
FROM blog WHERE (ref = 0 and id > $id_affiche) ORDER BY id ASC LIMIT 0,1[/php]

Reculer d'un message
[php]SELECT UNIX_TIMESTAMP(date) AS date,id,ref,titre,texte,musique,tv,vtt
FROM blog WHERE (ref = 0 and id < $id_affiche) ORDER BY id DESC LIMIT 0,1[/php]Peut être... Ou peut être pas. C'est là tout le charme du binaire.
Kikof est déconnecté   Réponse avec citation
Vieux 05/11/2006, 14h08   #10 (permalink)
Fireman
Débutant
 
Avatar de Fireman
 
Date d'inscription: août 2004
Localisation: Lyon
Messages: 738
Pouvoir de réputation: 61 Fireman est bien parti(e)
Par défaut

Je testerai, tu es un chef (vénération ultime)
__________________
Un écran s'éteint, un être s'éveille...
Fireman est déconnecté   Réponse avec citation
Réponse


LinkBacks (?)
LinkBack to this Thread: http://forum.generation-nt.com/developpements/probleme-requete-sql-php-165734/
Envoyé par For Type Date
sql trouver id precedente - Recherche Google This thread Refback 02/10/2006 00h57
faire une requete sql php - Recherche Google This thread Refback 29/09/2006 17h33
requete xml sql php - Recherche Google This thread Refback 29/09/2006 12h19
envoyer une requete sql - Recherche Google This thread Refback 29/09/2006 12h02

Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 

Règles de messages
Vous pouvez ouvrir de nouvelles discussions : nonoui
Vous pouvez envoyer des réponses : nonoui
Vous pouvez insérer des pièces jointes : nonoui
Vous pouvez modifier vos messages : nonoui

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are non
Outils de la discussion
Modes d'affichage


Discussions similaires
Discussion Auteur Forum Réponses Dernier message
Probleme De Php fld46 Développements 1 21/02/2005 16h48
Requête Sql JANTTO Développements 25 26/11/2004 22h35
Requête Sql De Mise à Jour De Donnée Axacilum Développements 2 14/09/2004 09h09
Echec De La Requête De Ping Gadwin Réseaux locaux 7 28/07/2004 08h30
Prob De Format Du Texte (php/sql) ludoweb Développements 4 05/07/2004 13h44


Fuseau horaire GMT +2. Il est actuellement 20h32.

S'inscrire Charte Stats IRC FAQ Membres Calendrier Recherche Messages du jour Marquer les forums comme lus

Hit-Parade NewsNow