Problème d'affichage malgré insertion réussie dans BDD
Bonjour à tous!
Suite à de nombreuses recherches d'erreurs dans un script, je fais appel à votre aide. Merci d'avance pour l'attention que vous attacherez au sujet.
Je suis en train d'écrire un petit module de gestion d'évènements dans un calendrier, rien de très compliqué jusque là...Mais voilà, j'ai un petit souci que je me hâte de vous raconter, mais avant ça, un peu de code! ;)
Code:
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
<?php
$date = $_GET['jour']; //On va récupérer le contenu de la variable jour provenant du calendrier
$date_string = (string) $date; //On convertit la date de int vers string
$date_string_size = strlen($date_string); //On détermine le nombre de caractères dans cette chaîne
if($date_string_size < 6)
{
$date_string = '0'.$date_string.''; //On rajoute un 0 devant la date si le jour n'est pas un entier à deux chiffres
}
$jour = substr($date_string, 0, 2); //on coupe le string pour avoir le jour
$mois = substr($date_string, 2, 2); //le mois
$annee = substr($date_string, 4, 2); //l'annee
echo '<h3>Rencontres du '.$jour.'/'.$mois.'/'.$annee.'</h3>'; //On affiche le résultat
$admin_bdd = "xxx"; //A modifier selon l'administrateur de la base de données
$pass_bdd = "xxx"; // A modifier selon le mot de passe de la base de données
$bdd = "xxx"; //A modifier selon le nom de la base de données
mysql_connect("localhost", $admin_bdd, $pass_bdd) or die(mysql_error()); //Connexion à MySql et sélection de la base
mysql_select_db($bdd) or die(mysql_error);
if(isset($_POST['P1']) && $_POST['P1'] != NULL && isset($_POST['Heure']) && $_POST['Heure'] != NULL && isset($_POST['Carte']) && $_POST['Carte'] != NULL) //Conditions d'insertion dans la table
{
$p1 = htmlspecialchars(mysql_real_escape_string(addslashes($_POST['P1']))); //Mesures de sécurité liées à l'insertion dans une table
$p2 = htmlspecialchars(mysql_real_escape_string(addslashes($_POST['P2'])));
$heure = htmlspecialchars(mysql_real_escape_string(addslashes($_POST['Heure'])));
$carte = htmlspecialchars(mysql_real_escape_string(addslashes($_POST['Carte'])));
$insertion = "INSERT INTO calendrier VALUES('', '".$p1."', '".$p2."', '".$date."', '".$heure."', '".$carte."')";
$requete_insertion = mysql_query($insertion) or die(mysql_error()); //Insertion
}
$selection = 'SELECT * FROM calendrier WHERE Date=\''.$date.'\'';
$requete1 = mysql_query($selection) or die(mysql_error()); //On récupère le contenu de la table
$donnees_requete1 = mysql_fetch_array($requete1); //On met les données sous forme lisible
mysql_close() or die(mysql_error()); //On n'oublie pas de fermer MySql et de vérifier si un problème subsiste
if($donnees_requete1['Date'] != NULL) //Alors, a-t-on trouvé au moins une entrée?
{
?>
<table style = 'border: solid 1px white; width: 640px;'>
<tr>
<td>Joueur 1</td>
<td>Joueur 2</td>
<td>Heure</td>
<td>Carte</td>
<td>Statut</td>
</tr>
<?php
while($donnees_requete1 = mysql_fetch_array($requete1)) //Boucle d'affichage des différentes entréees recueillies lors de la sélection
{
?>
<tr>
<td><?php echo stripslashes($donnees_requete1['P1']); ?></td>
<td><?php echo stripslashes($donnees_requete1['P2']); ?></td>
<td><?php echo stripslashes($donnees_requete1['Heure']); ?></td>
<td><?php echo stripslashes($donnees_requete1['Carte']); ?></td>
<td>
<?php
if($donnees_requete1['P2'] == NULL || $donnees_requete1['P1'] == NULL)
{
echo '<a href = \'calendrier.php?action=change&id='.$donnees_requete1['ID'].'\'>Libre (Rejoindre?)</a>';
}
else
{
echo 'Complet';
}
?>
</td>
<td>Rejoindre le salon de discussion</td>
</tr>
<?php
}
?>
</table>
<?php
}
else
{
?>
<p>Il n'y a pas encore de rencontre à cette date.</p>
<?php
}
?>
<h3>Prévoir une rencontre</h3>
<form action = 'rencontres.php?jour=<?php echo $date; ?>' method = 'post'>
<table>
<input name = 'ID' type = 'hidden'/>
<tr>
<td>Joueur 1</td>
<td><input name = 'P1' type = 'text'/> (*)</td>
</tr>
<tr>
<td>Joueur 2</td>
<td><input name = 'P2' type = 'text'/></td>
</tr>
<tr>
<td>Heure</td>
<td><input name = 'Heure' type = 'text'/> (*)</td>
</tr>
<tr>
<td>Carte</td>
<td><input name = 'Carte' type = 'text'/> (*)</td>
</tr>
<tr>
<td><input type = 'submit' value = 'Valider'/></td>
</tr>
</table>
</form>
<p>Tous les champs marqués d'une astérisque sont obligatoires!</p> |
Le problème est que lors de l'exécution de ce script pour la première fois (i.e. quand je remplis pour la première fois le formulaire et que je le valide (la table étant toujours vide donc)), le tableau avec les titres des champs apparaît bien au lieu de 'Il n'y a pas encore de rencontres prévues à cette date' mais les données que j'ai insérées ne sont pas visibles...Ce n'est qu'au deuxième enregistrement qu'alors, effectivement, les données que je viens d'entrer s'affichent...Sans pour autant que le premier enregistrement ne refasse son apparition...
J'ai relu le code pour voir où l'erreur dans le raisonnement, et je ne trouve pas.
Merci d'avance pour votre aide précieuse!
PS: aucune erreur MySQL déclarée lors de l'exécution.
PS 2: la page calendrier.php appartient (via include) à rencontres.php.