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. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut requête si photo si non photo
    Bonjour voilà j'ai un petit soucis je comprends pas, ou est l'erreur je fait un if pour vérifier si la table contient une photo elle l'affiche et pas de photo et n'affiche pas ma photo par défaut? une idée 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
    $annonce_sortie  = $connection->prepare('SELECT * FROM annonce'); 
    $annonce_sortie->execute(array());
    while($result = $annonce_sortie->fetch(PDO::FETCH_OBJ)){
    	$profil  = $connection->prepare("SELECT * FROM photo_profil WHERE id_gal=:id_gal");
            $profil->execute(array(':id_gal'=>$result->pseudo)); 
    	while($results = $profil->fetch(PDO::FETCH_OBJ)){
            $im_no = 'imdesign/no_photo.png';
            $im = $results->gal;		
    	miniature('image_profil/'.$im.'', 150, 100);
            }
            if(isset($im) == TRUE){
    	echo'<div class="image" align="center"><img src="MINI11image_profil/'.$im.'" border="0" /></div>';		
            }else{
            echo'<div class="image" align="center"><img src="'.$im_no.'" width="150" height="100" border="0" /></div>';		
    		}

  2. #2
    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
    Déjà si tu n'as pas de paramètres, ça ne sert à rien de faire une requête préparée.

    Pour ton problème la structure de ton traitement n'a pas de sens : Quelle est la relation entre la table annonces et la table photo_profil ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    Bonjour sabotage et une bonne année a toi 2017,

    Id_gal et est result->pseudo sont les valeurs du pseudo de la personne qui ajoute l'annonce et la photo proviens de sont profil avec une sessions de sécurité.

  4. #4
    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
    C'est une photo concernant l'annonce ou concernant l'utilisateur ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    l'annonce concerne l'utilisateur qui a une photo de lui ou pas et id_gal est égal à l'utilisateur , et le pseudo de l'utilisateur dans les deux tables

  6. #6
    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
    Pourquoi la photo n'est pas dans la table utilisateur ?

    Bref il te faut une seule requête avec une jointure entre la table annonce, la table utilisateur et la table photo_profil.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    le liens entre les deux table est le pseudo? cela n'est pas bon

  8. #8
    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
    Dans ce que tu as fait, il n'y a pas de jointure entre tes tables.

    De plus dans ta table annonce et dans ta table photo_profil tu devrais avoir l'id de l'utilisateur, pas son pseudo.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    serait tu me montré comment le réaliser stp?

  10. #10
    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
    Sans connaitre la structure de ta base de données non je peux pas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    voici la table profil

    CREATE TABLE photo_profil (
    idg int(4) NOT NULL auto_increment,
    id_gal varchar(150) NOT NULL default '',
    sexe char(12) NOT NULL default '',
    gal tinytext NOT NULL,
    PRIMARY KEY (`idg`),
    INDEX (`idg`),
    UNIQUE (`idg`))
    table annonce

    CREATE TABLE `annonce` (
    `idA` INT(11) not null AUTO_INCREMENT,
    `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 (`idA`),
    INDEX (`idA`),
    UNIQUE (`idA`))

  12. #12
    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 suppose que tes photos et tes annonces n'ont pas de sexe. Alors pourquoi y'a t-il une colonne "sexe" dans ces deux tables ?
    Tu n'as pas de table utilisateur ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $annonce_sql = "SELECT * 
    	FROM annonce AN
    	INNER JOIN photo_profil PP
    	ON AN.pseudo = PP.id_gal
    	";
    $annonce_sortie  = $connection->prepare($annonce_sql); 
    $annonce_sortie->execute();
     
    while($result = $annonce_sortie->fetch(PDO::FETCH_OBJ))
    {
    	$im_src = ( !empty($im) )? 'MINI11image_profil/'.miniature('image_profil/'.$im.'', 150, 100) : 'imdesign/no_photo.png';
    	echo'<div class="image" align="center"><img src="'.$im_src.'" border="0" /></div>';		
    }
    IMPORTANT : si tu négliges la phase de REFLEXION amenant à une bonne CONCEPTION de tes TABLES, tu prends le risque de te prendre un mur...

    Indice : les index auto-incrémenté sont UNIQUES.
    Ce sont eux qu'il faut utiliser pour créer des jointures d'une table à l'autre.
    Pas un "pseudo".

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    voila
    CREATE TABLE `membre` (
    `idX` INT (10) not null AUTO_INCREMENT,
    `nom` CHAR(25) not null,
    `pass` VARCHAR(255) not null,
    `email` VARCHAR(255) not null,
    `sexe` CHAR(12),
    PRIMARY KEY (`idX`),
    INDEX (`idx`),
    UNIQUE (`idX`))

  15. #15
    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
    Il faut également avoir une logique : pourquoi l'id de la table membre s'appelle "idX" ?
    Et ou est passé le pseudo ? s'il est dans la colonne "nom" alors la colonne devrait s'appeller "pseudo".

    Et donc le "sexe" n'a rien à faire dans annonces et photos.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    Bonjour plus rien ne fonctionne RRRRRRRRRRRRRRRRRRRRRRRRRR et zut

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <?PHP
    require_once'header.php';
    ?>
    <ul id="nav">
    <li><a href="annonce.php?token=<?php echo $_SESSION['login']; ?>">Ajouté une annonce</a></li>
    <li><a href="voir_annonce.php?token=<?php echo $_SESSION['login']; ?>">Voir les annonces</a></li>
    <li><a href="contact.php?token=<?php echo $_SESSION['login']; ?>">Contact</a></li>
    </ul>
    <?PHP
    $connection->exec('DELETE FROM annonce WHERE timestamp< DATE_SUB(NOW(), INTERVAL jours DAY)');
    $connection->exec('DELETE FROM choix_annonce WHERE timestamp< DATE_SUB(NOW(), INTERVAL jours DAY)'); 		 
    /*}*/
    include'function_mini.php';		  
    //requête SQL:
    $annonce_sql = "SELECT * 
    	FROM annonce AN
    	INNER JOIN photo_profil PP
    	ON AN.pseudo = PP.id_gal
    	";
    $annonce_sortie  = $connection->prepare($annonce_sql); 
    $annonce_sortie->execute();
     
    while($result = $annonce_sortie->fetch(PDO::FETCH_OBJ))
    {
    	$im_src = ( !empty($im) )? 'MINI11image_profil/'.miniature('image_profil/'.$im.'', 150, 100) : 'imdesign/no_photo.png';
    	echo'<div class="image" align="center"><img src="'.$im_src.'" border="0" /></div>';
     
     
     
    $tab_choix = array();
    $annonce_sortie_choix  = $connection->prepare('SELECT * FROM choix_annonce WHERE idA=:idA AND jours=:jours');
    $annonce_sortie_choix->execute(array('idA'=>$result->idA,'jours'=>$result->jours));
    while($result_choix = $annonce_sortie_choix->fetch(PDO::FETCH_OBJ)){
    $tab_choix[] = $result_choix->choix;	
    $list_choix = (!empty($tab_choix))? implode(', ',$tab_choix) : '';
     
    ?>
    <div class="annonce">
      </td>
      <td style="width:90%;text-align:left;">
        <table style="width:100%">
          <tr>
            <td style="text-align:left;"><b><u><span style="color:#660099">Pseudo</span></u>&nbsp;:&nbsp;</b>
    <?PHP 
    switch($result->sexe){
    case"Femme":
    echo '<img src="imdesign/f.png" width="20" height="20" title="Femme" /><a href="http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/profil_membre.php.php?nom='.$result->pseudo.'" style="color:#0000FF;">'.$_SESSION['anp_p'].'</a>';
    break;
    case"Couple":
    echo '<img src="imdesign/cpl.png" width="20" height="20" title="Homme"/><a href="http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/profil_membre.php?nom='.$result->pseudo.'" style="color:#0000FF;">'.$result->pseudo.'</a>';
    break;
    case"Homme":
    echo '<img src="imdesign/h.png" width="20" height="20" title="Homme"/><a href="http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/profil_membre.php?nom='.$result->pseudo.'" style="color:#0000FF;">'.$result->pseudo.'</a>';
    break;
    }
    ?>    
    </td>
     </tr>
          <tr>
            <td style="text-align:left;"><b><u><span style="color:#660099">Recherche</span></u>&nbsp;:&nbsp;</b><?PHP echo '<b>'.$list_choix.'</b>'; ?></td>
          </tr>
          <tr>
            <td style="text-align:left;"><b><u><span style="color:#660099">N°:&nbsp;<?PHP echo ''.$result->idA.''; ?>&nbsp;Annonce</span></u>&nbsp;:&nbsp;</b><?PHP echo ''.$result->annonce.''; ?></td>
          </tr>
          <tr>
            <td style="text-align:left;">    <input type="button" class="button_mauve" value="Répondre" id ="valider"  onclick="window.location.href='<?PHP echo'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/annonce_message.php?destin='.$result->pseudo.'&nume='.$result->idA.''; ?>'" /></td>
          </tr>
        </table>
       </td>
      </tr>
    </table>
     
    </div>
    <?PHP
    }
    }
    ?>
    </div>
    <div id="colonne-droite"></div>
    </div>
    </div>
    </body>
    </html>

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

    "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"
    • ...

  18. #18
    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
    Surtout qu'on a aucune idée des modifications que tu as faites. As-tu changé la structure de ta base ? ton code ? les deux ? quelles sont les modifications apportées ?
    Que veux-tu dire par "plus rien ne fonctionne" ? Page blanche ? message d'erreur ? l'écran explose ?

    Personnellement, je te conseille un retour à la planche à dessin :
    - Revois la structure des tables :
    -- Cohérence des données : une table "photo" n'a pas besoin d'une colonne "sexe", ou alors c'est que la table "photo" n'est pas une table de photos, mais une table de personnes auquel cas, il faudrait changer le nom de la table. Evite également la redondance de données : si tu as deux tables liées par une clé étrangère, il est inutile d'avoir la même informations dans les deux tables, il suffit de faire une jointure pour récupérer ce qui manque. Au passage, si tu fais systématiquement une jointure, c'est que peut-être toutes les informations devraient être dans une seule table...
    -- Cohérence des noms : tu peux par exemple préfixer toutes les colonnes d'une table par un code du type "xxx_". Cela permet entre choses d'identifier facilement les clés étrangères : "aaa_bbb_id" est la colonne dans la table A qui pointe vers la colonne id de la table B. C'est mieux que d'essayer de se rappeler que la colonne "nom" de la table A correspond à la colonne "identifiant" de la table B. On évite aussi les erreurs du type "colonne ambigüe" dans les requêtes SQL lorsqu'une colonne avec le même nom existe dans deux tables.

    Ensuite, revois ton code pour utiliser les bonnes tables et les bonnes colonnes au bon endroit.
    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]

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    Bonjour j'ai changé la relation entre mes base de donnée l'ID utilisateur est ajouter dans toute les autres et je me plante quelque par.

  20. #20
    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
    Bien vu : si ça ne fonctionne pas, c'est qu'il y a une erreur quelque part !

    Sérieusement, pourrais-tu donner la nouvelle structure de tes tables et le nouveau code, qu'on ait une petite chance de pouvoir t'aider ? Parce que là, on est complètement dans le brouillard...
    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]

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 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, 17h12
  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, 22h53
  3. Photo ou pas photo
    Par andré-skipper dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/05/2007, 11h28
  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, 11h33
  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, 22h38

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