Problème INSERT INTO

Eléphant du PHP | 124 Messages

30 juin 2007, 21:45

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>
Modifié en dernier par neo765 le 29 mai 2008, 23:16, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

30 juin 2007, 23:34

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... ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 124 Messages

30 juin 2007, 23:40

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
Modifié en dernier par neo765 le 29 mai 2008, 23:16, modifié 1 fois.

Mammouth du PHP | 959 Messages

30 juin 2007, 23:42

ben sa, c'est une erreur de syntax.... va sur la doc de mysql.. tu aura d'avantages d'infos...

ViPHP
ViPHP | 5924 Messages

30 juin 2007, 23:46

Utilise mysql_real_escape_string() sur les données de ta requète pour les échapper...

Eléphant du PHP | 124 Messages

01 juil. 2007, 17:12

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());
Modifié en dernier par neo765 le 29 mai 2008, 23:16, modifié 1 fois.

ViPHP
ViPHP | 5924 Messages

01 juil. 2007, 17:49

Ca ne te choque pas d'utiliser une fonction php comme cela ?
"mysql_real_escape_string($details)"

Eléphant du PHP | 124 Messages

01 juil. 2007, 18:24

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));
Modifié en dernier par neo765 le 29 mai 2008, 23:17, modifié 1 fois.

ViPHP
ViPHP | 5924 Messages

01 juil. 2007, 20:51

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) . "'); ");