IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

récupération de la valeur d'un champs


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2011
    Messages : 48
    Par défaut récupération de la valeur d'un champs
    bonsoir,
    Alors voila, j'ai un petit pbm.
    Je travaille sur un scipt de forum assez basique.

    Ce que je voudrai faire, c'est faire apparaitre le nom de la personne qui a répondu en dernier en face du titre du message, du nombre de vue, de reponses, etc...
    Pour cela, j'ai un champs "nom" "date_insertion" (date a laquelle a été posté la question ou la réponse) "date_message"(date du 1er message. Lorsqu'un nouvel enregistrement est effectué, "date_message" prend automatiquement la date se trouvant dans "date_insertion" du 1er message).
    Comment faire donc sortir le nom en rapport avec la derniere entrée dans "date_insertion"?
    Ce que j'ai réussi a faire pour le moment, c'est récupérer le nom de l'auteur du 1er post... Pas interressant

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    J'ai bien compris ce que tu veux faire, mais pas du tout ton explication de l'existant. Tu as cb de table et cb de champ ?

  3. #3
    Membre émérite Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Par défaut
    Je pense que date_message ne sert à rien. Avec une requête du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from message order by date_insertion desc limit 1
    Ca ne marcherait pas ?

  4. #4
    Membre expérimenté Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Par défaut
    Bonjour,

    je ne suis pas sur que tu puisses le faire. Ou du moins pas avec la table que tu nous donnes. Tu devrais distinguer le fait que quelqu'un pose une question ou qu'il y réponde ainsi tu pourras mieux obtenir la dernière personne qui a posté le message.

    table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    question: id_ques | nom_utilisateur_ques | date_insertion_ques ...
    reponse: id_rep | id_ques | nom_utilisateur_rep | date_insertion_rep ...
    ainsi avec une petite requete sql tu arriveras facilement à obtenir ce que tu veux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select nom_utilisateur_rep 
    from reponse 
    where id_ques="idQuestionRécupéré"
    order by date_insertion_rep
    limit 1
    Voila j'espère que ca va t'aider ^^

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2011
    Messages : 48
    Par défaut
    Merci de vos réponses

    zeclad01:
    J'ai 1 table forum avec 10 champs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id, nom, email, date_insertion, titre_mess, texte, id_reponse, ip, nb_lect, date_reponse.
    J'ai oublié de préciser que id_reponse prend la valeur de l'id de l'auteur de la question. Donc quand une personne poste une question, la valeur de id_reponse = 0 et à toutes les réponses qui lui sont associées, id_reponse prend la valeur de l'id de l'auteur de la question. Suis je clair la??

    Voici ma table (j'ai enlevé ce qui ne me semble pas utile pour cette requête)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    id=1, nom=pierre, date_insertion=2011-07-07 15:20:00, id_reponse=0, date_reponse=2011-07-07 15:22:00
    id=2, nom=paul, date_insertion=2011-07-07 15:21:00, id_reponse=1, date_reponse=2011-07-07 15:21:00
    id=3, nom=jaques, date_insertion=2011-07-07 15:22:00, id_reponse=1, date_reponse=2011-07-07 15:22:00
    Donc, dans mon tableau, il y a une colonne qui reçois pierre à 2011-07-07 15:20:00 et la colonne a coté, il doit y avoir jaques à 2011-07-07 15:22:00

    Elwyn:
    J'ai essayé ta requête, mais elle ne me retourne que la dernière entrée

    Retrokiller069:
    Tu as raison, ça aurai du être fait comme ça. Ça aurai surement été plus simple, mais maintenant que tout est fait, je me vois mal recommencer :-)

    Merci a tous de votre participation

  6. #6
    Membre expérimenté Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Par défaut
    Ben du coup tu peux utiliser ma requête, elle ne sera pas trop différente:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select nom
    from tatable
    where id_reponse="idRécupéré"
    order by date_reponse desc 
    limit 1
    l'idRécupéré correspond à l'id de la question que tu es en train de voir. Normalement cela te retourne ce que tu veux. (Je ne suis pas sur pour "desc" si ca te donne l'inverse ne mets rien).

    En espérant que ca marche...

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2011
    Messages : 48
    Par défaut
    merci Retrokiller069, mais je m'en sors vraiment pas...

    Je vous laisse la parti de code que j'utilise pour appeler l'index du forum (titre, auteur, date ajout, nombre de fois vue, nombre de réponses, date du dernier post et ce qu'il me manque, l'auteur du dernier post)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $sql = 'SELECT id,nom, email,date_insertion,titre,lect,date_reponse FROM forum WHERE id_reponse="0" ';
    $sql.= ' ORDER BY date_reponse DESC, date_insertion DESC LIMIT '.mysql_escape_string($limit1).', ';
    $sql.= mysql_escape_string($limit);
    $res = mysql_query($sql) or die(showError('3', mysql_error()));
    $nb = mysql_num_rows($res);
     
     
    if($nb>0) {
    	while(list($id,$nom,$email,$dateheure,$titre,$lect,$dateajoute) = mysql_fetch_row($res)) {
    		$titre = substr($titre, 0, $carac);
    		$titre = stripslashes(stripslashes($titre));
     
                    $lect = substr($lect, 0, $carac);
    		$lect = stripslashes(stripslashes($lect));
    Quelqu'un a un avis???

  8. #8
    Membre expérimenté Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Par défaut
    Houla, je crois que j'avais pas compris ce que tu voulais.
    Tu veux le dernier message du dernier poste?

    si c'est ça la requête est comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    select nom
    from forum 
    where id_reponse in (Select id
                                 from forum 
                                 where id_reponse=0
                                 order by date_insertion desc
                                 limit 1)
    order by date_reponse desc
    limit 1;
    voila normalement c'est bon tiens nous au jus

    ps: il y a peut être plus simple avec ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from message order by date_reponse desc limit 1

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2011
    Messages : 48
    Par défaut
    C'est cool Retrokiller069 de me suivre... :-)

    Je crois que j'arrive pas a me faire comprendre
    Je créé un forum, comme tout forum qui se respecte, sur la 1ere page apparait le titre du message(qu'on va appeler question), le nom de l'auteur de la question, la date de création de la question, le nombre de fois que la question a été vue, le nombre de réponses a cette même question, la date de la dernière réponse à la question et le nom de l'auteur de la dernière réponse(que je n'arrive pas a insérer).

    Le code que j'ai posté permet tout ceci, sauf le nom de l'auteur du dernier post.

    Retrokiller069? une nouvelle idée???

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2011
    Messages : 48
    Par défaut
    au fait, lorsque je lance ton code dans easyphp, ça me retourne #1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

    Pourtant c'est la dernière version.

  11. #11
    Membre expérimenté Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select nom
    from forum
    where id="idQuestionRécupéré"
    order by date_reponse desc
    limit 1
    je ne comprends pas pourquoi cela ne marche pas??? Enlève "limit 1", au pire tu feras se traitement lorsque tu le récupéreras en PHP

    Citation Envoyé par moimeme340 Voir le message
    sur la 1ere page apparait le titre du message(qu'on va appeler question)
    bon déjà si tu as la question cela veux dire que tu as sont "idQuestionRécupéré".

    test dans phpMyAdmin pour voir si cela marche (prend un idQuestionRécupéré présent dans la base et dis moi si ca marche).

    Apparemment, je ne le savais pas mais sql ne c'est pas faire de "IN" ou "NOT IN".

    Citation Envoyé par moimeme340 Voir le message
    LIMIT '.mysql_escape_string($limit1).', ';
    je pense aussi qu'il n'aime pas la virgule placé après ta valeur limite.

    Je te laisse tester, tiens nous au courant sinon poste ce que tu as fait, l'erreur causé et retourne aussi ta requete php (un petit echo de $sql pour voir ce qu'il contient au final).

  12. #12
    Membre émérite Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Par défaut
    Il faut revoir ton modèle de données. Quelque chose comme ça serait plus interessant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Question
    id_question, id_auteur, titre, message, date, nb_vue
     
    Reponse
    id_reponse, id_question, id_auteur, message, date, vote
    Si tu fais ce travail maintenant, tu auras moins de problèmes par la suite, surtout qu'un forum ne se code pas comme ça

    Tous les autres taitements se font via des requêtes en complément de PHP.
    Par exemple pour le nombre de réponses à une question, c'est une requête très simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) as count from reponse where id_question = 1
    Pour trouver la dernière personne qui a répondu à une question, c'est la requête que j'ai posté plus haut, en rajoutant en paramètre l'identifiant de la question.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from reponse where id_question = 1 order by date_insertion desc limit 1
    Il faut bien garder à l'esprit qu'on ne doit pas (au maximum, en théorie) rajouter de champs inutiles (SOMME, NB_REPONSES, etc..)

  13. #13
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2011
    Messages : 48
    Par défaut
    Bonjour a tous,

    Je pars pour le WE et n'ai donc pas le temps de regarder tout ça.
    Je vous tiens au courant lundi.
    Merci de votre intérêt et bon WE a tous

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/02/2008, 12h43
  2. Récupération de la valeur d'un champ
    Par jakkihm dans le forum Langage
    Réponses: 2
    Dernier message: 12/01/2007, 19h23
  3. Réponses: 22
    Dernier message: 04/09/2006, 12h53
  4. Récupération de la valeur d'un champ au nom variable
    Par Oluha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/02/2005, 15h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo