Page 1 sur 1

Problème INSERT INTO

Posté : 30 juin 2007, 21:45
par neo765
Salut,

J'ai un petit problème :

Je n'arrive pas à executer la requete SQL INSERT INTO :

//-------------------------------------------------------------------------------------------------------------------
// On génére le tableau : 1ère partie -------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------

$texte1='<table width="95%" border="0">
  <tr> 
    <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">'.$competition_1.'</font></div></td>
    <td width="25%" rowspan="3"> <div align="center"></div>
      <div align="center"></div>
      <div align="center"><font size="2" face="Tahoma">'.$cote1.'</font></div></td>
    <td width="25%" rowspan="3"> <div align="center"></div>
      <div align="center"></div>
      <div align="center"><strong><font color="'.$couleur_1.'" size="2" face="Tahoma">'.$etat_1.'</font></strong></div></td>
  </tr>
  <tr> 
    <td><div align="center"><font size="2" face="Tahoma"><strong>'.$choixtext1.'</strong></font></div></td>
  </tr>
  <tr> 
    <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : '.$equipe_choisie_1.'</font></div></td>
  </tr>
</table>';

//-------------------------------------------------------------------------------------------------------------------
// On génére le tableau : 2nde partie -------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------

$texte2='<table width="95%" border="0">
  <tr> 
    <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">'.$competition_2.'</font></div></td>
    <td width="25%" rowspan="3"> <div align="center"></div>
      <div align="center"></div>
      <div align="center"><font size="2" face="Tahoma">'.$cote2.'</font></div></td>
    <td width="25%" rowspan="3"> <div align="center"></div>
      <div align="center"></div>
      <div align="center"><strong><font color="'.$couleur_2.'" size="2" face="Tahoma">'.$etat_2.'</font></strong></div></td>
  </tr>
  <tr> 
    <td><div align="center"><font size="2" face="Tahoma"><strong>'.$choixtext2.'</strong></font></div></td>
  </tr>
  <tr> 
    <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : '.$equipe_choisie_2.'</font></div></td>
  </tr>
</table>';

//-------------------------------------------------------------------------------------------------------------------
// On génére le tableau : 3ème partie -------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------

$texte3='<table width="95%" border="0">
  <tr> 
    <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">'.$competition_3.'</font></div></td>
    <td width="25%" rowspan="3"> <div align="center"></div>
      <div align="center"></div>
      <div align="center"><font size="2" face="Tahoma">'.$cote3.'</font></div></td>
    <td width="25%" rowspan="3"> <div align="center"></div>
      <div align="center"></div>
      <div align="center"><strong><font color="'.$couleur_3.'" size="2" face="Tahoma">'.$etat_3.'</font></strong></div></td>
  </tr>
  <tr> 
    <td><div align="center"><font size="2" face="Tahoma"><strong>'.$choixtext3.'</strong></font></div></td>
  </tr>
  <tr> 
    <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : '.$equipe_choisie_3.'</font></div></td>
  </tr>
</table>';

//-------------------------------------------------------------------------------------------------------------------
$details="$texte1<br>$texte2<br>$texte3";

echo "Status : $status<br>";
if ($status==TRUE)
{
$maj5=mysql_query ("INSERT INTO fini (idpari, idmembre, type, cote, mise, status, details, date) VALUES ('$id_pari_combine', '$idmembre', '3', '$cote', '$mise', '$status', '$details', '$datetime')");
echo "INSERT INTO fini (idpari, idmembre, type, cote, mise, status, details, date) VALUES ($id_pari_combine, $idmembre, 3, $cote, $mise, $status, '$details', $datetime)";
}
Status : 2
INSERT INTO fini (idpari, idmembre, type, cote, mise, status, details, date) VALUES ('781', '448', '3', '2.83', '0.05', '2', ''[les tableaux]'', '2007-06-30 19:22:20')
Mais le problème, c'est que la table "fini" est vide...

Le problème vient de la variable $details qui n'arrive pas a inserer car en changeant en $details="test" le script s'éxécutait normalement....

Le champ détails est un champ text qui peut etre nul.

En testant avec d'autres valeurs, l'insertion de la variable détails avait bien lieu, il a juste du mal à inserer un tableau de 3 lignes, par exemple avec 4 lignes le script fonctionne normalement

Merci

--------------------------------------------------------------------------------------

Edit :

Il n'arrive pas a enregistrer quand $details vaut :

Code : Tout sélectionner

<table width="95%" border="0"> <tr> <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">5</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><font size="2" face="Tahoma">1.25</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><strong><font color="#FF0000" size="2" face="Tahoma">Perdu</font></strong></div></td> </tr> <tr> <td><div align="center"><font size="2" face="Tahoma"><strong>Barcelone - Betis Seville</strong></font></div></td> </tr> <tr> <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : Barcelone</font></div></td> </tr> </table><br><table width="95%" border="0"> <tr> <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">5</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><font size="2" face="Tahoma">1.7</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><strong><font color="#006600" size="2" face="Tahoma">Gagné</font></strong></div></td> </tr> <tr> <td><div align="center"><font size="2" face="Tahoma"><strong>FC Valence - Real Saragosse</strong></font></div></td> </tr> <tr> <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : FC Valence</font></div></td> </tr> </table><br><table width="95%" border="0"> <tr> <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">32</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><font size="2" face="Tahoma">1.33</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><strong><font color="#333333" size="2" face="Tahoma">???</font></strong></div></td> </tr> <tr> <td><div align="center"><font size="2" face="Tahoma"><strong>Coupe de l'America 2007</strong></font></div></td> </tr> <tr> <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : Team Alinghi</font></div></td> </tr>
------------------------------

