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 :

Selectionner des champs spécifiques de 2 tables comportant les meme noms


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut Selectionner des champs spécifiques de 2 tables comportant les meme noms
    Bonjour,

    Depuis un certain temps, j'essaie de résoudre un SELECT MYSQL
    dans 2 tables différentes mais comportant des noms de champs identiques comme
    exemple: membres_id, photo, etc,

    j'ai essayé avec INNER JOINT et LEFT JOIN mais on dirait que le fait d'avoir des noms identiques cause un probleme.

    il s'agit de sélectionner tous les enregistrements des 2 tables afin d'afficher de facon aléatoire le résultat d'une table puis de l'autre.

    ou bien

    faire 2 SELECT différents et ensuite fusionner les 2 résultats dans un tableau unique

    Auriez-vous une idée??

    merci

  2. #2
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Bonjour,
    As-tu pensé à UNION?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    (
        SELECT table1.champ1 AS colonne1, table1.champ2 AS colonne2
        FROM table1
        WHERE ...
    )
    UNION
    (
        SELECT table2.champ1 AS colonne1, table2.champ2 AS colonne2
        FROM table2
        WHERE ...
    )
    ORDER BY colonne1
    ... par exemple.
    Bien cordialement,

  3. #3
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut
    EH oui! UNION

    c'est ce qu'il me fallait on dirait bien mais je ne parviens pas à afficher plus que 1 enregistrement dans mon tableau dynamique

    bien que je sais que $tableau_res contient 2 enregistrements



    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
    <?php
     
       foreach($tableau_res as $info){
     
     
    	//$var_count = count($tableau_res);
     
    	//for (i=0;$i<$var_count; $i++) {
     
    	echo'<tr><td width="17%" rowspan="5"><img src="/images/img_membres/'.($info['Photo']).'"alt = "photo du membre" width="130" height="120"</td>';
    	echo '<td width="34%"><STRONG>'.htmlentities($info['surname']).'</STRONG></td>';
    	echo '<td width="49%" rowspan="5">'.htmlentities($info['Message']).'</td></tr>';
    	echo '<tr><td>Un covoitureur de : </td>
          </tr>';
    	echo '<tr><td>'.htmlentities($info['Ville']).'*,*'.htmlentities($info['Pays']).'</td>
          </tr>';
    	echo '<tr><td>'.htmlentities($info['Date_Naissance']).'</td>
          </tr>';
    	echo '<tr><td>'.htmlentities($info['Date_Inscription']).'</td></tr>';
     }
     
      ?>
    ESt-ce le UNION qui n'est pas bien fait??????

    ---
    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
    <?php
    ($sql = "SELECT id AS ID, membres_id AS membreID ,login AS Login, ville AS Ville, pays AS Pays, photo AS Photo,
    	date_naissance AS Date_Naissance, message AS Message, date_inscription AS Date_Inscription
    			FROM plateforme
    		UNION	
    			
    	SELECT id AS ID, membres_id AS membreID, login AS Login, ville AS Ville, pays AS Pays, photo AS Photo ,
    	date_naissance AS Date_Naissance, message AS Message , date_inscription AS Date_Inscription
    			FROM plateau");
     
    			//ORDER BY date_inscription ASC";
     
     
    			$data = mysql_query($sql) or die('Erreur - tables jointures: ' . mysql_error());
     
    				$totalRows_data = mysql_num_rows($data);
    				$nb_lignes = 10;
    				$nb_pages = ceil($totalRows_data/$nb_lignes);
     
    			while($info = mysql_fetch_array($data, MYSQL_BOTH )) {
     
     
    				$tableau_res = array();
    				$tableau_res[$info['ID']] = ($info);
    				//$tableau_res = $info;
     
    	}
     
    	echo $totalRows_data;
     
    ?>

  4. #4
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Bonjour,

    La réponse à ta question est NON. La cause c'est à chaque fois que tu parcours la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    while($info = mysql_fetch_array($data, MYSQL_BOTH )) {
    ...
    tu initialises l'array $tableau_res.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableau_res = array();
    Il faut déclarer cet array en dehors de la boucle, comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    $tableau_res = array();
    while($info = mysql_fetch_array($data, MYSQL_BOTH )) {
       $tableau_res[$info['ID']] = ($info);
    }
    Bien cordialement,

  5. #5
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut
    Il faut déclarer cet array en dehors de la boucle, comme ceci:
    Code :

    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $tableau_res = array();
    while($info = mysql_fetch_array($data, MYSQL_BOTH )) {
       $tableau_res[$info['ID']] = ($info);
    }


    Et bien, je l'avais testé comme ca avant et encore la, ca change rien
    toujours qu'un enregistrement d'afficher

  6. #6
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Bonjour,

    Fais un print_r de $tableau_res pour voir.

    Bien cordialement,

  7. #7
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut
    print_r $tableau_res me donne les détails de 1 enregistrement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $totalRows_data = mysql_num_rows($data);
     
    echo $totalRows_data;
    me donne 2 enregistrements

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/04/2009, 12h46
  2. Réponses: 5
    Dernier message: 10/02/2009, 17h28
  3. Réponses: 5
    Dernier message: 22/05/2008, 16h24
  4. Update d'une table en fonction des champs d'une autre table
    Par The Molo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/02/2008, 15h41
  5. Réponses: 2
    Dernier message: 21/04/2006, 12h09

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