Page 1 sur 2

probleme d'insertion dans la dbb

Posté : 26 avr. 2013, 13:51
par msgbrr
Bonjour,
J'ai crée un script de commentaire en php, mais lorsque j'ajoute un comentaire, il ne s'ajoute pas dans la base de données ! Ce n'est pas un problème d'identifiants ou de mdp car je suis allé dans le phpmyadmin et j'en ai ajouté un champs manuellement il s'affiche dans la page comment.php
 
<?

include('config.php');

$date = date("d-m-Y");

if(empty($pseudo) OR empty($commentaire))
  {
   echo "<center><font color=\"black\" face=\"verdana\" size=\"2\">Attention, seul le champ e-mail peut rester vide !</font></center>";
  }
else
  {
$db = mysql_connect($host,$login,$pass);
mysql_select_db($base,$db);

mysql_query("INSERT INTO comment VALUES('','$pseudo','$mail','$commentaire','$date')");
mysql_close();      }
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=comment.php'>";

?>
     
Merci de votre aide !

Re: probleme d'insertion dans la dbb

Posté : 26 avr. 2013, 14:42
par ghost5922
Bonjour,

pour un champ vide

mysql_query("INSERT INTO comment VALUES('','$pseudo','$mail','$commentaire','$date')");

surement l'id ? alors

mysql_query("INSERT INTO comment VALUES('$pseudo','$mail','$commentaire','$date')");

car il doit être en auto incrément

Re: probleme d'insertion dans la dbb

Posté : 26 avr. 2013, 17:00
par msgbrr
Ça ne marche pas dsl

A-tu une autre solution ?

Re: probleme d'insertion dans la dbb

Posté : 26 avr. 2013, 17:16
par ghost5922
Bonjour,

Oui essaie de mettre le nom des champs
mysql_query("INSERT INTO comment ('login','email','com','date') VALUES('$pseudo','$mail','$commentaire','$date')");


ou

mysql_query("INSERT INTO comment set login='$pseudo',email='$email',com='$commentaire',`date`='$date'");

Re: probleme d'insertion dans la dbb

Posté : 26 avr. 2013, 18:59
par msgbrr
Non plus désolé voila mon script si tu veux voir !
    
<?

include('config.php');

$date = date("d-m-Y");

if(empty($pseudo) OR empty($commentaire))
  {
   echo "<center><font color=\"black\" face=\"verdana\" size=\"2\">Attention, seul le champ e-mail peut rester vide !</font></center>";
  }
else
  {
$db = mysql_connect($host,$login,$pass);
mysql_select_db($base,$db);

mysql_query("INSERT INTO comment set login='$pseudo',email='$email',com='$commentaire',`date`='$date'");
mysql_close();      }
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=comment.php'>";

?>
         

Re: probleme d'insertion dans la dbb

Posté : 26 avr. 2013, 19:55
par AB
Faut te mettre en mode débug :

Fais afficher ta requête pour voir si les variables sont bien passées et fais afficher les erreurs de ta requête :
//...
$query = "INSERT INTO comment set login='$pseudo',email='$email',com='$commentaire',`date`='$date'";

// affichage pour voir si la requête est bien formée avec les variables traduites par leur valeur.
echo $query ;

// Exécution de la requête et affichage de l'erreur éventuelle
$insert = mysql_query($query) or die (mysql_error());

// vérification du contenu (une ressource ou false)
var_dump($insert);

// exit pour arrêter le script à ce niveau pendant la phase de débug
exit;

Re: probleme d'insertion dans la dbb

Posté : 26 avr. 2013, 20:41
par msgbrr
Merci de ton script mais ou dois-je le mettre ? Je l'ai mit dans un nouveau fichier php et voila ce que ça donne

Code : Tout sélectionner

//... $query = "INSERT INTO comment set login='$pseudo',email='$email',com='$commentaire',`date`='$date'"; // affichage pour voir si la requête est bien formée avec les variables traduites par leur valeur. echo $query ; // Exécution de la requête et affichage de l'erreur éventuelle $insert = mysql_query($query) or die (mysql_error()); // vérification du contenu (une ressource ou false) var_dump($insert); // exit pour arrêter le script à ce niveau pendant la phase de débug exit;
Soit je doit le placer ailleurs soit il y a un faute dans le script puisque qu'il affiche le contenue du script !

Re: probleme d'insertion dans la dbb

Posté : 26 avr. 2013, 21:14
par ghost5922
Bonjour

le code donne par AB et a mettre a la place de ta requete

Re: probleme d'insertion dans la dbb

Posté : 26 avr. 2013, 21:28
par msgbrr
Désolé mais je ne comprends pas pouvez vous m'expliquez !

Re: probleme d'insertion dans la dbb

Posté : 26 avr. 2013, 21:52
par moogli
salut,


remplace
mysql_query("INSERT INTO comment VALUES('','$pseudo','$mail','$commentaire','$date')");
par le code de AB.

@+

Re: probleme d'insertion dans la dbb

Posté : 26 avr. 2013, 22:13
par msgbrr
Ça n'a aucun effet, j'ai bien remplacer mais lorsque je rempli tout les champs ça ne rempli par pour autant la base de données et ça revient a cette même page !
Que je mette le code de AB ou pas, la page de change rien et lorsque je rempli les champs ca ne change rien non plus, rien de spécial ne s'affiche. Le code de AB n'a aucun effet ce qui n'est pas normal je suppose !
  
<?

include('config.php');

$date = date("d-m-Y");

if(empty($pseudo) OR empty($commentaire))
  {
   echo "<center><font color=\"black\" face=\"verdana\" size=\"2\">Attention, seul le champ e-mail peut rester vide !</font></center>";
  }
else
  {
$db = mysql_connect($host,$login,$pass);
mysql_select_db($base,$db);

$query = "INSERT INTO comment set login='$pseudo',email='$email',com='$commentaire',`date`='$date'";

// affichage pour voir si la requête est bien formée avec les variables traduites par leur valeur. 
echo $query ;

// Exécution de la requête et affichage de l'erreur éventuelle 
$insert = mysql_query($query) or die (mysql_error());

// vérification du contenu (une ressource ou false) 
var_dump($insert);

// exit pour 
arrêter le script à ce niveau pendant la phase de débug 
exit;
mysql_close();      }
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=comment.php'>";

?>
.     

Re: probleme d'insertion dans la dbb

Posté : 26 avr. 2013, 23:31
par moogli
oui effectivement il y a un gros soucis.

comment est ce que tu fait appel à ce script ?

s'il s'agit d'une "action" de formulaire tu utilise une méthode désuète et surtout qui n'est plus utilisable depuis php 5.4 => coder pour regsiter_globals = on.
pour info il s'agit d'une méthode déconseillé par php depuis 11ans (22 avril 2002 avec php 4.2.0) ;)

s'il s'agit bien d'une validation de formulaire voici un tuto qui explique comment faire http://www.lephpfacile.com/cours/8-recu ... ormulaires


je te conseil aussi d'utiliser les tag long pour déclarer les passage php => <?php ?> au lieu de <? ?>.
Ainsi qu'utiliser la concaténation plutôt que les doubles quote et les variables noyées au milieu.

Du coup ton code ressemblerait plus à ça
<?php

include('config.php');

$date = date("d-m-Y");

if (empty($_POST['pseudo']) || empty($commentaire)) {
    echo '<span style="font: normal 12px Verdana;">Attention, seul le champ e-mail peut rester vide !</span>';
} else {
    $db = mysqli_connect($host, $login, $pass,$base);

    $query = 'INSERT INTO comment set login=\'' . mysqli_real_escape_string($db,$_POST['pseudo']) . '\',
    email=\'' . mysqli_real_escape_string($db,$_POST['email']) . '\',
    com=\'' . mysqli_real_escape_string($db,$_POST['commentaire']) . '\',
    date=\'now()\'';

// Exécution de la requête et affichage de l'erreur éventuelle
    $insert = mysqli_query($db,$query);
    if ($insert === false) {
        echo 'Erreur SQL : ' . mysqli_error($db) . '<br />Avec la requête : ' . $query;
    }

    mysql_close();
}
echo '<meta http-equiv="Refresh" content="0; URL=comment.php">';

?>
@+

Re: probleme d'insertion dans la dbb

Posté : 26 avr. 2013, 23:43
par msgbrr
J'ai essayer avec le script de moogli
 <?php

include('config.php');

$date = date("d-m-Y");

if (empty($_POST['pseudo']) || empty($commentaire)) { echo '<span style="font: normal 12px Verdana;">Attention, seul le champ e-mail peut rester vide !</span>'; } else { $db = mysqli_connect($host, $login, $pass,$base);

$query = 'INSERT INTO comment set login=\'' . mysqli_real_escape_string($db,$_POST['pseudo']) . '\', email=\'' . mysqli_real_escape_string($db,$_POST['email']) . '\', com=\'' . mysqli_real_escape_string($db,$_POST['commentaire']) . '\', date=\'now()\'';

// Exécution de la requête et affichage de l'erreur éventuelle $insert = mysqli_query($db,$query); if ($insert === false) { echo 'Erreur SQL : ' . mysqli_error($db) . '<br />Avec la requête : ' . $query; }

mysql_close(); } echo '<meta http-equiv="Refresh" content="0; URL=comment.php">';

?> 
Ça ne marche toujours pas, toujours le même problème !

Re: probleme d'insertion dans la dbb

Posté : 27 avr. 2013, 09:16
par ghost5922
Bonjour,