Mais il arrive a enregistrer quand details vaut :

Code : Tout sélectionner

<table width="95%" border="0"> <tr> <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">5</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><font size="2" face="Tahoma">4</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><strong><font color="#333333" size="2" face="Tahoma">???</font></strong></div></td> </tr> <tr> <td><div align="center"><font size="2" face="Tahoma"><strong>Championnat du Monde 2007 (Vainqueur Constructeurs)</strong></font></div></td> </tr> <tr> <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : Ferrari</font></div></td> </tr> </table><br><table width="95%" border="0"> <tr> <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">4</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><font size="2" face="Tahoma">1.37</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><strong><font color="#006600" size="2" face="Tahoma">Gagné</font></strong></div></td> </tr> <tr> <td><div align="center"><font size="2" face="Tahoma"><strong>Manchester United - Sheffield United</strong></font></div></td> </tr> <tr> <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : Manchester United</font></div></td> </tr> </table><br><table width="95%" border="0"> <tr> <td width="50%"> <div align="center"><font color="#333333" size="2" face="Tahoma">1</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><font size="2" face="Tahoma">1.54</font></div></td> <td width="25%" rowspan="3"> <div align="center"></div> <div align="center"></div> <div align="center"><strong><font color="#FF0000" size="2" face="Tahoma">Perdu</font></strong></div></td> </tr> <tr> <td><div align="center"><font size="2" face="Tahoma"><strong>Lyon - Rennes</strong></font></div></td> </tr> <tr> <td><div align="center"><font color="#990000" size="2" face="Tahoma">Votre choix : Lyon</font></div></td> </tr> </table>

Posté : 30 juin 2007, 23:34
par @rthur
Bonjour,

Remplace:
$maj5=mysql_query ("INSERT INTO fini (idpari, idmembre, type, cote, mise, status, details, date) VALUES ('$id_pari_combine', '$idmembre', '3', '$cote', '$mise', '$status', '$details', '$datetime')");
par
$maj5=mysql_query ("INSERT INTO fini (idpari, idmembre, type, cote, mise, status, details, date) VALUES ('$id_pari_combine', '$idmembre', '3', '$cote', '$mise', '$status', '$details', '$datetime')") or die("Erreur MySQL : ".mysql_error());
ça te permettra d'afficher les erreurs MySQL pour déboguer plus facilement... ;)

Posté : 30 juin 2007, 23:40
par neo765
Merci pour ton information
Erreur MySQL : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'America 2007
Je pense avoir compris : ça vient du ' de "coupe de l'america 2007"

Ya t'il une solution de corriger le problème sans supprimer le ' ?

Encore merci

Posté : 30 juin 2007, 23:42
par chrislabricole
ben sa, c'est une erreur de syntax.... va sur la doc de mysql.. tu aura d'avantages d'infos...

Posté : 30 juin 2007, 23:46
par Sékiltoyai
Utilise mysql_real_escape_string() sur les données de ta requète pour les échapper...

Posté : 01 juil. 2007, 17:12
par neo765
Utilise mysql_real_escape_string() sur les données de ta requète pour les échapper...
J'ai essayé d'utiliser cette fonction mais il n'y a plus rien qui rentre dans la base "fini" :
$maj5=mysql_query ("INSERT INTO fini (idpari, idmembre, type, cote, mise, status, details, date) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", $id_pari_combine, $idmembre, 3, $cote, $mise, $status, mysql_real_escape_string($details), $datetime) or die ("Erreur MySQL : ".mysql_error());

Posté : 01 juil. 2007, 17:49
par Sékiltoyai
Ca ne te choque pas d'utiliser une fonction php comme cela ?
"mysql_real_escape_string($details)"

Posté : 01 juil. 2007, 18:24
par neo765
Dans la doc ils mettent :
// Requête
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));

Posté : 01 juil. 2007, 20:51
par Sékiltoyai
Question : Il est quelle heure ?
Réponse : Il fait beau aujourd'hui...

Déjà, tu dis que dans la doc, ils utilisent sprintf (on peut très bien s'en passer), mais bizarrement je ne vois pas de sprintf dans ton code.
Ensuite, quand je te demandais si ca te choquait d'uitiliser une fonction php de cette manière :
"mysql_real_escape_string($details)" 
, ca voulait dire que quand on utilise une fonction, on ne la met pas dans une chaine, mais à l'extérieur. On ne fait pas
"truc, mysql_real_escape_string($var) , machin"
mais
"truc, " . mysql_real_escape_string($var) . ", machin"
Enfin, mysql_real_escape_string() s'utilise de cette manière :
mysql_query(" INSERT INTO table VALUES('" . mysql_real_escape_string($var) . "'); ");