inserer une date

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 : inserer une date

Re: inserer une date

par Rémi1995 » 25 janv. 2012, 11:31

merci sa marche

Re: inserer une date

par xTG » 25 janv. 2012, 10:33

$sql= 'INSERT INTO maTable(colonne2, colonne3, colonne4) VALUES '. $_POST['login'] .',' . $_POST['pass_md5'] . ', 'NOW()';
Et colonne2, colonne3 et colonne4 sont à remplacer par le nom de tes champs dans la table...

Re: inserer une date

par Rémi1995 » 25 janv. 2012, 10:30

j'ai fait comme on m'a dis mais ça m'affiche
Parse error: syntax error, unexpected ',' in C:\Program Files\EasyPHP-5.3.8.1\www\Espace_Membre\d.php on line 9
voici le code
<?php
          $_SESSION['login'] = $_POST['login'];
          ?>
		 <?php
if( !empty($_POST) ){ // le formulaire n'est pas vide
  
                        $base = mysql_connect ('localhost', 'root', '');
                       mysql_select_db ('espace_membre', $base);
					   $sql= 'INSERT INTO maTable(colonne2, colonne3, colonne4) VALUES '. $_POST['login'] ., . $_POST['pass_md5'] . , 'NOW()';
                           mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
                      
}
    ?>

Re: inserer une date

par Ryle » 24 janv. 2012, 22:26

Ton erreur est maintenant au niveau du SQL. Tu tentes d'insérer 3 valeurs dans ta table membre (login, mdp et date), mais apparemment, ta table contient plus (ou moins) de trois champs et il ne sait donc pas quoi insérer où.

