Problême de tuples en double PHP/SQL ?
Résolu/Fermé
A voir également:
- Problême de tuples en double PHP/SQL ?
- Double ecran - Guide
- Whatsapp double sim - Guide
- Easy php - Télécharger - Divers Web & Internet
- Double appel - Guide
- Double authentification google - Guide
13 réponses
varfendell
Messages postés
3256
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
705
19 juil. 2011 à 16:29
19 juil. 2011 à 16:29
au moins on sais d'ou vient le pb: tes balises <tr> ne sont pas prises correctement.
Reste a voir ou les mettres pour que sa fonctionne
Reste a voir ou les mettres pour que sa fonctionne
varfendell
Messages postés
3256
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
705
19 juil. 2011 à 14:42
19 juil. 2011 à 14:42
Bonjour,
Peut tu nous fournir le code HTML généré par ton code PHP s'il te plait?
(en utilisant les balise <code>, c'est plus joli ;) )
Peut tu nous fournir le code HTML généré par ton code PHP s'il te plait?
(en utilisant les balise <code>, c'est plus joli ;) )
Ah oui, désolé je suis nouveau sur le forum !
J'ai modifier le code précédent, j'ai diviser la table occuper en deux table : ocupper(id_sal,id_group,jour) et heure(id_sal,id_group,jour,heure)
et voila mon nouveau code :
$req2 = $bdd->query("SELECT * FROM ocupper,groupe WHERE (ocupper.id_group = groupe.id_group) AND (ocupper.id_sal = ".$_POST['sal'].') ' );
?>
<tr><td>\</td><td>8h - 10h</td><td>10h - 12h</td><td>12h:30 - 14h:30</td><td>14h:30 - 16h:30</td><td>16h:30 - 18h:30</td><td>18h:30 - 20h:30</td><td>20h:30 - 22h:30</td></tr>
<?php
while($donnee = $req2->fetch())
{
?>
<tr><td><?php echo $donnee['jour'];?></td>
<?php $req3 = $bdd->query('SELECT * FROM heure WHERE jour = \''. $donnee['jour'] . '\'');
while($d = $req3->fetch())
{
?>
<td><?php if(($d['heure'] == "8h - 10h")) echo $donnee['nom_group']; else echo "\\"; ?>
</td><td><?php if(($d['heure'] == "10h - 12h")) echo $donnee['nom_group']; else echo "\\";?>
</td><td><?php if(($d['heure'] == "12h30 - 14h30")) echo $d['nom_group']; else echo "\\"; ?>
</td><td><?php if(($d['heure'] == "14h30 - 16h30")) echo $donnee['nom_group']; else echo "\\"; ?>
</td><td><?php if(($d['heure'] == "16h30 - 18h30")) echo $donnee['nom_group']; else echo "\\"; ?>
</td><td><?php if(($d['heure'] == "18h30 - 20h30")) echo $donnee['nom_group']; else echo "\\"; ?>
</td><td><?php if(($d['heure'] == "20h30 - 22h30")) echo $donnee['nom_group']; else echo "\\"; ?></td>
<?php } ?>
</tr>
<?php } ?>
</table>
et cette fois ci c'est les colonne qui sont dupliquer... Je n'arrive vraiment pas a trouver une solution, voila le code html générer
<table>
<tbody>
<tr>
<td>\</td>
<td>8h - 10h</td>
<td>10h - 12h</td>
<td>12h:30 - 14h:30</td>
<td>14h:30 - 16h:30</td>
<td>16h:30 - 18h:30</td>
<td>18h:30 - 20h:30</td>
<td>20h:30 - 22h:30</td>
</tr>
<tr>
<td>Dimanche</td>
<td>\ </td>
<td>groupe A </td>
<td>\ </td>
<td>\ </td>
<td>\ </td>
<td>\ </td>
<td>\</td>
<td>groupe A </td>
<td>\ </td>
<td>\ </td>
<td>\ </td>
<td>\ </td>
<td>\ </td>
<td>\</td>
</tr>
</tbody>
</table>
Merci !
J'ai modifier le code précédent, j'ai diviser la table occuper en deux table : ocupper(id_sal,id_group,jour) et heure(id_sal,id_group,jour,heure)
et voila mon nouveau code :
$req2 = $bdd->query("SELECT * FROM ocupper,groupe WHERE (ocupper.id_group = groupe.id_group) AND (ocupper.id_sal = ".$_POST['sal'].') ' );
?>
<tr><td>\</td><td>8h - 10h</td><td>10h - 12h</td><td>12h:30 - 14h:30</td><td>14h:30 - 16h:30</td><td>16h:30 - 18h:30</td><td>18h:30 - 20h:30</td><td>20h:30 - 22h:30</td></tr>
<?php
while($donnee = $req2->fetch())
{
?>
<tr><td><?php echo $donnee['jour'];?></td>
<?php $req3 = $bdd->query('SELECT * FROM heure WHERE jour = \''. $donnee['jour'] . '\'');
while($d = $req3->fetch())
{
?>
<td><?php if(($d['heure'] == "8h - 10h")) echo $donnee['nom_group']; else echo "\\"; ?>
</td><td><?php if(($d['heure'] == "10h - 12h")) echo $donnee['nom_group']; else echo "\\";?>
</td><td><?php if(($d['heure'] == "12h30 - 14h30")) echo $d['nom_group']; else echo "\\"; ?>
</td><td><?php if(($d['heure'] == "14h30 - 16h30")) echo $donnee['nom_group']; else echo "\\"; ?>
</td><td><?php if(($d['heure'] == "16h30 - 18h30")) echo $donnee['nom_group']; else echo "\\"; ?>
</td><td><?php if(($d['heure'] == "18h30 - 20h30")) echo $donnee['nom_group']; else echo "\\"; ?>
</td><td><?php if(($d['heure'] == "20h30 - 22h30")) echo $donnee['nom_group']; else echo "\\"; ?></td>
<?php } ?>
</tr>
<?php } ?>
</table>
et cette fois ci c'est les colonne qui sont dupliquer... Je n'arrive vraiment pas a trouver une solution, voila le code html générer
<table>
<tbody>
<tr>
<td>\</td>
<td>8h - 10h</td>
<td>10h - 12h</td>
<td>12h:30 - 14h:30</td>
<td>14h:30 - 16h:30</td>
<td>16h:30 - 18h:30</td>
<td>18h:30 - 20h:30</td>
<td>20h:30 - 22h:30</td>
</tr>
<tr>
<td>Dimanche</td>
<td>\ </td>
<td>groupe A </td>
<td>\ </td>
<td>\ </td>
<td>\ </td>
<td>\ </td>
<td>\</td>
<td>groupe A </td>
<td>\ </td>
<td>\ </td>
<td>\ </td>
<td>\ </td>
<td>\ </td>
<td>\</td>
</tr>
</tbody>
</table>
Merci !
varfendell
Messages postés
3256
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
705
19 juil. 2011 à 15:44
19 juil. 2011 à 15:44
Essaye avec ça:
<?php $req2 = $bdd->query("SELECT * FROM ocupper,groupe WHERE (ocupper.id_group = groupe.id_group) AND (ocupper.id_sal = ".$_POST['sal'].') ' ); ?> <tr> <td>\</td> <td>8h - 10h</td> <td>10h - 12h</td> <td>12h:30 - 14h:30</td> <td>14h:30 - 16h:30</td> <td>16h:30 - 18h:30</td> <td>18h:30 - 20h:30</td> <td>20h:30 - 22h:30</td> </tr> <?php while($donnee = $req2->fetch()) { echo "<tr>"; echo " <td>".$donnee['jour']."</td> "; $req3 = $bdd->query('SELECT * FROM heure WHERE jour = \''. $donnee['jour'] . '\''); while($d = $req3->fetch()) { echo "<td>"; if(($d['heure'] == "8h - 10h")) echo $donnee['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "10h - 12h")) echo $donnee['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "12h30 - 14h30")) echo $d['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "14h30 - 16h30")) echo $donnee['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "16h30 - 18h30")) echo $donnee['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "18h30 - 20h30")) echo $donnee['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "20h30 - 22h30")) echo $donnee['nom_group']; else echo "\\";echo "</td>"; } echo"</tr> "; } echo"</table> "; ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ça ne marche toujours pas... Au fait j'ai pensé que les heure de cours ne risquait pas de changer de ce fait au lieu de créer une table heure je peux ajouter 7 champs a la table ocupper (heure1,heure2,...,heure7) et comme ça je n'aurai plus de soucis... J'attend ton avis ! Et merci pour ton aide varfendell !
varfendell
Messages postés
3256
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
705
19 juil. 2011 à 15:58
19 juil. 2011 à 15:58
Tu peut essayer, je n'ai pas le mappage en tete, mais si le test est positif, c'est que c'est une solution.
Sinon essaye de mettre tes balise <tr> dans la seconde boucle while...ce n'est pas tres logique, je sais, mais sa pourrait venir de la.
Sinon essaye de mettre tes balise <tr> dans la seconde boucle while...ce n'est pas tres logique, je sais, mais sa pourrait venir de la.
Je viens d'essayer ma solution ça ne marche pas ! et le <tr> dans la boucle non plus ! je crois que ce que j'essaie de faire est tout simplement pas possible en php !
varfendell
Messages postés
3256
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
705
19 juil. 2011 à 16:05
19 juil. 2011 à 16:05
Tu as mis ta double boucle while comme ça:
???
while($donnee = $req2->fetch()) { $req3 = $bdd->query('SELECT * FROM heure WHERE jour = \''. $donnee['jour'] . '\''); while($d = $req3->fetch()) { echo "<tr>"; echo " <td>".$donnee['jour']."</td> "; echo "<td>"; if(($d['heure'] == "8h - 10h")) echo $donnee['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "10h - 12h")) echo $donnee['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "12h30 - 14h30")) echo $d['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "14h30 - 16h30")) echo $donnee['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "16h30 - 18h30")) echo $donnee['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "18h30 - 20h30")) echo $donnee['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "20h30 - 22h30")) echo $donnee['nom_group']; else echo "\\";echo "</td>"; echo" </tr> "; } }
???
varfendell
Messages postés
3256
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
705
19 juil. 2011 à 16:14
19 juil. 2011 à 16:14
et comme ça sa donne quoi?
while($donnee = $req2->fetch()) { echo "<tr>"; echo " <td>".$donnee['jour']."</td> "; $req3 = $bdd->query('SELECT * FROM heure WHERE jour = \''. $donnee['jour'] . '\''); while($d = $req3->fetch()) { echo "<td>"; if(($d['heure'] == "8h - 10h")) echo $donnee['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "10h - 12h")) echo $donnee['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "12h30 - 14h30")) echo $d['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "14h30 - 16h30")) echo $donnee['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "16h30 - 18h30")) echo $donnee['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "18h30 - 20h30")) echo $donnee['nom_group']; else echo "\\"; echo "</td><td>"; if(($d['heure'] == "20h30 - 22h30")) echo $donnee['nom_group']; else echo "\\";echo "</td>"; echo "</tr> "; echo "<tr>"; } echo "</tr> "; }
Le problème ne vient pas de la balise <tr> mais plutôt des tuples existant dans la base de donnée par exemple occuper(salle 1 , groupe 1, dimanche, 12h) et occuper(salle 1 , groupe 2, dimanche, 15h), C'est normal que les <tr> s'exécute deux fois puisque req3 va récupérer deux tuple dimanche...
varfendell
Messages postés
3256
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
705
19 juil. 2011 à 16:37
19 juil. 2011 à 16:37
T peut me faire un tableau en HTML du resultat que tu souhaites?
C'est bon j'ai trouvé la solution... En annalysant bien la situation j'ai finalement constatée que les heures de cours on les connais déja et on peut facilement les indéxer(8h 18h représente heure1... etc) et le maximum de groupes qui étudie durant la journée est 7 alors au lieu de stocker l'heure j'ai stoker les nom du groupe suivant les indexe des différente heure de cours... et ça marche !!!!!!!!
Merci beaucoup pour ton aide précieuse varfendell !!!
Merci beaucoup pour ton aide précieuse varfendell !!!