post nous ton formulaire ainsi que le reste du code php qu'on puise comprendre

Re: probleme d'insertion dans la dbb

Posté : 27 avr. 2013, 09:42
par msgbrr
Pas de souci, voici la page comment.php, c'est la page ou l'on voit les commentaires et ou l'on peut les ajouter
.             <? include('config.php'); ?>
<html>
<head>
<title>Commentaire</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="220" border="1" cellpadding="0" cellspacing="1" bordercolordark="#0066FF">
  <!--DWLayoutTable-->
  <tr> 
    <td width="356" height="287" valign="top"><div align="center"> 
        <p><font size="1" face="Verdana, Arial, Helvetica, sans-serif">:: Commentaire ::</font></p>
        <p><font color="#0066FF">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</font> 
          <?
$db = mysql_connect($host,$login,$pass);
mysql_select_db($base,$db);
$req = mysql_query("SELECT * FROM comment");
$res = mysql_numrows($req);

echo "<font face=verdana size=1>Il y a actuellement <b>$res</b> commentaire</font>";

mysql_close();
?>
        </p>
        <p><br>
          <?
		  
$db = mysql_connect($host,$login,$pass);
mysql_select_db($base,$db);
$req = mysql_query("SELECT * FROM comment ORDER BY id DESC");
$res = mysql_numrows($req);

$i=0;
WHILE($res!=$i)
  {
   $pseudo = mysql_result($req,$i,"pseudo");
   $date = mysql_result($req,$i,"date");
   $commentaire = mysql_result($req,$i,"commentaire");
   $mail = mysql_result($req,$i,"mail");
if($mail=='')
{
    print"<p align=left><font face=verdana size=1>Le <b>$date</b> par <b>$pseudo</b><br><br><i>$commentaire</i></font></p>";
}
else
{
    print"<p align=left><font face=verdana size=1>Le <b>$date</b> par <a href=mailto:$mail><b>$pseudo</b></a><br><br><i>$commentaire</i></font></p>";
}
   $i++;
  }
mysql_close();
?>
        </p>
        <p><font color="#0066FF">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</font></p>
        <form method="post" action="add.php">
          <table width="356" border="0" align="center" cellpadding="0" cellspacing="0">
            <!--DWLayoutTable-->
            <tr> 
              <td width="126" height="22" valign="top"><font size="1" face="Verdana"><u>Votre 
                pseudo :</u></font></td>
              <td colspan="2" valign="top"> <input type="text" class=text name="pseudo"> 
              </td>
              <td width="2">&nbsp;</td>
              <td width="19">&nbsp;</td>
            </tr>
            <tr> 
              <td height="23" colspan="2" valign="top"><font size="1" face="Verdana"><u><em>Votre 
                e-mail :</em></u></font></td>
              <td colspan="2" valign="top"> <input type="text" class=text name="mail"> 
              </td>
              <td>&nbsp;</td>
            </tr>
            <tr> 
              <td height="70" colspan="2" valign="top"><font size="1" face="Verdana"><u>Commentaire 
                :</u></font></td>
              <td colspan="2" valign="top"> <textarea name="commentaire" cols="18" rows="3" id="commentaire"></textarea> 
              </td>
              <td>&nbsp;</td>
            </tr>
            <tr> 
              <td height="24" colspan="5" valign="top"> <div align="center"> 
                  <input type="submit" class=bouton name="Submit" value="Ok">
                </div></td>


            </tr>
            <tr> 
              <td height="19">&nbsp;</td>
              <td width="1">&nbsp;</td>
              <td width="208">&nbsp;</td>
              <td>&nbsp;</td>
              <td>&nbsp;</td>
            </tr>
          </table>
        </form>
        </div></td>
  </tr>
</table>
</body>
</html>
Voici ensuite la page add.php qui est censé remplir la table "comment"
<?php

include('config.php');


$date = date("d-m-Y");

if (empty($_POST['pseudo']) || empty($commentaire)) { echo '<span style="font: normal 12px Verdana;">Attention, seul le champ e-mail peut rester vide !</span>'; } else { $db = mysqli_connect($host, $login, $pass,$base);

$query = 'INSERT INTO comment set login=\'' . mysqli_real_escape_string($db,$_POST['pseudo']) . '\', email=\'' . mysqli_real_escape_string($db,$_POST['email']) . '\', com=\'' . mysqli_real_escape_string($db,$_POST['commentaire']) . '\', date=\'now()\'';

// Exécution de la requête et affichage de l'erreur éventuelle $insert = mysqli_query($db,$query); if ($insert === false) { echo 'Erreur SQL : ' . mysqli_error($db) . '<br />Avec la requête : ' . $query; }

mysql_close(); } echo '<meta http-equiv="Refresh" content="0; URL=comment.php">';

?>
Voulez-vous aussi le fichier config.php ?