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

PHP & Base de données Discussion :

Récupérer les amies en ligne uniquement


Sujet :

PHP & Base de données

  1. #21
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Allez on liste tous les problemes :

    1 - tu as laissé SELECT * au lieu de ami_from as ami
    2 - tu n'as rien en face de ami_from=
    3 - dans la premiere partie de l'UNION le WHERE doit être sur ami_to
    4 - dans la deuxieme partie de l'UNION tu as mis ami_confirm=0
    5 - ton champ ami_confirm est de type ENUM donc la premiere valeur (0) vaut 1 et la deuxieme valeur (1) vaut 2.
    Je te conseille de transformer ton champ en BOOL et de remettre les bonnes valeurs.
    Sinon il faut que tu mettes =2 quand tu veux =1

    plus les points que j'ai déjà indiqué et que tu n'as toujours pas changé
    5 - tu as mis ami_from = 1 alors qu'il n'y pas de 1 dans ta base, il faut faire ton test avec 50 par exemple
    6 - tu fais ta jointure sur forum_amis_en_ligne au lieu de forum_whosonline, il faut egalement modifier le ON avec online_id au lieu de user_id


    Voila, si tu fais tout ca, ca va marcher.
    Et j'espere surtout que ca va t'aider a comprendre pourquoi on le fait comme ca.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  2. #22
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    re j'ai dés erreurs que tu as dit et j'en remerci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    $requete = mysql_query(" ami
    FROM (
    	SELECT ami_from AS ami FROM forum_amis WHERE ami_to=50 AND ami_confirm=50
    	UNION
    	SELECT ami_to AS ami FROM forum_amis WHERE ami_from=50 AND ami_confirm=50
    ) ami
    ")or die(mysql_error());
    echo '<h5>Ami en ligne</h5>';
     
    while($data = mysql_fetch_array($requete)){
    if($data) echo $data['membre_pseudo']; else echo 'Aucun amis connecté';
    }
     
     $requete = mysql_query("ami
    FROM (
    	SELECT * FROM forum_amis 
    WHERE ami_from= AND ami_confirm=50
    	UNION
    	SELECT ami_to AS ami FROM forum_amis WHERE ami_from=50 AND ami_confirm=50
    ) ami
    	JOIN forum_whosonline
    		ON online_id =ami
     
    ")or die(mysql_error());
    mais il y as des points que je n'ai pas tout a fait compris

    tu peux m'aidé merci

    mais j'ai mis 50 mais un membre comporte le chiffre id 100 il ne vas le connaître

  3. #23
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ami_from= AND ami_confirm=50
    =>
    si tu as mis ami_confirm en bool
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ami_from=50 AND ami_confirm=1
    sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ami_from=50 AND ami_confirm=2
    Il vaut evidemment qu'a la place de 50 tu aies l'id de l'utilisateur concerné.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #24
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    re il ne fonctionne

    sinon j'avais un autre code que quelqu'un as fait qui fonctionne trés bien car il as fait la même struture que moi

    donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $requete = mysql_query("SELECT ami_date, (ami_from + ami_to - ".intval($_SESSION['id']).") AS ami_id, membre_pseudo, online_id 
    FROM forum_amis
    LEFT JOIN forum_membres ON membre_id = (ami_from + ami_to - ".intval($_SESSION['id']).")
    LEFT JOIN forum_whosonline ON online_id = membre_id
    WHERE (ami_from = '".intval($_SESSION['id'])."' OR ami_to = '".intval($_SESSION['id'])."') AND ami_confirm = '1' AN
    D online_id='1' ORDER BY membre_pseudo");
    while ($data = mysql_fetch_assoc($requete));
    {
     
    echo '-> <a href="./voirprofil.php?m='.$data['ami_id'].'&amp;action=consulter">'.stripslashes(htmlspecialchars($data['membre_pseudo'])).'</a><br /><br />';
     
     
    }
    mais l'érreur :



    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /mnt/140/sda/0/a/forum.exemple/index.php on line 252
    ->
    merci de ton aide

  5. #25
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    sinon j'avais un autre code que quelqu'un as fait qui fonctionne trés bien
    Ma requete fonctionne j'ai pris la peine de la tester avec tes données.

    Si le code de ton ami fonctionne ne me demande pas de le debuguer.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #26
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    je sais que tu as surement tester mais chez moi il ne marche pas le code que j'ai donné au départ

  7. #27
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Le code que tu as donné au départ oui c'est sur.
    Celui sur lequel on a travaillé cette apres-midi il doit fonctionner si tu as tout bien fait.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #28
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    je sais j'ai modifié tout ceux que tu as dit sauf 1 où 2 points que jai cité plus haut

    donc si tu est gentil et aimable donne moi le code qui est bon et on vas mettre résolu car là je cherche une aiguille dans boite au foin lol

  9. #29
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je t'ai fourni la réponse pour les points que tu ne comprennais pas, donc je ne vois plus ce qui te gene.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #30
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    re j'ai relu tout les points et modifié mais j'ai toujours cette érreur :


    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM forum_amis WHERE ami_to=1 AND ami_confirm=50 UNION SELECT WHERE ami_to AS' at line 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    $requete = mysql_query("SELECT ami
    FROM (
    	ami_from AS ami FROM forum_amis WHERE ami_to=1 AND ami_confirm=50
    	UNION
    	SELECT WHERE ami_to AS ami FROM forum_amis  ami_from=1 AND ami_confirm=0
    ) ami
    ")or die(mysql_error());
    echo '<h5>Ami en ligne</h5>';
     
    while($data = mysql_fetch_array($requete)){
    if($data) echo $data['membre_pseudo']; else echo 'Aucun amis connecté';
    }
     
     $requete = mysql_query("SELECT ami
    FROM (
    	SELECT * FROM forum_amis 
    WHERE ami_from=50 AND ami_confirm=50
    	UNION
    	SELECT ami_to AS ami FROM forum_amis WHERE ami_from=50 AND ami_confirm=2
    ) ami
    	JOIN forum_amis_en_ligne
    		ON user_id=ami
     
    ")or die(mysql_error());
     
    echo '-> <a href="./voirprofil.php?m='.$data['ami_id'].'&amp;action=consulter">'.stripslashes(htmlspecialchars($data['membre_pseudo'])).'</a> (en ligne)<br /><br />';
    merci

  11. #31
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as un WHERE qui s'est deplacé apres le SELECT dans ta requete.
    De plus tu n'as pas corrigé les points que j'ai mis dans mon message de 19h40.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #32
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    re comme j'ai dis je laisse tombé car je comprend plus rien donc sujet resolut

  13. #33
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ami_from= AND ami_confirm=50
    =>
    si tu as mis ami_confirm en bool
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ami_from=50 AND ami_confirm=1
    sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ami_from=50 AND ami_confirm=2
    Il vaut evidemment qu'a la place de 50 tu aies l'id de l'utilisateur concerné.
    je suis motivé mais quand j'ai dit j'ai éssayé de mettre comme tu as dit a ton message 19 h 40

    il ne fonctionne pas ni le 1 ni le 2 etc...

    peut être toi ca marche pour ton forum mais chez moi il ne marche pas je ne vais pas mentir

    donc voilà pour quoi je craque

    je t'en remerci pour ton aide

  14. #34
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    est-ce que tu as converti ton champ confirm en BOOL ou est-ce que tu es resté sur le ENUM ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #35
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    re comment ca converti ton champ confirm en BOOL

    si tu me donnais le bon coe je promet que je comprendrais plus vite que avec des mots lol

  16. #36
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Point numero 5 de mon message de 17h36 ... ca fait plaisir vraiment l'interet que tu portes a ce que j'écris.

    si tu me donnais le bon coe je promet que je comprendrais plus vite
    oui je ne suis pas sourd, j'ai bien compris que tu voulais un code tout frais.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #37
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    donc si je comprend ton point 5 il faut mettre 2 dans mon champ come ça

    CREATE TABLE IF NOT EXISTS `forum_amis` (
    `ami_from` int(11) NOT NULL,
    `ami_to` int(11) NOT NULL,
    `ami_confirm` enum('0','1','2') collate latin1_general_ci NOT NULL,
    `ami_date` int(11) NOT NULL,
    PRIMARY KEY (`ami_to`,`ami_from`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
    merci de ta patient

  18. #38
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    merci juste pour te dire que je vais me desinscrire car là je pense que ce forum n'est pas là pour aidé les gens comme moi qui veux faire un bout de code

    donc je te dit merci et peut être à bientôt

  19. #39
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Le forum est un lieu d'entraide pour des gens qui développent, amateurs ou professionnels.
    Personnellement je prends du plaisir a trouver des solutions, mais faire entièrement le travail, non.
    Et c'est encore pire si on me paie.

    Je te laisse quand même un cadeau de départ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $requete = mysql_query("SELECT ami
    FROM (
    	SELECT ami_to as ami FROM forum_amis WHERE ami_from=50 AND ami_confirm=2
    	 UNION 
    	SELECT ami_from AS ami FROM forum_amis WHERE ami_to=50 AND ami_confirm=2
    ) ami
    	JOIN forum_whosonline ON online_id=ami
    ");
    while($data = mysql_fetch_array($requete)){
    echo '<p><a href="./voirprofil.php?m='.$data['ami'].'&amp;action=consulter">ami n°' . $data['ami'] . '</a> (en ligne)</p';
    }
    Il te restera juste a ajouter la jointure avec ta table membre pour pourvoir afficher le pseudo.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  20. #40
    je_suis_tres_gentil
    Invité(e)
    Par défaut
    st mon amis sabotage

    ton code pour toi est bon mais il n'est pas bon pour moi car j'ai réuissis à le faire marché

    mais là il me reste juste un soucy c'est que le pseudo des amies reste affiché hors il n'est pas connecté

    et là je séche malggrés jai mis un times

    merci

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/06/2008, 10h22
  2. [DEBUTANT]Récupérer les x 1er lignes d'une requete
    Par tripper.dim dans le forum Oracle
    Réponses: 1
    Dernier message: 13/08/2007, 13h59
  3. Récupérer les X dernières lignes de mon fichier txt
    Par coincoin22 dans le forum Windows
    Réponses: 0
    Dernier message: 08/08/2007, 14h39
  4. Récupérer les 50 premières lignes du requête
    Par oceanediana dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/08/2006, 11h15
  5. Récupérer les N derniers lignes
    Par arsenik7 dans le forum Oracle
    Réponses: 8
    Dernier message: 12/05/2006, 13h35

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