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écuperer les données avec UNION


Sujet :

PHP & Base de données

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut récuperer les données avec UNION
    Bonjour a tous,

    j'ai un souci pour récupérer toutes les données de 2 tables avec UNION.

    ma requête récupère seulement les données de la deuxieme table

    je n'arrive pas a voir le probleme


    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
    $sql = "SELECT id AS ID, membres_id AS membreID ,login AS Login, sexe as Sexe, ville AS Ville, pays AS Pays, photo AS Photo,
    	date_naissance, message AS Message, DATE_FORMAT(date_inscription, '%d/%m/%Y') AS date,
    	case  
    	when month(now()) - month(date_naissance) < 0 then year(now()) - year(date_naissance) -1 
    	when month(now()) = month(date_naissance) then 
    	IF(DAYOFMONTH(now()) - DAYOFMONTH(date_naissance) < 0,year(now())-year(date_naissance)-1,year(now())-year(date_naissance))
    	else
    	year(now())-year(date_naissance)
    	end AS age 
    			FROM pool_Voituriers
     
    		UNION ALL	
     
    	SELECT id AS ID, membres_id AS membreID, login AS Login, sexe as Sexe, ville AS Ville, pays AS Pays, photo AS Photo ,
    	date_naissance, message AS Message , DATE_FORMAT(date_inscription, '%d/%m/%Y') AS date,
    	case  
    	when month(now()) - month(date_naissance) < 0 then year(now()) - year(date_naissance) -1 
    	when month(now()) = month(date_naissance) then 
    	IF(DAYOFMONTH(now()) - DAYOFMONTH(date_naissance) < 0,year(now())-year(date_naissance)-1,year(now())-year(date_naissance))
    	else
    	year(now())-year(date_naissance)
    	end AS age 
    			FROM pool_passagers";
     
    			$data = mysql_query($sql) or die('Erreur - tables jointures: ' . mysql_error());
     
    				$totalRows_data = mysql_num_rows($data);
    				$tableau_res = array();
     
    			while($info = mysql_fetch_array($data, MYSQL_BOTH )) {	
     
    				//$tableau_res[$info['ID']] = $info;
    				$tableau_res[$info['ID']] = ($info);
    				//$tableau_res = $info;
     
    	}
    	echo $totalRows_data;
    	print_r ($tableau_res);
    ici $totalRows_data indique 5 enregistrements et
    ($tableau_res) donne un résultat de trois enregistrements soit le résultat de la deuxieme table

    merci pour vos réponses

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 145
    Par défaut
    Salut,

    Pour ta boucle while utilise ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $i=0;
    while($enr = mysql_fetch_array($data)) { $tableau_res[$i] = $enr; $i++; }
    Sinon, tu fais un tableau de class Membre et à chaque résultat récupéré :
    $tableau_res[$i] = new Membre($enr['ID'], ...);

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par sterix92 Voir le message
    Salut,

    Pour ta boucle while utilise ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $i=0;
    while($enr = mysql_fetch_array($data)) { $tableau_res[$i] = $enr; $i++; }
    Sinon, tu fais un tableau de class Membre et à chaque résultat récupéré :
    $tableau_res[$i] = new Membre($enr['ID'], ...);

    pourquoi $i ?


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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    Citation:
    Envoyé par sterix92 Voir le message
    Salut,

    Pour ta boucle while utilise ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $i=0;
    while($enr = mysql_fetch_array($data)) { $tableau_res[$i] = $enr; $i++; }
    merci
    mais il va ajouter seulement 1 enregistrement de la table pool_Voituriers, pas le reste meme si je mets $i=1;

    en résumé
    ca affiche toujours tous les enregistrements de la table pool_passagers

    et ajoute seulement 1 enregistrement de pool_Voiturier

    envoyé par sterix92- Pour ta boucle while utilise ça :

    Code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $i=0;
    while($enr = mysql_fetch_array($data)) { $tableau_res[$i] = $enr; $i++; }

    Sinon, tu fais un tableau de class Membre et à chaque résultat récupéré :
    $tableau_res[$i] = new Membre($enr['ID'], ...);

    alors pour la boucle ca ne fonctionne pas bien, le tableau s'affiche mal et il manque un enregistrement (le premier enregistrement dde la premiere table.

    et pour un tableau de class Membre, comment on fais ca?


    --

  5. #5
    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
    Par défaut
    Fais comme stealth35 t'a indiqué.

    Avec ton code actuel , si tu as deux ids identiques, le deuxieme écrase le premier.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    envoyé par sabotage-Fais comme stealth35 t'a indiqué.

    Avec ton code actuel , si tu as deux ids identiques, le deuxieme écrase le premier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while($enr = mysql_fetch_array($data)) { $tableau_res[] = $enr; }
    J'ai toujours un problême d'affichage, (des lignes horizontaux apparaissent aléatoirement dans les cases)

    de plus, j'ai vu qu'avec UNION, il faut que les 2 tables contiennent les mêmes nombres de données, ce qui ne sera pas toujours le cas

    alors, la question que je me pose maintenant , y'a t-il moyen de faire ce script avec INNERR joint? 2 tables avec les mêmes noms de champs ?

  7. #7
    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
    Par défaut
    une jointure n'a rien a voir avec une union.

    si tes deux tables ne sont pas semblables, il n'y a aucune raison de vouloit une seule requête.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Récuperer les données d'un formulaire HTML avec Knockout.js
    Par Thibault92 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/03/2012, 15h04
  2. Modifier et récuperer les données avec get et set
    Par rimbaut dans le forum Langage
    Réponses: 2
    Dernier message: 14/02/2010, 16h45
  3. Récuperer les données d'un FlexGrid pour faire requete SQL
    Par Terminator dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/10/2005, 11h26
  4. Récupere les données d'un dataGrid
    Par Terminator dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/10/2005, 14h05
  5. [JTable] Comment récuperer les données d'un fichier texte ?
    Par Makunouchi dans le forum Composants
    Réponses: 2
    Dernier message: 03/05/2005, 16h37

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