[php/mysql] Récupérer les champs de 2 tables

Fermé
dcanl Messages postés 2999 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 - 26 janv. 2008 à 11:19
holow1 Messages postés 680 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 7 décembre 2012 - 4 mars 2011 à 20:11
Bonjour,

J'ai actuellement deux tables (news et L3) ayant la même structure :
id   			int(11)
titre  			varchar(255)
contenu  		text
timestamp  		bigint(20)
publication  		char(3)
auteur  		varchar(50)
Comme vous l'aurez compris, ces deux tables contiennent des actualités (table news pour les actualités du site, tables L3 pour les actualités concernant les études).

J'aimerais pouvoir afficher le contenu de ces deux tables, trié par date (timestamp), mais je n'y arrive pas.

SELECT * FROM news, L3 récupère bien tous les champs dans mysql, mais comment faire l'affichage correspondant avec php ?

Pourriez-vous m'aider svp ?

Ou serait-il meilleur de faire une seule table pour toutes les actus avec un champ "Type" qui les classerait par catégorie... ?

Merci d'avance.

6 réponses

redlifebig Messages postés 59 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 17 mars 2010 23
5 juin 2008 à 17:32
Bonsoir

il y a un petit problème dans ta requête SELECT * FROM news, L3 c'est une jointure
si j’ai bien compris tu veux faire une union du contenu des deux table

essai plutôt
select * from (select * from news UNION select * from l3)as T1 order by timestamp desc

tu aura comme résultat un tableau avec 6 colonne et nombre de ligne = nombre ligne (L3) + nombre ligne (news)
9
Nico_ Messages postés 1219 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 15 mars 2016 189
26 janv. 2008 à 11:53
bonjour,

Expemple avec celle que j'utilise pour mon site.
<?php
mysql_connect("localhost", "IDENTIFIANT", "MOT DE PASSE"); // Connexion à MySQL
mysql_select_db("base"); // Sélection de la base du site
$reponse = mysql_query("SELECT * FROM nom de la base"); // Requête SQL
 
// On fait une boucle pour lister tout ce que contient la table :
 
while ($donnees = mysql_fetch_array($reponse) )
{
?>
        Référence Chaine :</span><strong> <?php echo $donnees['id']; ?> </strong> Reçu le :</span><strong> <?php echo $donnees['date']; ?></strong>
        <p><?php echo $donnees['contenu']; ?></p>
        <?php
}
mysql_close(); // Déconnexion de MySQL
?>


voici ce que ça me donne

Essai de voir ce que ça donne avec ceci pour ta base (la page est au format .php)

<?php
mysql_connect("localhost", "IDENTIFIANT", "MOT DE PASSE"); // Connexion à MySQL
mysql_select_db("base"); // Sélection de la base du site
$reponse = mysql_query("SELECT * FROM news"); // Requête SQL
 
// On fait une boucle pour lister tout ce que contient la table :
 
while ($donnees = mysql_fetch_array($reponse) )
{
?>
        ID:</span><strong> <?php echo $donnees['id']; ?> </strong>
        titre:<strong> <?php echo $donnees['titre']; ?></strong>
        timestamp:<?php echo $donnees['timestamp']; ?>
        publication:<?php echo $donnees['publication']; ?>
        auteur:<?php echo $donnees['auteur']; ?>
        <p><?php echo $donnees['contenu']; ?></p>
        <?php
}
mysql_close(); // Déconnexion de MySQL
?>


Bonne journée. Il se peux que ce ne sois pas ce qui est recherché!
3
dcanl Messages postés 2999 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
26 janv. 2008 à 11:57
Salut.

Merci d'avoir répondu.

En fait si je comprends bien ton code, ça liste et affiche le contenu de la table news.

Mais je souhaiterais lister et afficher le contenu des deux tables sur la même page, avec le résultat trié selon la valeur de timestamp...

@+
0
Nico_ Messages postés 1219 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 15 mars 2016 189
26 janv. 2008 à 12:56
tu fais la même chose en dessous mais avec la seconde table.

