IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PDO Select… mais Parse error: syntax error, unexpected T_STRING [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    rjl
    rjl est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 83
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 301
    Par défaut PDO Select… mais Parse error: syntax error, unexpected T_STRING
    Bonjour à tous,

    Je galère toujours…
    Je suis passé à PDO avec des résultats mitigés.
    J'ai, en fait 2 problèmes que je sens (en + de ceux que j'ignore encore… ) :

    Premier point : Un Parse error: syntax error, unexpected T_STRING en ligne 37 m'échappe malgré bien des tentatives de correction ?

    Seconde difficulté, je contrôle l'existence dans une table du couple Login / motDePasse par un Select Where qui ne peut que trouver ou non donc aucun autre contrôle ni lecture nécessaire donc pas de Fetch ?
    Dois-je tester une erreur potentielle dans la requête SELECT ?
    Comment contrôler l'exactitude ou non de mon couple Login / motDePasse ?

    Je joins mon code mais pour faciliter la compréhension, j'y ai intégré un Include.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php 
    // Démarrage de la session 
    	session_start(); 
     
    // On vérifie si le champ Login n'est pas vide.              
    	if ($_SESSION['Login']=='')   
    // 		Si c'est le cas, le visiteur ne s'est pas logué et subit une redirection        
    		{ Header('Location:index.php'); } 
    	else    
    	{ 
    	echo " <a href src='Disconnect.php'> Se déconnecter </a> || Utilisateur: ". $_SESSION['Login'] .""; 
    	} 
     
    // Connexion à la base de données MySQL 
    //	require once ('ConnectBDutl.php'); 
     
    // Parametres MySQL       MaJ ConnectBDutl  RJL2713
    	$serveur=''; 				 // serveur mysql
    	$bdname=''; 		     // nom de la base
    	$dsn = 'mysql:host=$serveur;dbname=$bdname';
    	$utilisateur='';      // nom d'utilisateur 
    	$motDePasse=''; 	     // mot de passe
     
    // Connexion à MySQL
    	try
    		{
    		$arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"); 
    		$connexion = new PDO( $dsn, $utilisateur, $motDePasse );
    		$connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    		}
    	catch (Exception $er )
    		{
    		echo "Connexion à la Base de données MySQL impossible : ", $er->getMessage();
    //		die();
    		}	
    // Cette table contient la liste des users enregistrés.       
    	$select = $connexion->query(SELECT FROM Respw 
    		WHERE (nomresp = $_SESSION['Login'] AND cdpw = $_SESSION['MotPasse'])); 
    // Récup nom et mot de passe
    	$arr = $pdo->query($query)->fetch(); 
     
      exit              // exit provisoire
    Merci de votre appui car même en multipliant les lectures de Tuto, Doc et Discussions diverses, je me sens bien désarmé face à ces premiers cas pratiques.

    @u plaisir de vous lire RJL2714

  2. #2
    Membre chevronné Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Par défaut
    Bonjour,

    Pour le parse Error c'est normal vous avez oubliez de mettres des ' ou des " pour donner votre requete à PDO.

    Au lieu de ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $select = $connexion->query(SELECT FROM Respw 
    		WHERE (nomresp = $_SESSION['Login'] AND cdpw = $_SESSION['MotPasse']));
    Il vous faut mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $select = $connexion->query('SELECT FROM Respw 
    		WHERE (nomresp = "'.$_SESSION['Login'].'" AND cdpw = "'.$_SESSION['MotPasse'].'")');
    Cordialement,

  3. #3
    rjl
    rjl est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 83
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 301
    Par défaut
    Bonjour
    et d'abord, merci de cette réponse particulièrement rapide.
    Elle m'amène à reconsidérer la syntaxe laquelle est un peu délicate pour un débutant, même possédant le tuto pour grands débutants pressés .
    Bon week end et encore merci. RJL2714

  4. #4
    rjl
    rjl est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 83
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 301
    Par défaut
    Bonsoir à tous,

    Pendant quelques jours, je suis resté silencieux pour réétudier les tutos et autres éditions sur le PHP et plus encore le PDO ; j'ai remis en forme, imprimé, lu et relu ; certes, j'ai recadré un certain nombre de renseignements, mais, au vu de mes résultats, ce soir, je mords la poussière avec déception !
    Heureusement que je connais la puissance de votre appui pour me remettre sur le bon chemin et ne pas jeter l'éponge.

    J'ai une page qui fonctionne et fait la même chose que celle sur laquelle je bute mais qui elle… est d'avant donc d'une bonne semaine, avant que je ne décide de basculer en PDO !

    Depuis, j'ai tenté d'ingurgiter PDO, les contrôles de diverses natures mais je n'ai pas voulu (encore) aller jusqu'à une fonction prepare ! Je me suis donc limité à un $PDO->exec ('INSERT INTO
    Pour autant, j'ai intégré quelques $pdo->quote( pour des zones dont j'avais vérifié la présence voire supprimé les blancs devant et derrière mais sans plus.
    J'ai vu et revu l'instruction 96 sur laquelle je bute mais contrôlant les parités (dans l'ordre des parenthèses) ,…

    J'ai même limité mes chaines au minimum soit un champ mais rien n'y fait :
    Parse error: syntax error, unexpected T_VARIABLE in /web/utlsudgoelo/www/pgUTL/traitformul.php on line 96

    Malgré toutes ces recherches, je bute sur un parse error
    Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
    in /web/utlsudgoelo/www/pgUTL/traitformul.php on line 95

    Peut-être est-ce quelque chose d'évident et choquant pour un spécialiste de ne pas être découvert vu toute la doc qui s'accumule sur ces thèmes ! Je mets le code de la page ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    <?php
    // Parametres mysql PDO     RJL2716        
    	echo "entrée dans traitformul.php";?><br /><?php  
    	echo $serveur='sql1';?><br /><?php			 // serveur mysql
    	echo $bdname='utlsudgoelo';?><br /><?php		     // nom de la base
    	/* $dsn = 'mysql:host=sql1;dbname=$bdname'; */
    	$dsn = 'mysql:host=sql1;dbname=utlsudgoelo';
    	$utilisateur='utlsudgoelo';      // nom d'utilisateur 
    	$motDePasse='********'; 	     // mot de passe
    	echo $dsn;?><br /><?php
     
    // Connexion à MySQL
    	try
    		{
    		$arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
    							  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
    		$connexion = new PDO( $dsn, $utilisateur, $motDePasse, $arrExtraParam );
    //		$connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); RJL2716
    		}
    	catch (Exception $er )
    		{
    		echo "Connexion à la Base de données MySQL impossible : ", $er->getMessage();
    		die();
    		}
     
    // controle valeurs transmises
    // sélection de la base de données
    //	mysql_select_db(DB_DATABASE, $connect) or die (mysql_error());
    //	mysql_query("SET NAMES utf8"); 
    // à ajouter au début du script au cas où magic_quotes soit à ON 
    	if (get_magic_quotes_gpc()) 
    		{ 
    		$_POST = array_map('stripslashes', $_POST); 
    		} 
     
    //  echo "($_POST)"; echo ($_POST);
    	$msg_erreur = "Erreur. Les champs suivants doivent être correctement remplis:
    <br/><br/>";
    	$msg_ok = "Votre demande a bien été prise en compte.";
    	$message = $msg_erreur;
    // vérification des champs
    // print_r($_POST);  echo "\n";  // contrôle données traitées
    	$anais =($_POST['anais']);
    	if (empty($anais)) 
    		$message .= "Votre année de naissance<br/>";
    	$ancour = date("Y");
    	if (!is_int($anais))
    		$message  .= "Année naissance non conforme<br/>";
    	else if  (($anais <$ancour - 100) or
    				($anais > $ancour -25)) 
    				$message .= "Année naissance incorrecte<br/>";
    	if (empty($_POST['civil'])) 
    		$message .= "Votre civilité<br/>"; 
    	if (empty($_POST['nomadh'])) 
    		$message .= "Votre nom<br/>";
    	if (empty($_POST['prenom'])) 
    		$message .= "Votre prénom<br/>";
    	if (empty($_POST['ad1'])) 
    		$message .= "Votre adresse<br/>"; 
    	$cpost =($_POST['cpost']);
    	if (!is_int($cpost))
    		$message  .= "Code postal non conforme<br/>";
    	else if  (($cpost <1000) or
    			  ($cpost > 95999))
    				$message .= "Code postal erroné<br/>";
    	if (empty($_POST['ville'])) 
    		$message .= "Votre ville<br/>";
    // On va vérifier l'email ...
    	$admail=mysql_real_escape_string(trim($_POST['admail']));
    	If ((empty ($admail))
    	or (!preg_match("#^[a-z0-9._-]{1,}@[a-z0-9._-]{2,}\.[a-z]{2,4}$#",$admail)))
    			$message .= "Code e-mail invalide<br/>";		//    /*  adresse mail incorrecte */
    	$tfixe=mysql_real_escape_string(trim($_POST['tfixe'])); 
    	$tmob=mysql_real_escape_string(trim($_POST['tmob'])); 
    	If  ((empty ($tfixe))
    	or  (!preg_match("#^0[1-68][0-9]{8}$#",$tfixe)))
    			$message .= "N° Téléphone fixe invalide<br/>";
    	If ((empty ($tmob))	
    	or (!preg_match("#^0[1-68][0-9]{8}$#",$tmob)))  
    			$message .= "N° Téléphone mobile invalide<br/>";
    	$nomadh=mysql_real_escape_string(trim($_POST['nomadh']));
    	$prenom=mysql_real_escape_string(trim($_POST['prenom']));
    	$ad1=mysql_real_escape_string(trim($_POST['ad1'])); 
    	$ad2=mysql_real_escape_string(trim($_POST['ad2'])); 
    	$civil=mysql_real_escape_string(trim($_POST['civil'])); 
    	$ville=mysql_real_escape_string(trim($_POST['ville']));
    // si un champ est vide, afficher le message d erreur
    	if (strlen($message) > strlen($msg_erreur)) {
    		$message .= "<br />Revenir par la flèche à la page précédente et corriger";
    		echo $message; exit;} 
    // sinon c est ok 
    	$msg_ok .= "<br /> <br />Revenir par la flèche à la page précédente et cliquer sur le menu désiré";
     
    	$pdo->exec('INSERT INTO adh (anais, civil, nomadh, prenom, ad1, ad2, cpost, ville, tfixe, tmob, admail, MaJ)   
    			VALUES ('.$anais'.'$civil'.$pdo->quote($nomadh).$pdo->quote($prenom).$pdo->quote($ad1).$pdo->quote($ad2).'$cpost'.$pdo->quote($ville).$pdo->quote($tfixe).$pdo->quote($tmob).$pdo->quote($admail).'CURDATE()')'); */
    	$res = mysql_query($sql);
     
    	if ($res) 
    		{
    		echo $msg_ok;
    		}
    	else 
    		{
    		echo mysql_error();
    		}
     
    ?>
    Alors toutes mes excuses mais plus encore mes remerciements pour ceux qui auront la gentillesse et la générosité de se pencher sur ce problème.
    @bientôt RJL1717

  5. #5
    rjl
    rjl est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 83
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 301
    Par défaut FATAL ERROR en PDO (INSERT INTO)
    Bonsoir à tous,

    Maintenant avec un peu d'appui (problème des points et virgules) j'ai progressé et bute maintenant sur le cœur du problème PDO :
    Fatal error: Call to a member function exec() on a non-object in /web/utlsudgoelo/www/pgUTL/traitformul.php on line 97
    laquelle contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $pdo->exec('INSERT INTO adh (anais, civil, nomadh, prenom, ad1, ad2, cpost, ville, tfixe, tmob, admail, MaJ)   
    			VALUES ('.$anais.','.$civil.','.$pdo->quote($nomadh).','.$pdo->quote($prenom).','.$pdo->quote($ad1).','.$pdo->quote($ad2).','.$cpost.','.$pdo->quote($ville).','.$pdo->quote($tfixe).','.$pdo->quote($tmob).','.$pdo->quote($admail).','.CURDATE().')');
    Pour moi, je crois être conforme au tuto de Guillaume "pdo-comprendre-et-corriger-les-erreurs-les-plus-frequentes" où je trouve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdo->exec('INSERT INTO livre_or(pseudo, message, date_post) VALUES('. $pdo->quote($_POST['pseudo']) .', '. $pdo->quote($_POST['message']) .', NOW())');
    Merci de vos indications pour corriger cette instruction

    @bientôt RJL2717

  6. #6
    Membre chevronné Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Par défaut
    Bonjour,

    Si je ne dit pas d'ânerie, ce qui peut arriver, CURDATE() est une fonction MYSQL et donc vous ne devez pas écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VALUES ('.$anais.','.$civil.','.$pdo->quote($nomadh).','.$pdo->quote($prenom).','.$pdo->quote($ad1).','.$pdo->quote($ad2).','.$cpost.','.$pdo->quote($ville).','.$pdo->quote($tfixe).','.$pdo->quote($tmob).','.$pdo->quote($admail).','.CURDATE().')');
    Mais écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VALUES ('.$anais.','.$civil.','.$pdo->quote($nomadh).','.$pdo->quote($prenom).','.$pdo->quote($ad1).','.$pdo->quote($ad2).','.$cpost.','.$pdo->quote($ville).','.$pdo->quote($tfixe).','.$pdo->quote($tmob).','.$pdo->quote($admail).',CURDATE())');

    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Parse error: syntax error, unexpected T_VARIABLE ?
    Par blanchonvincent dans le forum Langage
    Réponses: 3
    Dernier message: 14/09/2007, 08h17
  2. Réponses: 2
    Dernier message: 26/06/2007, 23h49
  3. Réponses: 4
    Dernier message: 16/10/2006, 15h16
  4. [PHP-JS] Parse error: syntax error, unexpected T_STRIN
    Par maldini dans le forum Langage
    Réponses: 4
    Dernier message: 25/07/2006, 18h49
  5. Parse error: syntax error, unexpected '}' help
    Par beur dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2006, 21h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo