Problème formulaire actu calendrier !!

Problème formulaire actu calendrier !! - PHP - Programmation

Marsh Posté le 12-05-2008 à 14:49:12    

Bonjour,
 
Voila j'ai un petit souci avec un script que je n'arrive pas a faire fonctionner comme je le souhaite  :kaola: !!
Il s'agit d"un script PHP qui aurait pour but, a partir d'une base de données contenant un calendrier de matchs de foot, permettre d'actualiser les résultats en ligne a partir de ma zone admin en rentrant juste les scores des matchs qui auront eu lieu.
 
Mon principal souci et que quand je veut actu les scores en les rentrants dans la zone de texte, j'ai toujours mon message d'erreur comme quoi il y a des champs vides... en faits mon script ne distingues qu'un seul formulaire au lieu d'un par rencontre ...
 
Voici le script :
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Admin - Calendrier</title>
</head>
 
<body>
<table> <!-- En tête du tableau -->
<caption>Calendrier L1</caption>
<tr>
    <th>Journée </th>
 <th>Equipe 1</th>
    <th>Equipe 2 </th>
    <th>Score 1 </th>
 <th>Score 2</th>
</tr>
<?php
 $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error()); // connexion à la base
mysql_select_db('Test', $db); // Selection base
 
// Calendrier
$retour = mysql_query("SELECT * FROM calendrier ORDER BY Journée" );
while ($donnees = mysql_fetch_array($retour)){  
?>
<tr>
 <td><?php echo $donnees['Journée']?></td>
 <td><?php echo $donnees['Equipe1']?></td>
 <td><?php echo $donnees['Equipe2']?></td>
 <?php if ($donnees['Score1']==NULL AND $donnees['Score2']==NULL)
 { ?>
  <div id="Formulaire">
     <form method="POST" action="http://localhost/Test/addscore.php">
        <left>
         <td>Score 1</td>
      <td><input type="text" name="Score1" size="5" maxlength="10"></td>
         <td>Score 2</td>
      <td><input type="text" name="Score2" size="5" maxlength="10"></td>
         <td><input type="submit" value="Envoyer" name="envoyer"></td>
        </left>
   </form>
  </div>
 <?php }  
 else { ?>
 <td><?php echo $donnees['Score1']?></td>
 <td><?php echo $donnees['Score2']?></td>
 <?php }?>
</tr>
<?php  
}  
mysql_close();
?>
</table>
</body>
</html>
 
 
et la page d'actu des scores addscore.php:
 
<?php  
 // On commence par récupérer les champs
 if(isset($_POST['Score1']))      $Score1=$_POST['Score1'];
 else      $Score1="";
 
 if(isset($_POST['Score2']))      $Score2=$_POST['Score2'];
 else      $Score2="";
 
 // On vérifie si les champs sont vides
 if(empty($Score1) OR empty($Score2))
    {
     echo '<font color="red">Attention, il y a des champs vide ! </font> ';
    }
 
 if( !empty($Score1) AND !empty($Score2)) {
  // connexion à la base
  $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());  
     // sélection de la base
  mysql_select_db('Test',$db)  or die('Erreur de selection '.mysql_error());  
 
  // Requête sql
     $sql = "INSERT INTO calendrier (Score1, Score2) VALUES($Score1, $Score2)";
     
     // on insère les informations du formulaire dans la table
     mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
     // on affiche le résultat
     echo 'Vos infos on été ajoutées !';
 
     mysql_close();  // on ferme la connexion
 
 }
?>
 
http://www.cote-et-foot.com/pb.JPG
 
Merci d'avance parce que la je sèche !!!

Message cité 1 fois
Message édité par ysolal le 12-05-2008 à 18:55:43
Reply

Marsh Posté le 12-05-2008 à 14:49:12   

Reply

Marsh Posté le 13-05-2008 à 10:36:07    

ysolal a écrit :

Bonjour,
 
Voila j'ai un petit souci avec un script que je n'arrive pas a faire fonctionner comme je le souhaite  :kaola: !!
Il s'agit d"un script PHP qui aurait pour but, a partir d'une base de données contenant un calendrier de matchs de foot, permettre d'actualiser les résultats en ligne a partir de ma zone admin en rentrant juste les scores des matchs qui auront eu lieu.
 
Mon principal souci et que quand je veut actu les scores en les rentrants dans la zone de texte, j'ai toujours mon message d'erreur comme quoi il y a des champs vides... en faits mon script ne distingues qu'un seul formulaire au lieu d'un par rencontre ...
Merci d'avance parce que la je sèche !!!


 
J'ai déjà eu un problème de ce genre, mon formulaire était mal interprété par le navigateur dans un tableau. Il n'est tout simplement pas valide, d'après le W3C, de mettre un formulaire dans un tableau.
http://giminik.developpez.com/arti [...] ulti-form/

Reply

Marsh Posté le 13-05-2008 à 15:55:13    

Merci pour ta réponse et grâce au lien que tu m'a envoyer j'ai pu apprendre que php n'acceptait pas les formulaire dans les tableau ...
 
De ce fait j'ai refait mon script avec des balises <span> à la place de <table> mais j'ai toujours le même souci : >Erreur ! il y a des champs vides !!!!
 
Donc je suppose que c'est mon fichier addscore.php  qui n'est pas bon mais je ne trouve pas l'erreur à par que la requête SQL n'est surement pas bonne !
 
 

Citation :

<?php  
 // On commence par récupérer les champs
 if(isset($_POST['Score1']))      $Score1=$_POST['Score1'];
 else      $Score1="";
 
 if(isset($_POST['Score2']))      $Score2=$_POST['Score2'];
 else      $Score2="";
 
 // On vérifie si les champs sont vides
 if(empty($Score1) OR empty($Score2))
    {
     echo '<font color="red">Attention, il y a des champs vide ! </font> ';
    }
 
 if( !empty($Score1) AND !empty($Score2)) {
  // connexion à la base
  $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());  
     // sélection de la base
  mysql_select_db('Test',$db)  or die('Erreur de selection '.mysql_error());  
 
  // Requête sql
     $sql = "INSERT INTO calendrier (Score1, Score2) VALUES($Score1, $Score2)";
     
     // on insère les informations du formulaire dans la table
     mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
     // on affiche le résultat
     echo 'Vos infos on été ajoutées !';
 
     mysql_close();  // on ferme la connexion
 
 }
?>


 
Si tu pourrait me dire ce que t'en pense ...
 
Merci ++

Reply

Marsh Posté le 13-05-2008 à 15:59:50    

ysolal a écrit :

Merci pour ta réponse et grâce au lien que tu m'a envoyer j'ai pu apprendre que php n'acceptait pas les formulaire dans les tableau ...
 
De ce fait j'ai refait mon script avec des balises <span> à la place de <table> mais j'ai toujours le même souci : >Erreur ! il y a des champs vides !!!!
 
Donc je suppose que c'est mon fichier addscore.php  qui n'est pas bon mais je ne trouve pas l'erreur à par que la requête SQL n'est surement pas bonne !
 
 

Citation :

<?php  
 // On commence par récupérer les champs
 if(isset($_POST['Score1']))      $Score1=$_POST['Score1'];
 else      $Score1="";
 
 if(isset($_POST['Score2']))      $Score2=$_POST['Score2'];
 else      $Score2="";
 
 // On vérifie si les champs sont vides
 if(empty($Score1) OR empty($Score2))
    {
     echo '<font color="red">Attention, il y a des champs vide ! </font> ';
    }
 
 if( !empty($Score1) AND !empty($Score2)) {
  // connexion à la base
  $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());  
     // sélection de la base
  mysql_select_db('Test',$db)  or die('Erreur de selection '.mysql_error());  
 
  // Requête sql
     $sql = "INSERT INTO calendrier (Score1, Score2) VALUES($Score1, $Score2)";
     
     // on insère les informations du formulaire dans la table
     mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
     // on affiche le résultat
     echo 'Vos infos on été ajoutées !';
 
     mysql_close();  // on ferme la connexion
 
 }