Pour ton insert, il faut soit :
- insérer une valeur pour chacun des champs de ta table (même si tu mets à null ceux qui n'ont pas de valeur), dans l'ordre de tes colonnes.
INSERT INTO ta_table VALUES ('val1', 'val2', null, 'val3', ...);
- spécifier dans ta requête les colonnes qui sont concernée (et l'ordre dans lequel elles sont concernées :
INSERT INTO ta_table (colonneX, colonneY) VALUES (val3, val2);

Re: inserer une date

par xTG » 24 janv. 2012, 22:25

Ta table membre possède plus ou moins que 3 colonnes.
Si tes autres colonnes sont facultatives dans ce cas il faut tout de même préciser les colonnes que tu impliques dans ta requête :
INSERT into maTable(colonne1, colonne5, colonne6) VALUES ('val1', 'val5', 'val6')

Re: inserer une date

par Rémi1995 » 24 janv. 2012, 21:11

merci pour le cour mais maintenant il m'affiche
Erreur SQL ! INSERT INTO membre VALUES('Rémi1995', md5('bo81re'), NOW())
Column count doesn't match value count at row 1
voici le code
<?php
          $_SESSION['login'] = $_POST['login'];
          ?>
		 <?php
if( !empty($_POST) ){ // le formulaire n'est pas vide
  
                        $base = mysql_connect ('localhost', 'root', '');
                       mysql_select_db ('espace_membre', $base);
                          $sql = " INSERT INTO membre VALUES('" . $_POST['login'] . "', md5('" . $_POST['pass_md5'] . "'), NOW()) ";
                           mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
                      
}
    ?>
si vous pouvez m'aider encore sa serai sympa

Re: inserer une date

par Ryle » 24 janv. 2012, 20:41

Bon... on va reprendre le cours sur les chaines et la concaténation :)

Ta requête SQL, c'est une chaine de caractères que tu envois à MySQL pour qu'il puisse l'exécuter (et si la syntaxe est correcte, ça peut même avoir des effets sympa ;))

Ton objectif, est donc de construire la chaine que tu vas transmettre à MySQL. Pour cela, tu saisir directement une chaine de caractère. Ou éventuellement deux chaines de caractères que tu vas concaténer avec l'opérateur " . " (point). Ou encore un chaine que tu vas concaténer avec une variable ... bref, plein de combinaisons possibles. Cependant une variable, c'est une variable, et une chaine, c'est une chaine. Si tu délimites ta chaines n'importe comment, php sera incapable de savoir où elle commence, où elle s'arrête, ou comment il doit l'interpréter.

Donc commençons par la requête que tu veux exécuter :
INSERT INTO membre VALUES('monLogin', md5('monMotDePasse'), NOW())
On va la transformer en chaine php, pour ça, c'est simple, on colle des guillemets ou des apostrophes autour.
// avec des guillemets
$sql = " INSERT INTO membre VALUES('monLogin', md5('monMotDePasse'), NOW()) ";
// avec des apostrophes (attention, comme notre chaine contient déjà des apostrophes, il faut les protéger : \' )
$sql = ' INSERT INTO membre VALUES(\'monLogin\', md5(\'monMotDePasse\'), NOW()) ';
On va rester sur la version avec guillemets qui est plus facilement lisible et on va diviser la chaine en plusieurs sous chaines que l'on concatène pour obtenir le même résultat :
$sql = " INSERT INTO membre VALUES('" . "monLogin" . "', md5('" . "monMotDePasse" . "'), NOW()) ";
Maintenant il ne nous reste plus qu'à remplacer les chaines que l'on veut par des variables qui contiendront les valeurs que l'on attend :
$sql = " INSERT INTO membre VALUES('" . $_POST['login'] . "', md5('" . $_POST['pass_md5'] . "'), NOW()) ";

Re: inserer une date

par Rémi1995 » 24 janv. 2012, 17:39

j'ai fais comme ça m'affiche
Parse error: syntax error, unexpected T_VARIABLE in F:\PortableZMWS\ZMWS\_web.zmwsc\Espace_Membre\dd.php on line 7
si vous pouvez encore m'aider sa serai sympa
<?php
          $_SESSION['login'] = $_POST['login'];
          ?>
		 <?php
                        $base = mysql_connect ('localhost', 'root', '');
                            mysql_select_db ('espace_membre', $base);
							$sql = "INSERT INTO membre VALUES("$_POST['login'],md5($_POST['pass_md5'])", NOW())";
							mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
  ?>
<head>
         <title>créer un dossier de groupe</title>
         </head>
         Inscription à l'espace membre :<br />
 <form action="inscription.php" method="post">
 Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
 Mot de passe : <input type="password" name="pass_md5" value="<?php if (isset($_POST['pass_md5'])) echo htmlentities(trim($_POST['pass_md5'])); ?>"><br />
 Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
 <input type="submit" name="inscription" value="Inscription">

Re: inserer une date

par Ryle » 23 janv. 2012, 20:47

Si tu prends l'habitude de fermer les parenthèse et les accolades au moment où tu les ouvres, tu éviteras bien des erreurs :)
$pass =mysql_escape_string(md5($_POST['pass_md5']);
                          (   (                  )

Re: inserer une date

par Rémi1995 » 23 janv. 2012, 20:10

<?php
          $_SESSION['login'] = $_POST['login'];
          ?>
		 <?php
if( !empty($_POST) ){ // le formulaire n'est pas vide
  
                        $base = mysql_connect ('localhost', 'root', '');
                            mysql_select_db ('espace_membre', $base);
                           $login_entre =mysql_escape_string($_POST['login']); 
$sql = "INSERT INTO membre(login,date) VALUES("mysql_escape_string($_POST['login']),mysql_escape_string(md5($_POST['pass']))" NOW())";
                           mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
                      
}
    ?>
     <head>
         <title>créer un dossier de groupe</title>
         </head>
         Inscription à l'espace membre :<br />
 <form action="d.php" method="post">
 Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
 Mot de passe : <input type="password" name="pass_md5" value="<?php if (isset($_POST['pass_md5'])) echo htmlentities(trim($_POST['pass_md5'])); ?>"><br />
 Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
 <input type="submit" name="inscription" value="Inscription">
  
j'ai fais comme ça sauf que sa n'a rien changé

Re: inserer une date

par xTG » 23 janv. 2012, 19:51

Ton code d'insertion n'est pas soumis à condition.
Donc il est exécuté même si ton formulaire n'est pas posté.

Il faut ajouter une condition :
<?php
if( !empty($_POST) ){ // le formulaire n'est pas vide
  // on fait notre insertion
}

Re: inserer une date

par Rémi1995 » 23 janv. 2012, 19:09

     <?php
          $_SESSION['login'] = $_POST['login'];
          ?>
         <?php
                        $base = mysql_connect ('localhost', 'root', '');
                            mysql_select_db ('espace_membre', $base);
                            $login_entre =mysql_escape_string($_POST['login']); 
                            $pass =mysql_escape_string(md5($_POST['pass_md5']);
$sql = "INSERT INTO membre(login,date_inscription,pass_md5) VALUES('$login_entre','$pass', NOW())";
                           mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
                          ?>
         <head>
         <title>créer un dossier de groupe</title>
         </head>
         Inscription à l'espace membre :<br />
 <form action="d.php" method="post">
 Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
 Mot de passe : <input type="password" name="pass_md5" value="<?php if (isset($_POST['pass_md5'])) echo htmlentities(trim($_POST['pass_md5'])); ?>"><br />
 Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
 <input type="submit" name="inscription" value="Inscription">
  
je l'est fais mais ça ne marche pas

Re: inserer une date

par xTG » 23 janv. 2012, 17:47

Il manque un point virgule à la fin de la ligne définissant $pass.

Re: inserer une date

par Rémi1995 » 23 janv. 2012, 17:16

bonjour j'ai encore un petit soucis easyPHP m'affiche
Parse error: syntax error, unexpected T_VARIABLE in C:\Program Files\EasyPHP-5.3.8.1\www\Espace_Membre\dd.php on line 9
alors si vous pouvez m'aider ça serai sympa (oui je suis un débutant et j''ai vraiment du mal a faire des choses nouvelles :oops:
voici le code
	 <?php
	 $_SESSION['login'] = $_POST['login'];
	 ?>
	<?php
			 $base = mysql_connect ('localhost', 'root', '');
							  mysql_select_db ('espace_membre', $base);
							  $login_entre =mysql_escape_string($_POST['login']); 
							  $pass =mysql_escape_string(md5($_POST['pass_md5'])
$sql = "INSERT INTO membre(login,date_inscription,pass_md5) VALUES('$login_entre','$pass', NOW())";
			  mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
			 ?>
	<head>
	<title>créer un dossier de groupe</title>
	</head>
	Inscription à l'espace membre :<br />
<form action="d.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass_md5" value="<?php if (isset($_POST['pass_md5'])) echo htmlentities(trim($_POST['pass_md5'])); ?>"><br />
Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
<input type="submit" name="inscription" value="Inscription">
	 <?php
	 $_SESSION['login'] = $_POST['login'];
	 ?>
	<?php
			 $base = mysql_connect ('localhost', 'root', '');
							  mysql_select_db ('espace_membre', $base);
							  $login_entre =mysql_escape_string($_POST['login']); 
							  $pass =mysql_escape_string(md5($_POST['pass_md5'])
$sql = "INSERT INTO membre(login,date_inscription,pass_md5) VALUES('$login_entre','$pass', NOW())";
			  mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
			 ?>
	<head>
	<title>créer un dossier de groupe</title>
	</head>
	Inscription à l'espace membre :<br />
<form action="d.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass_md5" value="<?php if (isset($_POST['pass_md5'])) echo htmlentities(trim($_POST['pass_md5'])); ?>"><br />
Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
<input type="submit" name="inscription" value="Inscription">

Re: inserer une date

par sirakawa » 23 janv. 2012, 09:40

En scindant la syntaxe, on y gagnerait sans doute:
 $sql = "INSERT INTO membre(login,date) VALUES("mysql_escape_string.($_POST['login']" NOW())"
deviendrait:
$login_entre =mysql_escape_string($_POST['login']); 
$sql = "INSERT INTO membre(login,date) VALUES('$login_entre', NOW())";