PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 24-10-2010 22:42:59

ebouilleur
Membre
Lieu : Nantes
Inscription : 19-05-2009
Messages : 165
Site Web

Affichage d'un tableau pour 2 tables différentes

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

#2 25-10-2010 07:38:10

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Affichage d'un tableau pour 2 tables différentes

Mets un AND plutôt qu'un OR. wink

Hors ligne

#3 25-10-2010 13:24:28

ebouilleur
Membre
Lieu : Nantes
Inscription : 19-05-2009
Messages : 165
Site Web

Re : Affichage d'un tableau pour 2 tables différentes

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

#4 25-10-2010 15:52:33

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Affichage d'un tableau pour 2 tables différentes

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.

<?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
INNER JOIN marche_mvt as m
ON p.pseudo=m.pseudo AND p.heure_arrivee=m.heure_arrivee
WHERE p.id_pet='"
.$sess_id_pet."' OR m.id_pseudo='".$sess_id_pseudo."' ORDER BY m.heure_arrivee ";

Mais, je pressens une approche plus embrouillée roll


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

#5 25-10-2010 18:30:27

ebouilleur
Membre
Lieu : Nantes
Inscription : 19-05-2009
Messages : 165
Site Web

Re : Affichage d'un tableau pour 2 tables différentes

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

#6 25-10-2010 23:20:10

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : Affichage d'un tableau pour 2 tables différentes

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

#7 26-10-2010 10:39:05

ebouilleur
Membre
Lieu : Nantes
Inscription : 19-05-2009
Messages : 165
Site Web

Re : Affichage d'un tableau pour 2 tables différentes

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

#8 26-10-2010 12:26:11

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : Affichage d'un tableau pour 2 tables différentes

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

#9 26-10-2010 13:15:02

ebouilleur
Membre
Lieu : Nantes
Inscription : 19-05-2009
Messages : 165
Site Web

Re : Affichage d'un tableau pour 2 tables différentes

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

Pied de page des forums