pour ce qui est de l'affichage par rapport au timestamp, je ne sais pas comment faire, je vais regarder sur le site du Zéro pour voir.
tu as bien conpris le code ! il affiche le contenue de ta table
bonne journée
0
dcanl Messages postés 2999 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
26 janv. 2008 à 15:14
Re.

J'ai regardé comment fonctionnait les forums PUNBB.

J'ai calqué ma propre base de données sur ce modèle.

Il y a donc une table Catégories (News, L3) et une table Actualites (qui contient les actus postées).

Je peux alors sélectionner et afficher ce que je veux, dans l'ordre que je veux.

Merci quand même.

@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Salut dcanl,
j'ai le même conflit que toi, je dois récuperer des donnée de 2 tables différentes ayant le même nom de champs, pourrais-tu me donner un exemple du comment tu as résolu ton problème, car je ne connais pas du tout la façon de fonctionner des forum PUNBB.

Merci d'avance

Cordialement
0
dcanl Messages postés 2999 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
5 juin 2008 à 17:21
Salut.

J'ai fusionné mes deux tables en une seule, en ajoutant un champ de clé étrangère "catégorie" qui pointe vers une table qui contient le nom de toutes les catégories possibles. C'est bien plus souple et pratique comme ça !

Toutes les opérations de récupération, tri et filtre sont ainsi beaucoup plus simples. Tout est adaptable.

@+
0
Je te remercie de ta réponse, bien qu'elle ne réponde pas à mon problème, c'est un projet que j'ai pour mon stage en entreprise, et je ne peut pas modifier leur base de donnée, car j'utilise celle centrale, je souhaite justement récupérer les donnée pour pouvoir les modeler à ma guise dans une base de donnée à part.
et je récupère d'une table pro_ofent.dte_debprev et pro_ofent.dte_finprev, et d'une autre table pro_ofop.dte_debprev et pro_ofop.dte_finprev
mon problème ce situe dans la boucle que je fait ensuite(foreach) pour extraire les données du résultat de la requête qui marche très bien, elle est aussi utilisé au travers de excel, les donnée sont très bien reçu.

par exemple : $row['DTE_DEBPREV'] et $row['DTE_FINPREV']
j'ai éssayé avec $row['PRO_OFENT.DTE_DEBPREV'] etc...
mais ça ne me retourne strictement rien ...

si vous avez des sugestion je suis tout ouï

Cordialement
0
Salut,

J'arrive aprés la bataille, mais ça peut servir aux suivants :

Ce que tu montre VixsTy c'est du php, pour faire ce que tu veu (de ce que j'ai compris), il faut bien utiliser UNION, tu trouveras plus d'info par ici : http://dev.mysql.com/doc/refman/5.0/fr/union.html
0
VixsTy > Korri
26 sept. 2008 à 18:29
Je te remercie pour ta réponse, même si il est vrai que ma guerre est fini loool
éffectivement je programmais mon code en php, de toute façon pour dialoguer avec une base de donnée le html et le javascript ne sont pas trés utiles du fait que le html est de la mise en page, et que le javascript s'éxécute non pas sur le serveur, mais sur le client. enfin bref.
j'ai regardé le site que tu m'as passé, je comprend tout à fait qu'il faille utiliser union, mais mon gros problème était que je récupérais de 2 tables différentes, 2 valeur de même ID, et après la mise en mémoire, je ne trouvais pas comment les rappeler. Donc à l'époque la solution que j'ai utilisé, c'est qu'au lieu de les rappeler en les appelant par leur ID graçe au foreach, je les rappelais en les pointant directement par le numéro d'ordre de rangement lors du foreach.
c'est à dire au lieu de $ROW['DATE_DEBPREV'] j'utilisais par exemple $ROW['10']
mais je trouve cette méthode pas trés propre, c'est pour ça que je demandais ce renseigment.

Cordialement, et merci encore Korri
0
merci
lah ihafdek
0
holow1 Messages postés 680 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 7 décembre 2012 71
4 mars 2011 à 20:11
heh hey safait longtemps que j'ai pas visite ce forum ^_^

bon pour la solution essayer d'utiliser union de mysql

http://dev.mysql.com/doc/refman/5.0/fr/union.html
0