Bonjour,
Je vous demande de l'aide aujourd'hui car j'ai un problème de syntaxe de mon site :

Voici l'erreur :
Parse error: syntax error, unexpected end of file in C:\wamp\www\site\admin\admin.php on line 76

Voici mon code :

<?php
session_start();

try{
    $db = new PDO('mysql:host=localhost;dbname=bdd_e-commerce','root','');
    $db->setAttribute(PDO::ATTR_CASE,PDO::CASE_LOWER); // les noms de champs seront en minuscule
    $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions
}
catch(Exception $e){

    echo "Erreur: ".$e->getMessage();
    die();
}

// Si une session avec un username
if(isset($_SESSION['username'])) {

    // Si une action est défini
    if(isset($_GET['action'])) {

        if($_GET['action']=='add') {
            if(isset($_POST['submit'])){

                $title=$_POST['title'];
                $description=$_POST['description'];
                $price=$_POST['price'];

                if($title&&$description&&$price){

                $insert = $db->prepare("INSERT INTO products VALUES('','$title','$description','$price')");
                $insert->execute();
            } else {
                echo'Veuillez remplir tous les champs';
            }
        }
?>
        <form action="" method="post">
        <h3>Titre du produit :</h3><input type="text" name="title"/>
        <h3>Description du produit :</h3><input type="text" name="description"/>
        <h3>Prix du produit :</h3><input type="text" name="price"/><br/><br/>
        <input type="submit" name="submit"/>
        </form>
<?php

    } elseif($_GET['action']=='modifyanddelete') {

        $select = $db->prepare("SELECT * FROM products");
        $select->execute();

        while($s=$select->fetch(PDO::FETCH_OBJ)){

        echo $s->title;
        ?>
        <a href="?action=modify&amp;id=<?php echo $s->id; ?>"Modifier</a>
        <a href="?action=delete&amp;id=<?php echo $s->id; ?>"X</a><br/></br>
        <?php
    }
    } elseif($_GET['action']=='modify') {
        // NOT Implemented dans la video
    } elseif($_GET['action']=='delete') {
        // NOT Implemented dans la video
    } else {
        die('Une Erreur s\'est produite.');

    }

} else {
    header('Location: ../index.php');
}
?>
<link href="../style/bootstrap.css" type="text/css" rel="stylesheet" />
<h1>Bienvenue, <?php echo $_SESSION['username']; ?></h1>
<br/>
<a href="?action=add">Ajouter un produit</a> <?php // ici l'erreur ?>
<a href="?action=modifyanddelete">Modifier / Supprimer un produit</a>

MERCI De m'aider :)
Bonne fin de soirée ,
Wave59

12 réponses


Carouge10
Réponse acceptée

Puis-je avoir le code, pour avoir la bonne accolade. Merci

Bonjour,

Il manque une accolade fermante à :

// Si une session avec un username
if(isset($_SESSION['username'])) {

Enfin ce n'est pas forcément ici, mais il en manque une.

Wave59
Auteur

ok je vais voir sa x)

Salut,
Ce n'est pas dans la question mais j'ai remarquer un petit truc :

<a href="?action=modify&amp;id=<?php echo $s->id; ?>"Modifier</a>

Il manque le '>'

Je crois voir une accolade en trop si je me trompe pas.

}
    } elseif($_GET['action']=='modify') {
Wave59
Auteur

Bonjour Ludovic ,
J'ai essayer ton idée mais cela ne marche pas car si j'enlèève une accolade avant elseif il me fait UNEXPECTED elseif ..... x)
Merci de ton aide ,
Wave59

Comme je disais, il ne fait pas en enlever mais en AJOUTER une.

Je pense que l'accolade fermante manquante viens de ce bout de code

if($_GET['action']=='add') {
            if(isset($_POST['submit'])){

                $title=$_POST['title'];
                $description=$_POST['description'];
                $price=$_POST['price'];

                if($title&&$description&&$price){

                $insert = $db->prepare("INSERT INTO products VALUES('','$title','$description','$price')");
                $insert->execute();
            } else {
                echo'Veuillez remplir tous les champs';
            }
        }
Wave59
Auteur

L'accolade ne marche pas à ce bout de code . Mais je pense plutôt Quelle Ce situe après l'ACollade du Header ('location: ../index.php');

C'est votre code donc vous le connaissez mieux que moi.
Après c'est peut-être l'affiche ici; pensez à bien faire une tabulation dès que vous ouvrez une accolade, comme cela vous voyez plus facilement où il en manquerait une.

Wave59
Auteur

Ok mais en fait maintenant des que j'ai mis lacollade après le location Normalement il doit me re diriger vers la page D'administration mais il Me ré dirige Vers mon Index.php

Avant votre 1er if, vérifier que $_SESSION['username'] est rempli avec un var_dump($_SESSION);
Car il semble vide.

Wave59
Auteur

Je vais le faire et je vs dis

Wave59
Auteur

Le Vardump m'indique En haut de ma Page Array (Size=1)
'Username' => string 'admin' (length=5)

Par contre quand je clique sur modifier /supprimer un produit sa me faIt un gros code d'erreur en haut .
Merci de m'aider