PHP, besoin d'un petit cout de pouce

Statut
N'est pas ouverte pour d'autres réponses.

guslinux

Gamerz'ien
whatever42 a dit:
\o/ je vais encore pouvoir faire mon gros lourd,
alors ... en Ruby on Rails ...

Code:
@news = News.find(:all, :limit => 20, :order => 'date DESC')
et pour ceux qui sont vraiment fans des jointures il y a le paramètre
Code:
:include => { :news, :titre }
qui va faire la jointure en utilisant la colonne titre_id de news et la table titre, mais si les modèles sont définis un peu correctement, il fait la jointure tout seul
Je préfère quand meme taper la requete en SQL ^^
 
W

whatever42

ex membre
guslinux a dit:
Je préfère quand meme taper la requete en SQL ^^
tes pratiques sado-masochistes ne m'intéressent pas :p
 

zoheir

cvm.mangaleet()
guslinux a dit:
Je préfère quand meme taper la requete en SQL ^^
Si tu préfères perdre du temps :cool:
 

guslinux

Gamerz'ien
cvm の術 a dit:
Si tu préfères perdre du temps :cool:
disons juste que quand je vois passer la requete en SQL je la comprend ... ici en RoR je comprend moins ...

De plus quand tu dois définir un DATE_FORMAT, ou utiliser tout autre fonction MySQL ca marche comment ??
 

Soulsight

Elite
héhé pour ma part j'attends de le voir éprouver sur de vrais gros projets avant de me lancer uniquement dedans ...

mais j'avoues que je suis bien tenté des fois quand je vois des requêtes avec des sous requêtes multiples et des conditions parfois space ...

si un de vous ici a codé un petit projet / moyen projet avec RoR de a à Z ca serai sympa de linker !
 

guslinux

Gamerz'ien
Soulsight a dit:
héhé pour ma part j'attends de le voir éprouver sur de vrais gros projets avant de me lancer uniquement dedans ...

mais j'avoues que je suis bien tenté des fois quand je vois des requêtes avec des sous requêtes multiples et des conditions parfois space ...

si un de vous ici a codé un petit projet / moyen projet avec RoR de a à Z ca serai sympa de linker !
Moi j'attend mon live avant de m'y mettre serieusement ... mais bon actuellement j'ai un projet en ASM, un en PHP/AJAX, un en VHDL et un en VB ... alors apprendre RoR c'est pas le moment :beuh:
 
W

whatever42

ex membre
De plus quand tu dois définir un DATE_FORMAT, ou utiliser tout autre fonction MySQL ca marche comment ??
Les date sont transformées en objets Date et les datetime en objet Time, après tu fais toutes les manipulations que tu veux dessus, y'a même des trucs sympa comme "madate => 1.week.ago" pour voir si la date est dans la dernière semaine ou bien des "madate - 6.months" pour calculer la date 6 mois avant etc ...
la référence de l'API de base pour Time est là : http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Numeric/Time.html

si un de vous ici a codé un petit projet / moyen projet avec RoR de a à Z ca serai sympa de linker !
C'est l'exemple de "Agile Web Dev with Rails", la plupart des concepts y sont abordés
http://www.pragmaticprogrammer.com/titles/rails/code.html

Et non, rassurez-vous, faut pas taper tout le code, lisez un peu de doc sur les bases de Rails, vous verrez que 90% du code contenu dans l'archive est généré automatiquement.

Sinon j'ai bien un gros truc codé de a à z, mais mon 'client' serait pas d'accord je pense ;)
 
1er
OP
DeScH

DeScH

AstaLaVista
J'ai une petite question encore.

Je voudrai sélectionner la news précédente et suivante dans ma table.

Je pourais faire $id = $id +1 ou -1... mais le prob c'est qu'il y a parfois l'id qui passe de 103 a 109 donc cette formule ne sait pas récupérer la news.

Existe-t-til un autre moyen?
 

Xou

I ♥ rien
C'est vrai que le Ruby parait bien plus simple d'un coup en voyant tout ça.
 

DaBeast

Elite
select a.id,
b.titre_jeu
from table_avec_lesnews a,
table_jeu b

where a.id = b.titre_jeuid
 
1er
OP
DeScH

DeScH

AstaLaVista
DeScH a dit:
J'ai une petite question encore.

Je voudrai sélectionner la news précédente et suivante dans ma table.

Je pourais faire $id = $id +1 ou -1... mais le prob c'est qu'il y a parfois l'id qui passe de 103 a 109 donc cette formule ne sait pas récupérer la news.

Existe-t-til un autre moyen?
Personne pour ceci?
 

guslinux

Gamerz'ien
DeScH a dit:
J'ai une petite question encore.

Je voudrai sélectionner la news précédente et suivante dans ma table.

Je pourais faire $id = $id +1 ou -1... mais le prob c'est qu'il y a parfois l'id qui passe de 103 a 109 donc cette formule ne sait pas récupérer la news.

Existe-t-til un autre moyen?
Alors là on peut faire compliqué ou faire simple ... pour la solution compliquée voici :