?>


 
Si tu pourrait me dire ce que t'en pense ...
 
Merci ++


Ce n'est pas le PHP qui n'accepte pas le form dans le table mais le HTML
 
Quant à ta question, qu'obtiens-tu comme affichage ?
essaye un print_r($_POST); au début pour voir ce que tu récupères ...

Reply

Marsh Posté le 13-05-2008 à 20:04:16    

voila lorsque je fais un print_r($_POST); j'ai :
 
Array ( [Score1] => 2 [Score2] => 1 [envoyer] => Envoyer ) Vos infos on été ajoutées !
 
mais le problème c'est que sa me crée un ligne dans la base de donnée avec journée=0 Equipe1=NULL Equipe2=NULL et les scores que j'ai rentré donc je pense que c'est le SQL qui plante !!!
 

Citation :

// Requête sql
     $sql = "INSERT INTO calendrier (Score1, Score2) VALUES($Score1, $Score2)";


 
Voila l'affichage  
 
http://www.cote-et-foot.com/pb2.JPG

Message cité 1 fois
Message édité par ysolal le 13-05-2008 à 20:06:01
Reply

Marsh Posté le 14-05-2008 à 10:29:58    

ysolal a écrit :

voila lorsque je fais un print_r($_POST); j'ai :
 
Array ( [Score1] => 2 [Score2] => 1 [envoyer] => Envoyer ) Vos infos on été ajoutées !
 
mais le problème c'est que sa me crée un ligne dans la base de donnée avec journée=0 Equipe1=NULL Equipe2=NULL et les scores que j'ai rentré donc je pense que c'est le SQL qui plante !!!
 

Citation :

// Requête sql
     $sql = "INSERT INTO calendrier (Score1, Score2) VALUES($Score1, $Score2)";


 
Voila l'affichage  
 
http://www.cote-et-foot.com/pb2.JPG


Non, le SQL ne plante pas :
INSERT INTO calendrier (Score1, Score2) VALUES($Score1, $Score2)
signifie crée une ligne avec les valeurs $Score1 et $Score2 dans les champs Score1 et Score2, et ça marche apparemment.
Si tu veux mettre à jour une ligne existante pour renseigner les scores, il faut utiliser la commande update, et savoir sur quelle ligne tu travailles.
 
Par exemple, dans chaque formulaire, tu rajoutes  
<input type="hidden" name="id" value="<?php echo $donnees['id']; ?>" />
Cette input ne se verra pas mais passera en POST l'id de la ligne sur laquelle tu travailles. Après tu fais le même traitement sur $_POST['id'] que pour les les scores (verification non vide, ...) (au passage, http://fr.wikipedia.org/wiki/Injection_SQL)
Et ta requête devient
UPDATE calendrier SET Score1=$score1, Score2=$score2 WHERE id=$id;
 
 

Reply

Marsh Posté le 14-05-2008 à 17:27:07    

Merci beaucoup pour ton aide c'est vrai c'était pourtant logique qu'il fallait un UPDATE car les champs étaient déjà crée dans la base... mais je sait pas pourquoi je me suis obstiné dans le INSERT INTO  :pt1cable:  
 
Merci encore :hello:


Message édité par ysolal le 14-05-2008 à 17:45:32
Reply

Marsh Posté le 14-05-2008 à 17:37:14    

Il manque les quotes pour les champs qui ne sont pas numériques : UPDATE calendrier SET Score1=3, Score2=1 WHERE Journée=2 AND Equipe1="Marseille" AND Equipe2="Metz"


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 14-05-2008 à 18:45:44    

Tout fonctionne correctement
Merci encore !
 
 :D ++

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed