erreur "unexpected T_CONSTANT_ENCAPSED_STRING"

Répondre
lordgodgiven
le 03/10/2011 à 13:06
lordgodgiven
Bonjour,

je ne cesse de recevoir cette erreur "unexpected T_CONSTANT_ENCAPSED_STRING", je me demande bien où est cette erreur car j'ai cherché mais sans succès.

merci


<?php
//On fais une inclusion des parametres de connexion à la base de données
include ('config/connectDB.php');

// on teste si l'opérateur a soumis le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {

// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
if ((isset($_POST['NomOperateur']) && !empty($_POST['NomOperateur']))
&& (isset($_POST['PrenomOperateur']) && !empty($_POST['PrenomOperateur']))
&& (isset($_POST['SexeOperateur']) && !empty($_POST['SexeOperateur']))
&& (isset($_POST['TelOperateur']) && !empty($_POST['TelOperateur']))
&& (isset($_POST['AdresseOperateur']) && !empty($_POST['AdresseOperateur']))
&& (isset($_POST['LoginOperateur']) && !empty($_POST['LoginOperateur']))
&& (isset($_POST['PasseOperateur']) && !empty($_POST['PasseOperateur']))
&& (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {

// on teste les deux mots de passe
if ($_POST['PasseOperateur'] != $_POST['pass_confirm']) {

//on inclus la page d'erreur les mots de passes sont différents
include ('erreurs/page_erreur_motpasse.php');

} else {
// on recherche si ce login est déjà utilisé par un autre operateur
$sql = 'SELECT count(*) FROM operateursaisie WHERE LoginOperateur="' . mysql_escape_string($_POST['LoginOperateur']) . '"';
$req = mysql_query($sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysql_error());
$data = mysql_fetch_array($req);
if ($data[0] == 0) {
$sql = 'INSERT INTO operateursaisie VALUES('',
"' . mysql_real_escape_string($_POST['NomOperateur']) . '",
"' . mysql_real_escape_string($_POST['PrenomOperateur']) . '",
"' . mysql_real_escape_string($_POST['SexeOperateur']) . '",
"' . mysql_real_escape_string($_POST['TelOperateur']) . '",
"' . mysql_real_escape_string($_POST['AdresseOperateur']) . '",
"' . mysql_real_escape_string($_POST['LoginOperateur']) . '",
"' . mysql_real_escape_string(md5($_POST['PasseOperateur'])) . '"
)';
mysql_query($sql) or die('Erreur SQL !' . $sql . '<br />' . mysql_error());
session_start();
$_SESSION['LoginOperateur'] = $_POST['LoginOperateur'];
$_SESSION['NomOperateur'] = $_POST['NomOperateur'];
$_SESSION['PrenomOperateur'] = $_POST['PrenomOperateur'];
$_SESSION['NiveauAcces'] = $_POST['NiveauAcces'];
include ('erreurs/page_erreur_motpasse.php');
exit();
} else {
//on inclus la page d'erreur compte existe déjà
include ('erreurs/page_erreur_compte_existe.php');
}
}
} else {
//on inclus la page d'erreur au moins un champs est vide
include ('erreurs/page_erreur_champs_vide_1.php');
}
}
?>
moogli
le 04/10/2011 à 12:48
moogli
salut,

peut tu mettre le message d'erreur complet ? (au pire enlève le début des chemins de fichier ;) )

@+
Il en faut peu pour être heureux !!!!!
lordgodgiven
le 04/10/2011 à 13:25
lordgodgiven
Bonjour,

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\xampp\htdocs\essai2\creation.php on line 38

J'ai retouché le code, la ligne où se trouve l'erreur s'est donc déplacée.
moogli
le 04/10/2011 à 16:09
moogli
erf j'suis mirro, a tu bien regardé la requete SQL ?
$sql = 'INSERT INTO operateursaisie VALUES('',
"' . mysql_real_escape_string($_POST['NomOperateur']) . '",
"' . mysql_real_escape_string($_POST['PrenomOperateur']) . '",
"' . mysql_real_escape_string($_POST['SexeOperateur']) . '",
"' . mysql_real_escape_string($_POST['TelOperateur']) . '",
"' . mysql_real_escape_string($_POST['AdresseOperateur']) . '",
"' . mysql_real_escape_string($_POST['LoginOperateur']) . '",
"' . mysql_real_escape_string(md5($_POST['PasseOperateur'])) . '"
)';

tu commence la chaine par une ' et pour la 1ère valeur tu met direct des ' dans la chaine sans les protéger. La MySQL ne sais plus quoi faire c'est la cata ça se mélange les pinceaux.

pour éviter cela met des \ devant les ' dans une chaine encadré par des ' (idem pour les " dans une chianes délimitées par des " ;)

donc
$sql = 'INSERT INTO operateursaisie VALUES(\'\',
"' .

tu peux essayer
essai
<?php
$sql = 'INSERT INTO operateursaisie VALUES(\'\',
\'' . mysql_real_escape_string($_POST['NomOperateur']) . '\',
\'' . mysql_real_escape_string($_POST['PrenomOperateur']) . '\',
\'' . mysql_real_escape_string($_POST['SexeOperateur']) . '\',
\'' . mysql_real_escape_string($_POST['TelOperateur']) . '\',
\'' . mysql_real_escape_string($_POST['AdresseOperateur']) . '\',
\'' . mysql_real_escape_string($_POST['LoginOperateur']) . '\',
\'' . mysql_real_escape_string(md5($_POST['PasseOperateur'])) . '\'
);';
?>


pour le premier champ, je suppose qu'il s'agit d'une clef primaire auto_increment ?
dans ce cas tu eux mettre null plutot que des '' le mieux étant d'indiquer les champs que tu remplis et de ne pas mettre l'id

par exemple
insert into matable (champ1, champ2) values (valeurchamp1, valeurchamp2);

et même si la table comporte 12 champs (pour peux, bien sur, que tu ne viole pas une contrainte not null qui n'a pas de default ;))

@+
Il en faut peu pour être heureux !!!!!
lordgodgiven
le 04/10/2011 à 16:20
lordgodgiven
Bonjour,

Merci pour tes remarques, j'ai pris des remarques en ligne de compte et lorsque je test voici ce que j'obtiens comme erreur "Erreur SQL !INSERT INTO operateursaisie VALUES('', 'ss', 'ss', 'M', 'ss', 'ss', 'ss', '3691308f2a4c2f6983f2880d32e29c84' );
Column count doesn't match value count at row 1" en effet il y a un champs en auto_increment et il est à not null.

Merci
LA GLOBULE
le 05/10/2011 à 00:01
LA GLOBULE
A priori, ta table n'as pas le même nombre de champs que le nombre de valeurs que tu essayes de passer dans ta requete SQL.
lordgodgiven
le 05/10/2011 à 08:48
lordgodgiven
Bonjour,

Le nombre de champs est exact, ce que tu vois c'est juste un essai rapide que j'ai eu à faire, il y a 8 champs dans la requête, de ce coté là pas de problème, par contre c'est la requête sql qui pose des problèmes et franchement je ne sais plus à quel saint me voué
LA GLOBULE
le 07/10/2011 à 09:41
LA GLOBULE
Si le nombre de champs est bon, l'erreur ne doit plus être la même.
Tu as la nouvelle erreur ?
Répondre
LoadingChargement en cours