Code:
SELECT * FROM News WHERE id=(SELECT id FROM News WHERE id<$id ORDER BY id DESC LIMIT 1) OR id>=$id ORDER BY id DESC LIMIT 3
Si je me suis pas trompé, la requete va te renvoyer 3 enregistrements :
$id-"1"
$id
$id+"1"
 

Calvin80

Respect is key
guslinux a dit:
Alors là on peut faire compliqué ou faire simple ... pour la solution compliquée voici :

Code:
SELECT * FROM News WHERE id=(SELECT id FROM News WHERE id<$id ORDER BY id DESC LIMIT 1) OR id>=$id ORDER BY id DESC LIMIT 3
Si je me suis pas trompé, la requete va te renvoyer 3 enregistrements :
$id-"1"
$id
$id+"1"
yep.
Ou alors
Code:
SELECT id FROM News WHERE id <=max($id,(SELECT min(id)  FROM News WHERE id>$id)) ORDER BY id DESC LIMIT 3
qui devrait donner la meme chose mais en sens inverse... (suffut d'inverser le min en max, le < en > et le DESC en ASC pour avoir le meme ordre)
 
1er
OP
DeScH

DeScH

AstaLaVista
Merci. Et comment faire pour dégager la précédente, la news actuelle et la suivante alors? (elles seront placées à des endroits différents de la page).

Comme ceci:
 

guslinux

Gamerz'ien
DeScH a dit:
Merci. Et comment faire pour dégager la précédente, la news actuelle et la suivante alors? (elles seront placées à des endroits différents de la page).

Comme ceci:
Les records sont dans l'ordre des id

$result = mysql_query('');
$news_avant = mysql_fetch_assoc($result);
$news_courante = mysql_fetch_assoc($result);
$news_apres = mysql_fetch_assoc($result);
 
1er
OP
DeScH

DeScH

AstaLaVista
oui mais je ne comprends pas. Pour avoir les 3 groupés, on fait un while mais séparément, on ne peut pas faire 3x mysql_fetch_array? ca marche pour un des résultats mais les autres non
 

guslinux

Gamerz'ien
DeScH a dit:
oui mais je ne comprends pas. Pour avoir les 3 groupés, on fait un while mais séparément, on ne peut pas faire 3x mysql_fetch_array? ca marche pour un des résultats mais les autres non
Tu parles surement d'un code comme celui ci :

Code:
$result = mysql_query('');
while($line = mysql_fetch_assoc($result)){
// traitement de $line
}
Le "while($line = mysql_fetch_assoc($result))" signifie : on boucle tant que le résultat de la fonction mysql_fetch_assoc() est non null. A chaque boucle on met le résultat dans $line.
 
1er
OP
DeScH

DeScH

AstaLaVista
oui oui ca je sais, mais je ne veux pas faire comme ça justement.

Tu m'as dit:

$result = mysql_query('');
$news_avant = mysql_fetch_assoc($result );
$news_courante = mysql_fetch_assoc($result );
$news_apres = mysql_fetch_assoc($result );

Mais on ne peut pas traiter 3x la meme requete non? Je voudrais créer des variables différentes donc par exemple

$news_avant['titre']
puis
$news_courante ['titre']
et enfin
$news_apres ['titre']
 

oNi-

:baille: Lecteur
Ce n'est pas sur la requête que tu fais tes traitements mais sur son résultat, qui contient 0 à plusieurs lignes.
Chaque fois que tu fais un fetch sur $result tu obiens une nouvelle ligne (ou NULL).
Tu dis avoir compris le principe du while, pourtant ta question laisse penser le contraire =] . Mettre le fetch dans la condition du while revient à faire 1 à plusieurs fetch consécutifs, donc ce que t'a "proposé" (en fait, expliqué) guslinux est correct.
Et donc ce que tu demandes est tout à fait possible de cette manière, bien que "dangereux" vu que tu ne testes pas le NULL.

Tu n'as qu'à procéder avec le while et, gràce à un test sur un compteur, tu remplis les variables adéquates. (attention aux cas particuliers : première et dernière news pour le traitement postérieurs des variables)
 

guslinux

Gamerz'ien
oNi- a dit:
Ce n'est pas sur la requête que tu fais tes traitements mais sur son résultat, qui contient 0 à plusieurs lignes.
Chaque fois que tu fais un fetch sur $result tu obiens une nouvelle ligne (ou NULL).
Tu dis avoir compris le principe du while, pourtant ta question laisse penser le contraire =] . Mettre le fetch dans la condition du while revient à faire 1 à plusieurs fetch consécutifs, donc ce que t'a "proposé" (en fait, expliqué) guslinux est correct.
Et donc ce que tu demandes est tout à fait possible de cette manière, bien que "dangereux" vu que tu ne testes pas le NULL.

Tu n'as qu'à procéder avec le while et, gràce à un test sur un compteur, tu remplis les variables adéquates. (attention aux cas particuliers : première et dernière news pour le traitement postérieurs des variables)
J'avais pas pensé à ca sur le coup ^^ On ne sait pas prévoir si on aura une news précédente ou une news suivante ... l'idéal serait donc d'avoir 3 requetes pour chaque news ainsi pas d'équivoque ...
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut