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 :

requête si photo si non photo [PDO]


Sujet :

PHP & Base de données

  1. #21
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    Je connaissais pas les jointure entre deux table

    vus que j'ai changer mais donnée par ID membre dans toutes les table comment réaliser un bon script en lecteur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $annonce_sql = "SELECT * FROM annonce AN INNER JOIN photo_profil PP ON AN.ID = PP.id_gal";
    	$annonce_photo  = $connection->prepare($annonce_sql); 
        $annonce_photo->execute();
     
    while($data_photo = $annonce_photo->fetch(PDO::FETCH_OBJ)){
     
    	$im_src = ( !empty($data_photo->gal) )? 'MINI11image_profil/'.miniature('image_profil/'.$data_photo->gal.'', 150, 100) : 'imdesign/no_photo.png';
    	echo'<div class="image" align="center"><img src="'.$im_src.'" border="0" /></div>';

  2. #22
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    bonjour j'ai repris la partie du script jreaux62 pour changer le pseudo par sont ID cela n'affiche rien?

  3. #23
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    "plus rien ne fonctionne..." : ce n'est pas avec ça qu'on pourra t'aider.

    Il faut apprendre à effectuer un DEBOGAGE DE BASE :
    • afficher les variables : echo ...;
    • afficher les array: var_dump(...);
    • mettre des points de controle dans le code pour voir "où ça passe" et "où ça casse"
    • ...

  4. #24
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    speedylol, tu as conscience d'avoir posté exactement le même code deux fois avec deux commentaires différents (qui pour moi sont aussi incompréhensibles l'un que l'autre)
    Ce code me parait correct pour afficher une image (à condition que la colonne "gal" contienne un chemin vers une image, ce qui n'est pas évident vu le nom, et que l'image se trouve bien dans le dossier où tu vas la chercher)
    A part ça, je dois avouer être complètement perdue à la fois dans ce que tu veux faire et dans comment tu essayes de le faire.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #25
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    je viens de le voir sorry

    j'aimerais savoir si le structure de la lecture du select avec la jointure est bonne svp, simplement

  6. #26
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    Je viens de testé j'ai une seule annonce alors que dans la table il y en a 5 et la photo est la mais avec le petit logo d'erreur

  7. #27
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    • INNER JOIN suppose qu'il y a forcément une CORRESPONDANCE dans la 2ème table.

    Dans le langage SQL la commande INNER JOIN, aussi appelée EQUIJOIN, est un type de jointures très communes pour lier plusieurs tables entre-elles.
    Cette commande retourne les enregistrements lorsqu’il y a au moins une ligne dans chaque colonne qui correspond à la condition.
    • Avec LEFT JOIN, non

    Dans le langage SQL, la commande LEFT JOIN (aussi appelée LEFT OUTER JOIN) est un type de jointure entre 2 tables.
    Cela permet de lister tous les résultats de la table de gauche (left = gauche) même s’il n’y a pas de correspondance dans la deuxième tables.

  8. #28
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    je viens de faire plusieurs test quand je n'est pas de photo le select ne lis aucun donnée de la table annonce et quand j'ai plusieurs annonce avec une une image dans photo profil il en affiche que une seule, c'est exactement le même soucis?

    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
    27
    28
    <?PHP
        $annonce_sql = "SELECT * FROM annonce AN INNER JOIN photo_profil PP ON AN.ID = PP.id_gal";
        $annonce_sortie = $connection->prepare($annonce_sql); 
        $annonce_sortie->execute();
        while($result = $annonce_sortie->fetch(PDO::FETCH_OBJ)){
        $idA =	$result->idA;
        $ID = $result->ID;	
        $pseudo = $result->pseudo;
        $sexe = $result->sexe;
        $jours = $result->jours;
        $time_temp = $result->timestamp;
        $date_j = $result->date_ano;
        $annonce = $result->annonce;
        $_image_profil = $result->gal;
    	}
    	echo $_image_profil;
    	$im_src = ( !empty($_image_profil) )? 'MINI11image_profil/'.miniature('image_profil/'.$_image_profil.'', 150, 100) : 'imdesign/no_photo.png';
    	echo'<img src="'.$im_src.'" border="0" />';
     
    $tab_choix = array();
    $annonce_sortie_choix  = $connection->prepare('SELECT * FROM choix_annonce WHERE idA=:idA AND jours=:jours');
    $annonce_sortie_choix->execute(array('idA'=>$idA,'jours'=>$jours));
    while($result_choix = $annonce_sortie_choix->fetch(PDO::FETCH_OBJ)){
    $tab_choix[] = $result_choix->choix;	
    $list_choix = (!empty($tab_choix))? implode(', ',$tab_choix) : '';
     
     
    ?>

  9. #29
    Invité
    Invité(e)
    Par défaut
    ID, id_gal, idA,... : comment veux tu qu'on s'y retrouve ?

    • 1/ Montre la structure des TABLES
    • 2/ Montres des EXTRAITS des tables
    • 3/ Mets des NOMS EXPLICITES (id_annonce, id_galerie, id_.... ?)
    • 4/ Mets des explications dans ton code
    • ...



    Bref, si tu ne fais pas plus d'efforts pour qu'on puisse t'aider et te répondre, je pense qu'on va aller voir ailleurs....



    Et comme je l'ai suggéré dans mon précédent post, essaie avec LEFT JOIN.

  10. #30
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    Bonjour Avec LEFT JOIN quand j'ai pas de photo super, mais j'ai toujours une seule annonce alors qu'il y en a cinq dans la base de donnée annonce qui s'affiche ?

    idA -> auto incrémenter de la base annonce et dans la base annonce j'insére ID membre aussi
    ID -> auto auto incrémenter de la base du membre qui ajoute une annonce
    Id_gal = ID membre et idg auto incrémenter profil_photo

  11. #31
    Invité
    Invité(e)
    Par défaut
    Id_gal = ID membre et idg auto incrémenter profil_photo
    Donc, 3 noms différents pour la même chose...



    Bon courage !

  12. #32
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    table annonce et table photo_profil on l'ID les même mais non incrémenté ID et l'ID auto est incrémenté de la table membres

    ida est l'id auto incrémenté de la table annonce
    idg est l'id auto incrémenté de la table photo_profil

    le seul liens entre annonce et photo_profil est l'ID des membres

    Comment faut-il faire alors svp? avec ID membre dans les tables profil_photo et annonce alors

  13. #33
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    • 1/ Montre la structure des TABLES
    • 2/ Montres des EXTRAITS des tables
    • 3/ Mets des NOMS EXPLICITES (id_annonce, id_galerie, id_.... ?)
    • 4/ Mets des explications dans ton code
    • ...
    Je ne vais pas te le chanter, non plus ?

  14. #34
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    bonjour voilà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE photo_profil (
      idg int(4) NOT NULL auto_increment,
      ID_membres int(11) NOT NULL,
      sexe char(12) NOT NULL,
      gal tinytext NOT NULL,
      PRIMARY KEY (`idg`),
      INDEX (`idg`),
      UNIQUE (`idg`))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE `annonce` (
    `id_annonce` INT(11) not null AUTO_INCREMENT,
    `ID_membres` INT(11) not null,
    `pseudo` char(30) not null,
    `sexe` char(30) not null,
    `choix` VARCHAR(255) not null, 
    `jours` CHAR(10) not null,
    `timestamp`VARCHAR(255) not null, 
    `annonce` int(3) not null,
     PRIMARY KEY (`id_annonce`),
     INDEX (`id_annonce`),
     UNIQUE (`id_annonce`))

  15. #35
    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
    Si tu ne prends pas en compte les conseils qu'on te donne, on n'avance pas.

    Je t'ai déjà dit il y a plusieurs jours que le "sexe" n'avait rien à faire dans la table annonce.
    Également, je t'ai déjà dit que "idg" comme nom de colonne de la table "photo_profil' ça n'a aucun sens.
    Tu peux simplement l’appeler "id_photo_profil"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #36
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    bonjour sabotage voilà modification

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE photo_profil (
      id_photo_profil int(4) NOT NULL auto_increment,
      ID_membres int(11) NOT NULL,
      gal tinytext NOT NULL,
      PRIMARY KEY (`idg`),
      INDEX (`idg`),
      UNIQUE (`idg`))

  17. #37
    Invité
    Invité(e)
    Par défaut
    `id_annonce`, `ID_membres`

    • id / ID -> minuscules / majuscules !
    • annonce / membres -> singulier / pluriel !



    TANT QUE TU NE METTRAS PAS DE L'ORDRE dans les champs des TABLES en BDD, tu vas continuer à ramer !!

    Désolé, je ne m'embarque pas dans cette galère...

  18. #38
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    voilà id_annonce et id_membre cela est comme cela dans mes table maintenant

  19. #39
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    Bonjour c'est l'emmerdeur voilà je test autre chose mais je n'est toujours que une seule annonce de la table annonce et la photo par défaut , comment faut il faire pour les sortir touts

    avec photo ou pas de photo svp?

    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
    27
        $annonce_sql = "SELECT * FROM annonce join membres using(id_membre) left join photo_profil using(id_membre)";
        /*$annonce_sql = "SELECT * FROM annonce AN LEFT JOIN photo_profil PP ON AN.id_membre = PP.id_membre";*/
    	$annonce_sortie = $connection->prepare($annonce_sql); 
        $annonce_sortie->execute();
        while($result = $annonce_sortie->fetch()){
    	$id_annonce =	$result['id_annonce'];
        $id_membre = $result['id_membre'];	
        $pseudo = $result['pseudo'];
        $sexe = $result['sexe'];
        $jours = $result['jours'];
        $time_temp = $result['timestamp'];
        $date_j = $result['date_ano'];
        $annonce = $result['annonce'];
        $_image_profil = $result['gal'];
    	}
    	echo $_image_profil;
    	$im_src = ( !empty($_image_profil) )? 'MINI11image_profil/'.miniature('image_profil/'.$_image_profil.'', 150, 100) : 'imdesign/no_photo.png';
    	echo'<img src="'.$im_src.'" border="0" />';
     
    $tab_choix = array();
    $annonce_sortie_choix  = $connection->prepare('SELECT * FROM choix_annonce WHERE id_annonce=:id_annonce AND jours=:jours');
    $annonce_sortie_choix->execute(array('id_annonce'=>$id_annonce,'jours'=>$jours));
    while($result_choix = $annonce_sortie_choix->fetch(PDO::FETCH_OBJ)){
    $tab_choix[] = $result_choix->choix;	
    $list_choix = (!empty($tab_choix))? implode(', ',$tab_choix) : '';
     
    }

  20. #40
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Si tu ne prends pas en compte les conseils qu'on te donne, on n'avance pas.
    + Faire ce qu'on t'a DEJA demandé X fois.



    Ca commence à devenir PENIBLE...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Création de requêtes avec 2 tables non liées
    Par Jusomi31 dans le forum Access
    Réponses: 15
    Dernier message: 28/08/2008, 16h12
  2. [SQL] Déterminer si le résultat d'une requête est vide ou non
    Par khamett dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/01/2008, 21h53
  3. Photo ou pas photo
    Par andré-skipper dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/05/2007, 10h28
  4. [RegEx] Requête SQL sur tables non connues à l'avance (regex)
    Par lothar59 dans le forum Langage
    Réponses: 2
    Dernier message: 27/02/2007, 10h33
  5. [ImageMagick] Recadrer une photo et non pas la diminuer
    Par max44410 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 27/07/2005, 21h38

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