Erreur de syntaxe Erreur de syntaxe ajout !

Eléphant du PHP | 419 Messages

30 oct. 2005, 18:29

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 !

Mammouth du PHP | 1311 Messages

30 oct. 2005, 18:33

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 oct. 2005, 18:39

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()
Modifié en dernier par Truc le 30 oct. 2005, 19:54, modifié 2 fois.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 1311 Messages

30 oct. 2005, 18:41

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

Eléphant du PHP | 419 Messages

30 oct. 2005, 18:42

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é !

Mammouth du PHP | 1311 Messages

30 oct. 2005, 18:44

fait
echo $insertSQL;
et donne nous ce que ca retourne

Eléphant du PHP | 419 Messages

30 oct. 2005, 18:47

ç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

Eléphant du PHP | 419 Messages

30 oct. 2005, 18:52

J'ai fait un changement dans la base de donner maintenant il m'ajoute les membres mais il m'affiche quand meme l'erreur !

Eléphant du PHP | 419 Messages

30 oct. 2005, 18:53

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 !

Mammouth du PHP | 1311 Messages

30 oct. 2005, 18:55

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
Modifié en dernier par jeff le 30 oct. 2005, 18:56, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 oct. 2005, 18:55

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: )

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 419 Messages

30 oct. 2005, 18:59

ok dans ma abse de donner c'est DATETIME !
Je vais essayer avec DATETIME !

Eléphant du PHP | 419 Messages

30 oct. 2005, 19:01

avec DATETIME sa marche pas !
Je vai prendre ma douche et jessai ta requete !

Eléphant du PHP | 419 Messages

30 oct. 2005, 19:38

ç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 !

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 oct. 2005, 19:53

ç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")

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute