[RESOLU] probleme d'insertion dans la dbb

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] probleme d'insertion dans la dbb

Re: probleme d'insertion dans la dbb

par ghost5922 » 27 avr. 2013, 19:06

Bonjour,

super news peut tu mettre ton sujet en résolus

je vais aussi efface la page demo si le sujet et regle

Re: probleme d'insertion dans la dbb

par msgbrr » 27 avr. 2013, 18:30

Ça marche !
Merci a tout les internautes de phpfrance pour l'aide qu'ils m'ont fournit ! :wink:

Re: probleme d'insertion dans la dbb

par ghost5922 » 27 avr. 2013, 17:25

Bonjour,

voila une DEMO en ligne

mes pages

add.php
<?php
include('config.php');

if (isset($_POST['pseudo']) && !empty($_POST['pseudo']) && isset($_POST['commentaire']) && !empty($_POST['commentaire'])){
        $db = mysql_connect($host,$login,$pass);
		mysql_select_db($base,$db);

        $date = date("d-m-Y");          
        $pseudo=$_POST['pseudo'];
        $commentaire=$_POST['commentaire'];     
        $email=$_POST['mail'];

        $query = "INSERT INTO comment set pseudo='$pseudo',`mail`='$email',commentaire='$commentaire',`date`='$date'";
        $req = mysql_query($query) or die('Erreur SQL !<br>'.$query.'<br>'.mysql_error()); 
        mysql_close();
   
}
else{
        echo '<span style="font: normal 12px Verdana;">Attention, seul le champ e-mail peut rester vide !</span>';      
}


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


?>

comment.php
.             <? 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>
 
config.php
<?php

$host='localhost';
$login='test';
$pass='test';
$base='test';

?>

Re: probleme d'insertion dans la dbb

par ghost5922 » 27 avr. 2013, 16:55

Bonjour,

faut modifier le fichier add.php par mon code et non commentaire.php

pour l'erreur

peux tu donne ta table comment stp

edit : je viens de voir que ton champ se nome pseudo et non login
<?php
include(config.php);

if (isset($_POST['pseudo']) && !empty($_POST['pseudo']) && isset($_POST['commentaire']) && !empty($_POST['commentaire'])){
        $db = mysql_connect($host,$login,$pass);
		mysql_select_db($base,$db);

        $date = date("d-m-Y");          
        $pseudo=$_POST['pseudo'];
        $commentaire=$_POST['commentaire'];     
        $email=$_POST['mail'];

        $query = "INSERT INTO comment set pseudo='$pseudo',`mail`='$email',commentaire='$commentaire',`date`='$date'";
        $req = mysql_query($query) or die('Erreur SQL !<br>'.$query.'<br>'.mysql_error()); 
        mysql_close();
   
}
else{
        echo '<span style="font: normal 12px Verdana;">Attention, seul le champ e-mail peut rester vide !</span>';      
}


//echo '<meta http-equiv="Refresh" content="0; URL=comment.php">';


?>
je viens de faire un test avec une table : comment (id,pseudo,mail,commentaire,date) l'insert marche nikel

Re: probleme d'insertion dans la dbb

par msgbrr » 27 avr. 2013, 14:35

Bonjour, j'ai remplacer la page comment.php par le code de ghost5922 ça affiche un message d'erreur

Code : Tout sélectionner

Parse error: syntax error, unexpected '}' in /membri/thetutorielsfr/comment/comment.php on line 17

Re: probleme d'insertion dans la dbb

par ghost5922 » 27 avr. 2013, 09:52

Bonjour,

Il a déjà quelque erreur tu demandes que $_POST['pseudo'] ou $commentaire ne sois pas vide alors que tu veux aucun des deux vide donc on mets des && et $commentaire n'ai pas encore pressent donc $_POST['commentaire']

en suite tu veux récupéré $_POST['email'] alors que ton formulaire se nome mail donc $_POST['mail'];
if (empty($_POST['pseudo']) || empty($commentaire)) { 

j'ai modifie un peu ton code essaie si cela marche reprotege les champs et vire mon commentaire pour le refrech

dans la page commentaire tu sélectionne le champ commentaire et la tu insert dans com et email mail
<?php

include('config.php');

// on verifie que la variable esiste et ne sois pas vide
if (isset($_POST['pseudo']) && !empty($_POST['pseudo']) && isset($_POST['commentaire']) && !empty($_POST['commentaire'])) {
	$db = mysql_connect($host,$login,$pass);
mysql_select_db($base,$db);
	

        $date = date("d-m-Y");		
	$pseudo=$_POST['pseudo'];
	$commentaire=$_POST['commentaire'];	
       $email=$_POST['mail'];

	$query = "INSERT INTO comment set login='$pseudo',`mail`='$email',commentaire='$commentaire',`date`='$date'";
	$req = mysql_query($query) or die('Erreur SQL !<br>'.$query.'<br>'.mysql_error()); 
	
	
	//$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();
	
	
}
else{
	echo '<span style="font: normal 12px Verdana;">Attention, seul le champ e-mail peut rester vide !</span>'; 	
}


//echo '<meta http-equiv="Refresh" content="0; URL=comment.php">';

?>
 

 

Re: probleme d'insertion dans la dbb

par msgbrr » 27 avr. 2013, 09:42

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 ?

Re: probleme d'insertion dans la dbb

par ghost5922 » 27 avr. 2013, 09:16

Bonjour,

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

Re: probleme d'insertion dans la dbb

par msgbrr » 26 avr. 2013, 23:43

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

par moogli » 26 avr. 2013, 23:31

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

par msgbrr » 26 avr. 2013, 22:13

Ç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

par moogli » 26 avr. 2013, 21:52

salut,


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

@+

Re: probleme d'insertion dans la dbb

par msgbrr » 26 avr. 2013, 21:28

Désolé mais je ne comprends pas pouvez vous m'expliquez !

Re: probleme d'insertion dans la dbb

par ghost5922 » 26 avr. 2013, 21:14

Bonjour

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

Re: probleme d'insertion dans la dbb

par msgbrr » 26 avr. 2013, 20:41

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 !