[RESOLU] erreur syntaxe SQL help me !!

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] erreur syntaxe SQL help me !!

Re: erreur syntaxe SQL help me !!

par AB » 14 janv. 2013, 20:18

Avec php 5.3 tu peux utiliser date_create_from_format pour formater $datepicker

Re: erreur syntaxe SQL help me !!

par poit94 » 14 janv. 2013, 15:37

Une chaîne de caractère doit être entre simple quote dans une requête.
Mais un nombre ne doit pas être encadré par des quotes.
Sinon il tente de mettre une chaîne de caractère dans un entier (par exemple) et y stocke 0.

Pour la date même topo, il faut que le format de ta date soit compréhensible par ton sgbd.
Le format courant est : AAAA-MM-DD

donc par exemple
 $requete = "INSERT INTO statut_tbl(id_raison,explication,id_client,datetime)
            VALUES('$id_raison','$explication','$id_client','$#datepicker');";
devra etre
 $requete = "INSERT INTO statut_tbl(id_raison,explication,id_client,datetime)
            VALUES($id_raison','$explication',$id_client,'$#datepicker');";

et mon javascript datepicker me crée un calendrier mais les dates son en francais comment faire pour la modifier et faire en sorte que ma sgbd la comprenne ?

Re: erreur syntaxe SQL help me !!

par xTG » 14 janv. 2013, 14:50

Une chaîne de caractère doit être entre simple quote dans une requête.
Mais un nombre ne doit pas être encadré par des quotes.
Sinon il tente de mettre une chaîne de caractère dans un entier (par exemple) et y stocke 0.

Pour la date même topo, il faut que le format de ta date soit compréhensible par ton sgbd.
Le format courant est : AAAA-MM-DD

Re: erreur syntaxe SQL help me !!

par poit94 » 14 janv. 2013, 11:24

merci beaucoup pour toute l'aide que vous m'apportez cependant

je n'est plus aucun code erreur de syntaxe ou autre il m'indique que l'insertion ses correctement effectuer mais quand je regarde sur phpmyadmin je n'est que lee commentaire qui s'affiche , je n'est ni mon code client ni mon code raison jai juste des 0 qui s'affiche pareille pour les dates je n'est que des 00-00-0000 =(

Re: erreur syntaxe SQL help me !!

par moogli » 05 janv. 2013, 12:23

Le champs datetile n'existe pas dans le formulaire .......


Je te conseil de revoir des toto sur la validation de formulaire en php, par exemple sur http://phpdebutant.org.

Il faut toujours vérifier l'existance d'une index sur des tableaux fournis par l'utilisateur (get, post, cookie....) car tu ne sera jamais certain que le formulaire sera complet !
Pour cela utilisé les fonctions isset ou empty suivant ton besoin.


Dernie chose, il ne faut jamais utiliser directement les valeurs fournies par l'utilisateur dans une requête sql car cela cré une faille (sql donc :)).

Afin de protéger tes requêtes tu peux utiliser mysql_real_escape_string sur les données.
De plus l'extension mysql est dépréciée il est préférable de lui préférer l'extension mysqli ou même l'extension PDO.

@+

Re: erreur syntaxe SQL help me !!

par poit94 » 04 janv. 2013, 15:32

Notice: Undefined index: datetime in C:\wamp\www\tests\insertion2.php on line 59
Call Stack
# Time Memory Function Location
1 0.0014 148064 {main}( ) ..\insertion2.php:0


je me retrouve avec le problème de la date maintenant =s
plus j'avance plus le nombre d'erreur suive aussi

l'erreur ce situe ici

<?php
 
 
 //récupération des valeurs des champs:
  $id_raison = $_POST["id_raison"]  ;
  $explication = $_POST["explication"] ;
  $id_client = $_POST["id_client"];
  $datepicker = $_POST["datetime"] ;
  $requete = $_POST["insertion"] ;
 
 
  



  //création de la requête SQL:
  $requete = "INSERT INTO statut_tbl(id_raison,explication,id_client,datetime)
            VALUES('$id_raison','$explication','$id_client','$datepicker');";
 
  //exécution de la requête SQL:
  $requete = mysql_query($requete, $link) or die( mysql_error() ) ;
 
  //affichage des résultats, pour savoir si l'insertion a marchée:
  if($requete)
  {
    echo("L'insertion a ete correctement effectuee") ;
  }
  else
  {
    echo("L'insertion à échouée") ;
  }
?>
pour xTG

merci je ne l'avais meme pas vu erreur de concentration lol

Re: erreur syntaxe SQL help me !!

par xTG » 04 janv. 2013, 15:24

`id_raison` int(11) NOT NULL,
Le champ a donc été mal orthographié, c'est id_raison et non raison qu'il faut mettre dans ta requête. ;)

Re: erreur syntaxe SQL help me !!

par poit94 » 04 janv. 2013, 15:08

-- phpMyAdmin SQL Dump
-- version 3.5.1
-- http://www.phpmyadmin.net
--
-- Client: localhost
-- Généré le: Ven 04 Janvier 2013 à 13:10
-- Version du serveur: 5.5.24-log
-- Version de PHP: 5.4.3

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT=0;
START TRANSACTION;
SET time_zone = "+00:00";

--
-- Base de données: `test`
--

-- --------------------------------------------------------

--
-- Structure de la table `statut_tbl`
--
-- Création: Jeu 29 Novembre 2012 à 13:13
--

CREATE TABLE IF NOT EXISTS `statut_tbl` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_raison` int(11) NOT NULL,
  `explication` varchar(200) COLLATE latin7_general_cs NOT NULL,
  `id_client` int(11) NOT NULL,
  `datetime` datetime NOT NULL,
  `completed` smallint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin7 COLLATE=latin7_general_cs AUTO_INCREMENT=14 ;

--
-- Contenu de la table `statut_tbl`
--

INSERT INTO `statut_tbl` (`id`, `id_raison`, `explication`, `id_client`, `datetime`, `completed`) VALUES
(3, 6, '', 1, '2012-12-20 00:00:00', 1),
(4, 6, 'RIEN', 1, '2012-12-05 00:00:00', 1),
(5, 6, 'empechement..', 1, '2012-12-18 00:00:00', 1),
(6, 5, 'veut savoir a quel heure es son rdv', 2, '2012-12-25 00:00:00', 1),
(7, 1, 'immobilisé pour cause de neige', 5, '2012-12-20 00:00:00', 1),
(8, 5, 'EXEMPLE 3', 3, '2012-12-28 00:00:00', 1),
(9, 3, 'EXEMPLE 4', 4, '2012-12-29 00:00:00', 1),
(10, 2, 'EXEMPLE ', 6, '2012-12-30 00:00:00', 1),
(11, 7, 'EXEMPLE', 7, '2012-12-08 00:00:00', 1);
COMMIT;
voila ce que sa donne =s

Re: erreur syntaxe SQL help me !!

par xTG » 04 janv. 2013, 13:52

bah les tables (3) je les cree directement a partir de phpmy admins =s
Tu peux avoir le CREATE TABLE avec la fonction exporter.

Re: erreur syntaxe SQL help me !!

par poit94 » 04 janv. 2013, 13:21

bah les tables (3) je les cree directement a partir de phpmy admins =s

Re: erreur syntaxe SQL help me !!

par moogli » 04 janv. 2013, 12:49

si tu nous montre le ddl (create table si tu préfère) de la table statut_tbl on y verra plus clair ;)


@+

Re: erreur syntaxe SQL help me !!

par xTG » 04 janv. 2013, 12:31

Tu n'as à priori pas de champs de ce nom dans ta table.
Vérifies l'orthographe ou bien l'emplacement de ce champs dans ta base de données (quelle table).

Re: erreur syntaxe SQL help me !!

par poit94 » 04 janv. 2013, 12:02

pour xTG

je ne comprend pas vraiment vu que je suis pas en train de vouloir inserer une seule infomation il y en a plusieurs quand je clic sur tel cabinet pour tel raison pour tel dates mais maintenant il me dit

Unknown column 'raison' in 'field list'

je désespère surtout quand ses vraiment sur la fin =(

pour Mooglie

bah plus sa va plus je me perd personnelement lol , je sais plus quoi faire ....
<?php

// DEBUG = 1 => on affiche les informations de debug
// DEBUG = 0 => on n'affiche pas les informations de debug
define('DEBUG',1);

echo "debug: ";
echo DEBUG;

//
// usage: sert à vérifier l'état d'une resource ( query sql, lien vers la db ... )
// 10/12/2012 
// 
function debug_request($resource,$type){

	if(DEBUG == 1){
		if($resource){
			echo $type.": ok";
		}
	}
}

// usage: connection à la base de données mysql
function openConnect(){
	$host	= 'localhost'; 
	$login 	= 'root'; 
	$pass 	= ''; 
	$dbname = "test";

	$link = mysql_connect($host, $login, $pass);
	
	if (!$link) {
		die('Could not connect: ' . mysql_error());
	}
	debug_request($link,"sql link");
	
	return $link;
}

function closeConnect($link){
	mysql_close($link);
}
$link = openConnect();
mysql_select_db('test',$link) or die('erreur selection db');

	
?>








<FORM Method="POST"
Action= "insertion2.php">
<P><INPUT Type="hidden" Name="insertion" Value="">

<P>raisons ?


annulation de rendez-vous <input type="radio" name="raison" checked value='annulation_de_rendez-vous' >
		rendez-vous <input type="radio" name="raison" value="rendez-vous" >
		autre service <input type="radio" name="raison" value='autre_service' >
		precision de rendez-vous <input type="radio" name="raison" checked value='precision_de_rendez-vous' >
		demarchage commerciale <input type="radio" name="raison" checked value='demarchage_commerciale' >
		renseignement medicaux <input type="radio" name="raison" checked value='reseignement_medicaux ' >
		medecin voulant parler au radiologue <input type="radio" name="raison" checked value='medecin_voulant_parler_au_radiologue' >
		

		
<P>de quel medecin s'agit t'il ?
<P><SELECT Name="choix" size="3" multiple>

<option value="new_2.php">cabinet1</option>
    <option value="cabinet_2.php">cabinet2</option>
    <option value="cabinet_3.php">cabinet3</option>
	<option value="cabinet_4.php">cabinet4</option>
	<option value="cabinet_5.php">cabinet5</option>
	<option value="cabinet_6.php">cabinet6</option>
	<option value="cabinet_7.php">cabinet7</option>
	<option value="affichage_complet_medecin.php">cabinet ALL</option>
	

	
</SELECT>

<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>jQuery UI Datepicker - Default functionality</title>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
    <script src="http://code.jquery.com/jquery-1.8.3.js"></script>
    <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
    <link rel="stylesheet" href="/resources/demos/style.css" />
    <script>
    $(function() {
        $( "#datepicker" ).datepicker();
    });
    </script>
</head>
<body>
 
<p>Date: <input type="text" id="datepicker" name= "time" /></p>
 
 
</body>
</html>

<P>commentaire? (facultatif)<BR>
<TEXTAREA Name="comments" rows="4" cols="20"></TEXTAREA>
<P><INPUT Type="submit" Value="inscrire">
<input type="button" value="page précédente" onclick="javascript:history.back()">
</FORM> 

<?php

// DEBUG = 1 => on affiche les informations de debug
// DEBUG = 0 => on n'affiche pas les informations de debug
define('DEBUG',1);

echo "debug: ";
echo DEBUG;

//
// usage: sert à vérifier l'état d'une resource ( query sql, lien vers la db ... )
// 10/12/2012 
// 
function debug_request($resource,$type){

	if(DEBUG == 1){
		if($resource){
			echo $type.": ok";
		}
	}
}

// usage: connection à la base de données mysql
function openConnect(){
	$host	= 'localhost'; 
	$login 	= 'root'; 
	$pass 	= ''; 
	$dbname = "test";

	$link = mysql_connect($host, $login, $pass);
	
	if (!$link) {
		die('Could not connect: ' . mysql_error());
	}
	debug_request($link,"sql link");
	
	return $link;
}

function closeConnect($link){
	mysql_close($link);
}
$link = openConnect();
mysql_select_db('test',$link) or die('erreur selection db');

	
?>



<?php
 
 
 //récupération des valeurs des champs:
  $id_raison = $_POST["raison"]  ;
  $explication = $_POST["comments"] ;
  $id_client = $_POST["choix"] ;
  $datetime = $_POST["time"];
 
 
 
  
 if (isset($_POST["id_client"]))

 
{
          // Instructions si $_POST['id_client'] existe
}


  //création de la requête SQL:
  $sql = "INSERT INTO statut_tbl(raison,comments,choix,time)
            VALUES('$id_raison','$explication','$id_client','$datetime');";
 
  //exécution de la requête SQL:
  $requete = mysql_query($sql, $link) or die( mysql_error() ) ;
 
  //affichage des résultats, pour savoir si l'insertion a marchée:
  if($requete)
  {
    echo("L'insertion a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion à échouée") ;
  }
?>

Re: erreur syntaxe SQL help me !!

par moogli » 04 janv. 2013, 11:54

Cela veut dire que je dois mettre ses "back quote" entre ma requete insert ?

non c'est une utilisation, pour moi, a proscrire car cela indique que tu ne sais pas nommer un champ (par exemple utiliser datenaissance, ou dtdebutcontrat que simplement date qui est un mot clef réservé, même chose pour les noms de tables).
Il est toujours intéressant d’avoir des noms de champs explicite et donc bien nommé (on peux aussi éviter les abréviations foireuses comprises que par les seuls initiés ... ;) ).

et comme déja dit ton nom de table (statut_tbl) n'est pas un clef SQL donc aucun intérêt ;)

@+

Re: erreur syntaxe SQL help me !!

par xTG » 04 janv. 2013, 11:28

Exemple :
SELECT `unChamps` FROM `uneTable` WHERE `unAutreChamps` = 'une chaîne de caractères';