Page 1 sur 2

Erreur de syntaxe Erreur de syntaxe ajout !

Posté : 30 oct. 2005, 18:29
par the_grinch
Bonjour,
Alors voila j'ai fait un formulaire d'inscription avec dreamweaver MX !
Quand je remplis les champs et quand je clique sur le bouton, il me met cette erreur apres :

Erreur de syntaxe près de '16:27:18, 'lhkljh', NULL, 'jklhjklh', 'jkhlkh')' à la ligne 1 !
Soit voici le code :
<?php require_once('Connections/astuce.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {

  $time = date("Y/m/d H:i:s"); 
  
  $insertSQL = sprintf("INSERT INTO membre (id, login, pass, temps, mail, astuces, nom, age) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['id'], "int"),
                       GetSQLValueString($_POST['login'], "text"),
                       GetSQLValueString($_POST['pass'], "text"),
					   GetSQLValueString($time, "temps"),
                       GetSQLValueString($_POST['mail'], "text"),
                       GetSQLValueString($_POST['astuces'], "text"),
                       GetSQLValueString($_POST['nom'], "text"),
                       GetSQLValueString($_POST['age'], "text"));

  mysql_select_db($database_astuce, $astuce);
  $Result1 = mysql_query($insertSQL, $astuce) or die(mysql_error());

  $insertGoTo = "index.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_astuce, $astuce);
$query_inscription = "SELECT * FROM membre";
$inscription = mysql_query($query_inscription, $astuce) or die(mysql_error());
$row_inscription = mysql_fetch_assoc($inscription);
$totalRows_inscription = mysql_num_rows($inscription);
?>
Qu'est ce qu'il ne va pas ?
Merci !

Posté : 30 oct. 2005, 18:33
par jeff
a mon avis lit des tutos oublis la fonction creation de dream met toi en mode edition
sinon on dirait qu'il manque une ' apres le temps

Posté : 30 oct. 2005, 18:39
par Truc
je vais te donner un conseil que tu devra TOUJOURS suivre:

Découper l'exécution des requetes !!!
et d'afficher celles-ci avec un simple echo pour verifier la construction !!!
$sql="INSERT INTO membre (id, login, pass, temps, mail, astuces, nom, age) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['id'], "int"),
                       GetSQLValueString($_POST['login'], "text"),
                       GetSQLValueString($_POST['pass'], "text"),
                       GetSQLValueString($time, "temps"),
                       GetSQLValueString($_POST['mail'], "text"),
                       GetSQLValueString($_POST['astuces'], "text"),
                       GetSQLValueString($_POST['nom'], "text"),
                       GetSQLValueString($_POST['age'], "text");

$insertSQL = sprintf($sql);
echo $insertSQL;
 
sinon je ne comprend pas pourquoi tu met un %s pour l'id alors que c'est un type INT, %d serai beaucoup mieux, as tu été voir la doc pour sprintf()

Posté : 30 oct. 2005, 18:41
par jeff
sinon je ne comprend pas pourquoi tu met un %s pour l'id alor
la reponse est c'est c'est dreamweaver qui a fait le code

Posté : 30 oct. 2005, 18:42
par the_grinch
Comme je l'ai dit je l'ai fait avec dreamweaver MX !
avec l'assistant d'ajout d'un formulaire !
Il me le fait automatiquement !
Sinon oui je vais essayer ce que tu ma donné !

Posté : 30 oct. 2005, 18:44
par jeff
fait
echo $insertSQL;
et donne nous ce que ca retourne

Posté : 30 oct. 2005, 18:47
par the_grinch
ça retourne :

INSERT INTO membre (id, login, pass, temps, mail, astuces, nom, age) VALUES (NULL, 'sdfg', 'sdfgfgj', 2005/10/30 16:47:08, 'rsgdfv', NULL, 'ghfjgh', 'fhfh')Erreur de syntaxe près de '16:47:08, 'rsgdfv', NULL, 'ghfjgh', 'fhfh')' à la ligne 1

Posté : 30 oct. 2005, 18:52
par the_grinch
J'ai fait un changement dans la base de donner maintenant il m'ajoute les membres mais il m'affiche quand meme l'erreur !

Posté : 30 oct. 2005, 18:53
par the_grinch
INSERT INTO membre (id, login, pass, date, mail, astuces, nom, age) VALUES (NULL, 'ghdfh', 'fghdfg', '2005/10/30 16:52:52', 'hdf', NULL, 'ghdfgh', 'dfghdfgh')
Warning: Cannot modify header information - headers already sent by (output started at f:\program files\easyphp1-8\www\index.php:5) in f:\program files\easyphp1-8\www\inscription.php on line 54

+ LE FORMULAIRE !

Posté : 30 oct. 2005, 18:55
par jeff
reecrit la requete
avec
$sql='INSERT INTO membre ( login, pass, temps, mail, astuces, nom, age) VALUES ( "'.$_post['login'].'", "'.$_post['pass'].'","'.$time.'","'.$_post['mail'].'", NULL, "'.$_post['nom'].'", "'.$_post['age'].'")';
si la date doit correspondre au moment de l'enregistrement je te conseil de le faire avec sql directement

Posté : 30 oct. 2005, 18:55
par Truc
le probleme vient de la:
GetSQLValueString($time, "temps"), 
le champ est considèré comme un type "temps" :shock: je ne connais pas le format qui va avec une date tu peut toujours remplacer "temps" par "text" (ca a l'air de marcher).. Mais il est quand meme bien fort ce ""dreamweaver""

sinon rien ne t'empeche de faire des requetes comme tu l'a fait dans les autres post (dans l'espace membre, par exmple :wink: )

Posté : 30 oct. 2005, 18:59
par the_grinch
ok dans ma abse de donner c'est DATETIME !
Je vais essayer avec DATETIME !

Posté : 30 oct. 2005, 19:01
par the_grinch
avec DATETIME sa marche pas !
Je vai prendre ma douche et jessai ta requete !

Posté : 30 oct. 2005, 19:38
par the_grinch
ça m'enerve ça marche pas !
Y a rien qui amrche j'ai essayer 50 scripts que j'ai trouver sur internet et rien ça marche toujours pas !

Posté : 30 oct. 2005, 19:53
par Truc
ça m'enerve ça marche pas !
Y a rien qui amrche j'ai essayer 50 scripts que j'ai trouver sur internet et rien ça marche toujours pas !
c'est clair d'ou l'interet de faire ses scripts soie-meme :wink:

je viens de voir que dream a fait une jolie fonction avec un switch ou tu retrouve une condition "date", alors pourquoi est-ce que tu te retrouve avec un type "temps" qui n'est meme pas proposé dans le switch, remplace par:
GetSQLValueString($time, "date")