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

PHP & Base de données Discussion :

Erreur de fonction INSERT TO Parse error: syntax error, unexpected end


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2017
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Octobre 2017
    Messages : 50
    Par défaut Erreur de fonction INSERT TO Parse error: syntax error, unexpected end
    Bonjour à tous,

    J'ai une erreur à la ligne 37 mais je ne sais pas de quoi elle proviens, pouvez-vous m'aider s'il vous plait ?

    Merci d'avance

    Parse error: syntax error, unexpected end of file in C:\wamp64\www\ResponsiveForm\Actionlogement.php on line 37

    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
     
     <?php
     $db = include 'db_mysql.php'; 
     
    try {
    	$stmt = $db->prepare("INSERT INTO logement (LOG_DEBUT, LOG_RUE, LOG_COMPLEMENT, LOG_CP, LOG_VILLE, LOG_TYPE, LOG_APT) 
    VALUES (:LOG_DEBUT, :LOG_RUE, :LOG_COMPLEMENT, :LOG_CP, :LOG_VILLE, :LOG_TYPE, :LOG_APT)");
        $stmt->bindParam(':LOG_DEBUT', $LOG_DEBUT);
        $stmt->bindParam(':LOG_RUE', $LOG_RUE);
        $stmt->bindParam(':LOG_COMPLEMENT', $LOG_COMPLEMENT);
    	    $stmt->bindParam(':LOG_CP', $LOG_CP);
        $stmt->bindParam(':LOG_VILLE', $LOG_VILLE);
        $stmt->bindParam(':LOG_TYPE', $LOG_TYPE);
    	    $stmt->bindParam(':LOG_APT', $LOG_APT);
     
    // insert a row
        $LOG_DEBUT = $_POST["LOG_DEBUT"];
        $LOG_RUE = $_POST["LOG_RUE"];
        $LOG_COMPLEMENT = $_POST["LOG_COMPLEMENT"];
    	$LOG_CP = $_POST["LOG_CP"];
        $LOG_VILLE = $_POST["LOG_VILLE"];
        $LOG_TYPE = $_POST["LOG_TYPE"];
    	$LOG_APT = $_POST["LOG_APT"];
     
        $stmt->execute();
        echo "New records created successfully";
       }
       //ceci n'est pas une exception 
       //il n'y a peut etre pas de CHAZAL avec un prénom qui commence par un C et dont l’id est strictement supérieur à 2
     
     catch (Exception $e) {
       //s'il y a un problème PHP ou SQL, tout s'affichera ici
       print "Erreur ! " . $e->getMessage() . "<br/>";
     
     
    $pdo = null;
     header('Location: http://localhost/ResponsiveForm/index.php');
    ?>

    le fichier db_mysql.php:
    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
    <?php
    // @author : rawsrc - 2018 - Pour DVP
    // on vérifie si la fonction de connexion a déjà été définie afin d'éviter de la redéfinir
    if ( ! function_exists('db_connexion')) {
       function db_connexion() {
          // une fois ouverte, on renvoie toujours la même connexion
          static $pdo;
          // on vérifie si la connexion n'a pas déjà été initialisée
          if ( ! ($pdo instanceof PDO)) {
             // tentative d'ouverture de la connexion MySQL
             try {
                $pdo = new PDO('mysql:host=localhost;port=3306;dbname=testsql;charset=utf8','root', '', [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_EMULATE_PREPARES   => false
                ]);
             } 
             catch (PDOException $e) {
                throw new InvalidArgumentException('Erreur connexion à la base de données : '.$e->getMessage());
                exit;
             }
          }
          // renvoi de la ressource : connexion à la base de données
          return $pdo;
       }
    }
    return db_connexion();
    ?>

  2. #2
    Membre chevronné Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Par défaut
    Tu utilises tes variables avant de leur assigner une valeur.
    Et il est probable qu'il y ait une erreur dans ton fichier index.

    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
     
    $stmt = $db->prepare("INSERT INTO logement (LOG_DEBUT, LOG_RUE, LOG_COMPLEMENT, LOG_CP, LOG_VILLE, LOG_TYPE, LOG_APT) 
    VALUES (:LOG_DEBUT, :LOG_RUE, :LOG_COMPLEMENT, :LOG_CP, :LOG_VILLE, :LOG_TYPE, :LOG_APT)");
     
    // insert a row
        $LOG_DEBUT = $_POST["LOG_DEBUT"];
        $LOG_RUE = $_POST["LOG_RUE"];
        $LOG_COMPLEMENT = $_POST["LOG_COMPLEMENT"];
        $LOG_CP = $_POST["LOG_CP"];
        $LOG_VILLE = $_POST["LOG_VILLE"];
        $LOG_TYPE = $_POST["LOG_TYPE"];
        $LOG_APT = $_POST["LOG_APT"];
     
        $stmt->bindParam(':LOG_DEBUT', $LOG_DEBUT);
        $stmt->bindParam(':LOG_RUE', $LOG_RUE);
        $stmt->bindParam(':LOG_COMPLEMENT', $LOG_COMPLEMENT);
        $stmt->bindParam(':LOG_CP', $LOG_CP);
        $stmt->bindParam(':LOG_VILLE', $LOG_VILLE);
        $stmt->bindParam(':LOG_TYPE', $LOG_TYPE);
        $stmt->bindParam(':LOG_APT', $LOG_APT);
     
        $stmt->execute();

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pour faire court :
    • bindParam(), c'est de la m...
    • utilise bindValue().


    @ma5t3r
    Non, l'ordre n'a pas d'importance.

    On en a récemment parlé dans cette discussion.

  4. #4
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2017
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Octobre 2017
    Messages : 50
    Par défaut
    Merci pour vos réponses.

    #1J'ai donc remplacé binparam par bindvalue à l'identique mais le problème persiste.

    #2 Je me demande autre chose, ma table locataire a une clé primaire LOG-ID. Dois-je impérativement lui donner une valeur lors de l'insertion ou bien elle s'incrémente automatiquement ?
    Voici ma table locataire:
    Code SQL : 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
    -- phpMyAdmin SQL Dump
    -- version 4.9.2
    -- https://www.phpmyadmin.net/
    --
    -- Hôte : 127.0.0.1:3306
    -- Généré le :  mer. 13 mai 2020 à 17:02
    -- Version du serveur :  8.0.18
    -- Version de PHP :  7.3.12
     
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET AUTOCOMMIT = 0;
    START TRANSACTION;
    SET time_zone = "+00:00";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8mb4 */;
     
    --
    -- Base de données :  `testsql`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `logement`
    --
     
    DROP TABLE IF EXISTS `logement`;
    CREATE TABLE IF NOT EXISTS `logement` (
      `LOG_ID` int(11) NOT NULL,
      `LOG_DEBUT` date NOT NULL,
      `LOG-FIN` date NOT NULL,
      `LOG_RUE` text NOT NULL,
      `LOG_COMPLEMENT` text NOT NULL,
      `LOG_CP` text NOT NULL,
      `LOG_VILLE` text NOT NULL,
      `LOG_TYPE` text NOT NULL,
      `LOG_APT` text NOT NULL,
      PRIMARY KEY (`LOG_ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
    COMMIT;
     
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

    #3 Voici le code de la page index.php
    Code html : 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
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    <!doctype html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
     
        <title>Gestion Locative</title>
     
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    		<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" >
    		<link href="css/global.css" type="text/css" rel="stylesheet" >
    		<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" ></script>
    		<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
    		<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
     
     
    </div>
      </head>
      <body>
       <div class="container-fluid bg">
       <!-- Sépare la page en 3 colonnes -->
    		<div class="row">
    			  <div class="col-sm-4">col-sm-4</div>
    			  <div class="col-sm-4">col-sm-4
     
    			  <!-- début du formulaire -->
    				  <form class="form-container" action="" method="post">
    					<!-- Default dropup button -->
    <div class="btn-group dropup">
      <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
        Dropup
      </button>
      <div class="dropdown-menu">
        <!-- Dropdown menu links -->
      </div>
    </div>
    						<!-- Titre du formulaire -->
    				  <h1>LOGEMENT</h1>
     
    <!-- champ de recherche de logement dans base SQL -->
    				   <div class="form-group">
    					<label for="recherchelogement">Recherche logement</label>
     
    					<select class="form-control" id="exampleFormControlSelect1">
    					<?php
                                            $db = include 'db_mysql.php'; 
                                            $stmt = $db->prepare('Select LOG_APT from logement');
                                            $stmt->execute();
                                            while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                                            echo '<option>'.$row['LOG_APT'].'</option>';
                                            }
                                            ?>
    					</select>
    					</div>
     
    <!-- Rue -->					
    					<div class="form-group"> 
    						  <input name="LOG_RUE" type="text" class="form-control" id="validationCustom01" placeholder="Rue" required>
    						  <div class="invalid-feedback">Please provide a valid "Rue".</div> 
    					</div>
    <!-- complement -->					  
    					 <div class="form-group"> 
    						  <input name="LOG_COMPLEMENT" type="text" class="form-control" id="validationCustom02" placeholder="Complément " required>
    						  <div class="invalid-feedback">
    							Please provide a valid "Complément".
    						  </div> 
    					 </div>
     
    <!-- Code Postal -->						
    					 <div class="form-row">
    						<div class="form-group col-md-4">
    						<input name="LOG_CP" type="text" class="form-control" id="validationCustom03" placeholder="Code Postal" required>
    						<div class="invalid-feedback">Please provide a valid "Code Postal".</div> 
    					</div>
     
    <!-- Type appartement -->	
    					<div class="form-group col-md-4">
    						<input name="LOG_TYPE" type="text" class="form-control" id="validationCustom04" placeholder="RDC / 1er étage ..." required>
    						<div class="invalid-feedback">Please provide a valid Appartement Type.</div> 
    					</div>
     
    <!-- Surface -->		
    					<div class="form-group col-md-4">
    						<input name="LOG_APT" type="text" class="form-control" id="validationCustom05" placeholder="X m²" required>
    						<div class="invalid-feedback">Please provide a valid Surface.</div> 
    					</div>
     
    <!-- Date début location -->					
    				<div class="form-row">
    					<div class="form-group col-md-6">
    						<label for="dateAchat">Date achat</label>
    						<input name="LOG_DEBUT" class="form-control" type="date" value="today" id="achat">
    						<div class="invalid-feedback">Please provide a valid "Date achat"</div> 
    					</div>
     
    <!-- Date fin location -->	
     
    						<div class="form-group col-md-6">
    						<label for="dateAchat">Date fin</label>
    						<input name="LOG_FIN" class="form-control" type="date" value="today" id="achat">
    						<div class="invalid-feedback">Please provide a valid "Date achat"</div> 
    						</div>
    					</div>
     
    <!-- Date archivage -->					
     
    						<label class="invisible" for="inputState">Archivage</label>
    						<input name="archivage" class="invisible" type="date" value="today" id="archivage">
     
     
     
    				</div>
     
     
    			<button type="submit" class="btn btn-primary" formaction="actionlogement.php">Actionlogement.php</button>
     
    			<!-- Provides extra visual weight and identifies the primary action in a set of buttons -->
    			<button type="button" class="btn btn-primary">Création</button>
     
    			<!-- Secondary, outline button -->
    			<button type="button" class="btn btn-secondary">Valider</button>
     
    			<!-- Indicates a successful or positive action -->
    			<button type="button" class="btn btn-success">Imprimer</button>
     
     
    			<!-- Indicates a dangerous or potentially negative action -->
    			<button type="button" class="btn btn-danger">Supprimer</button>
     
    				</form>
    				</div>
    			<div class="col-sm-4">col-sm-4</div>
    </div>
     
    </body>
    </html>

    En espérant que cela puisse nous aider à résoudre le problème.
    Merci d'avance.

  5. #5
    Invité
    Invité(e)
    Par défaut
    1- c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        $stmt->bindValue(':LOG_DEBUT', $_POST["LOG_DEBUT"]);
        $stmt->bindValue(':LOG_RUE', $_POST["LOG_RUE"]);
     ...
     
        $stmt->execute();

    2- Dans ta table `logement`, il faut définir `LOG_ID` comme AUTO-INCREMENT.

  6. #6
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2017
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Octobre 2017
    Messages : 50
    Par défaut
    #1 j'ai ajouté l'auto incrémentation:
    Nom : Sans titres.png
Affichages : 91
Taille : 24,4 Ko

    #j'ai corrigé selon tes conseils le bindvalue:
    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
     <?php
     $db = include 'db_mysql.php'; 
     
    try {
    	$stmt = $db->prepare("INSERT INTO logement (LOG_DEBUT, LOG_RUE, LOG_COMPLEMENT, LOG_CP, LOG_VILLE, LOG_TYPE, LOG_APT) 
    VALUES (:LOG_DEBUT, :LOG_RUE, :LOG_COMPLEMENT, :LOG_CP, :LOG_VILLE, :LOG_TYPE, :LOG_APT)");
     
        $stmt->bindValue(':LOG_DEBUT', $_POST["LOG_DEBUT"]);
        $stmt->bindValue(':LOG_RUE', $_POST["LOG_RUE"]);
        $stmt->bindValue(':LOG_COMPLEMENT', $_POST["LOG_COMPLEMENT"]);
        $stmt->bindValue(':LOG_CP', $_POST["LOG_CP"]);
        $stmt->bindValue(':LOG_VILLE', $_POST["LOG_VILLE"]);
        $stmt->bindValue(':LOG_TYPE', $_POST["LOG_TYPE"]);
        $stmt->bindValue(':LOG_APT', $_POST["LOG_APT"]);
     
        $stmt->execute();
        echo "New records created successfully";
       }
     
     catch (Exception $e) {
       //s'il y a un problème PHP ou SQL, tout s'affichera ici
       print "Erreur ! " . $e->getMessage() . "<br/>";
     
      $pdo = null;
     header('Location: http://localhost/ResponsiveForm/index.php');
     
    ?>
    Et le problème persiste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Parse error: syntax error, unexpected end of file in C:\wamp64\www\ResponsiveForm\Actionlogement.php on line 27

  7. #7
    Invité
    Invité(e)
    Par défaut
    Il manque un } pour fermer le catch.

  8. #8
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2017
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Octobre 2017
    Messages : 50
    Par défaut
    Merci Jreaux62,

    Grace à ton aide le code fonctionne maintenant parfaitement.
    Il manquait en plus l'input LOG_VILLE dans le formulaire. Une fois ajouté, le code fonctionne maintenant . Merci :-)

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

Discussions similaires

  1. Parse error: syntax error, unexpected $end i
    Par tibewww dans le forum Langage
    Réponses: 4
    Dernier message: 29/05/2010, 14h13
  2. [MySQL] Parse error: parse error, unexpected $end
    Par naim2009 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/03/2009, 12h20
  3. Parse error: syntax error, unexpected $end
    Par d.florian dans le forum Langage
    Réponses: 3
    Dernier message: 21/12/2008, 00h33
  4. Parse error: syntax error, unexpected $end
    Par hibou1 dans le forum Langage
    Réponses: 4
    Dernier message: 11/04/2008, 13h13
  5. Réponses: 10
    Dernier message: 21/07/2006, 08h44

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