Vous n'êtes pas identifié(e).
Bonjour,
J'ai 2 tables mysql avec des champs completements différents, hormis 2 champs : pseudo et heure_arrivee.
J'aimerais afficher tous les enregistrements de ces 2 tables par ordre de heure_arrivee
J'ai essayé divers trucs, mais ca ne fonctionne pas vraiment bien.
Ce que j'ai fait :
[code:php]
<table>
<?php
$sql2="SELECT p.id_pet, p.action, p.heure_arrivee, m.id_destinataire, m.quantite_envoyer, m.ressource_envoyer, m.heure_arrivee
FROM pet_mvt as p, marche_mvt as m WHERE p.id_pet='".$sess_id_pet."' OR m.id_pseudo='".$sess_id_pseudo."' ORDER BY m.heure_arrivee ";
$req2 = mysql_query($sql2) or die('Erreur SQL 2 !<br>'.mysql_error());
while ($var2 = mysql_fetch_array($req2)) {
if (isset($var2['action']) AND $var2['action'] == 1) {$nom_action = "Attaquer";}else{$nom_action = "Défendre";}
?>
<tr>
<td>
<?php echo "action : ".$nom_action; ?>
</td>
<td>
<?php $temps = $var2['heure_arrivee'] - time() ; F_calcul_duree($temps); ?>
</td>
<td>
<?php echo date("Y-m-d G:i:s",$var2['heure_arrivee']); ?>
</td>
</tr>
<?php unset($var2['action']); } ?>
</table>
[/code]
Mais la variable $var2['action'] garde toujours comme valeur 1, alors qu'il n'y a que 1 enregistrement dans la table pet_mvt et 3 dans la table marche_mvt, donc je ne devrai pas avoir un résultat du genre de ca :
action : Attaquer -2s 2010-10-24 0:33:15
action : Attaquer -2s 2010-10-24 0:33:15
action : Attaquer -8s 2010-10-24 0:37:08
action : Attaquer -32s 2010-10-24 0:54:44
Le plus simple serai de faire 2 requetes et d'avoir 2 tableaux différents mais ce n'est pas ce que je veux...
Et j'avoue que j'ai pas d'idée sur comment rendre le truc faisable.
Merci
Yves
Hors ligne
Salut
Non, je ne peux pas mettre AND, car id_pet n'est pas présent sur les 2 tables... donc ca ne sortira rien du tout
Hors ligne
Saluton,
Quand je lis cela
J'ai 2 tables mysql avec des champs completements différents, hormis 2 champs : pseudo et heure_arrivee.
La première chose qui me vienne naturellement à l'esprit serait d'utiliser la syntaxe normalisée (SQL92, 18 ans déjà) pour décrire la jointure.
Mais, je pressens une approche plus embrouillée
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Bah le "truc" c'est que je ne veux pas faire de jointure...
EN gros pour vous mettre dans le bain, j'ai 1 table qui gere le déplacement de marchandise (table marche_pvt) et 1 table qui gere le déplacement d'animaux (table pet_mvt)
Je veux juste afficher certains info des tables par ordre d'heurre d'arrivé (champ heure_arrivee)
Faut une jointure pour faire ca?
Hors ligne
je crois que le plus simple serais que tu monter les tables et que tu nous indique ce que tu veut et s'il existe des liaisons entre les deux tables.
si il y a liaison il y aura jointure !
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
Table : marche_mvt Table qui gere le transport de ressources vers un joueur (id_destinataire)
id
id_pseudo
id_destinataire
quantite_envoyer
ressource_envoyer
heure_depart
heure_arrivee
Table : pet_mvt Table qui gere le déplacement d'un pet. (l'action peut etre 0 ou 1, ce qui représente "défendre" ou "attaquer")
id
id_pseudo
id_pet
id_destinataire
action
heure_depart
heure_arrivee
Ce que j'aimerai avoir, c'est un tableau du style :
Arrivée dans | id_destinataire | xxxxx
12m | 2 | Attaque
42m | 23 | Transport
1h12m | 12 | Défendre
5h15m | 122 | Transport
Avec xxxxx qui est variable, et dépend de la table d'ou vienne les info. si c'est la table pet_mvt alors on affiche l'action, sinon, ca va vient de la table marche_mvt et donc on peut afficher "transport"
En fait je me dis que ca serai plus simple de faire qu'1 seule table, avec plus de champ...
Hors ligne
hum donc jointure sur id destinataire si tu souhaite son non une simple requete sélect
select marche_mvt.heure_arrivee as hmarche, pet_mvt.heure_arrive as hpet, action from marche_mvt,pet_mvt where marche_mvt.id_pseudo=pet_mvt.id_pseudo and pet_mvt='.$_SESSION['id'];
tru regarde si la valeur de action est null tu affiche transport.
quand a tes requete précédente, si tu met le id pet ça va pas être simple vue qu'il n'existe pas sur la table marche !
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
Et bien ca ne fonctionne pas...
car bizarrement action vaut toujours 1
SELECT marche_mvt.heure_arrivee AS hmarche, pet_mvt.heure_arrivee AS hpet,
ACTION FROM marche_mvt, pet_mvt
WHERE marche_mvt.id_pseudo = pet_mvt.id_pseudo
AND pet_mvt.id_pseudo = '1';
Résultat de la requete :
hmarche hpet action
1287874484.95 1284468654 1
1287873428.57 1284468654 1
1287873195 1284468654 1
1288047882.65 1284468654 1
Hors ligne