Bonjour, j'ai un léger problème enfaite, j'ai créé une requête SQL,
mais qui marche pas sur Chrome, mais je ne comprends pas pourquoi !
J'ai beau cherché ça marche sur Firefox mais pas Chrome
Voici ma requête:

                        $req = $pdo->prepare('INSERT INTO tgd_ann SET 
                        user_id = :user_id,
                        name = :user_name,
                        title = :title,
                        content = :content,
                        prix = :prix,
                        location = :location,
                        creation = :creation');
                        $req->execute([
                        'user_id' => $_SESSION['auth']->id,
                        'user_name' => $_SESSION['auth']->nom,
                        'title' => $_POST['title'],
                        'content' => $_POST['content'],
                        'prix' => $_POST['prix'],
                        'location' => htmlspecialchars($_POST['location']),
                        'creation' => time()]

On est 3 sur cette requête à chercher une solution, mais aucun ne trouve !!!!!
Cdt, Alex.

9 réponses


Alex
Auteur
Réponse acceptée

AhahaH;.... Qui suis-je stupide ? J'ai mis comme fin de

<button> -> <submit>

Donc... Sur chrome ça bloque forcement... Il y avait une erreur.

Merci à tous de l'aide fournie.

Bonjour,

Tu as un message d'erreur lors de l'execution via Chrome ? Est ce que tu as bien recreer ta session sous chrome ?

Cordialement

Alex
Auteur

Salut,

non & oui.
Enfaite le truc comem tu le demande, je n'ai aucun message d'erreur, et ça passe simplement à la suite quoi...
Cordialement.

Il va nous falloir plus de code car la requete n'a pas l'air de poser probleme, as tu une condition superieur à cette requete ?

Alex
Auteur

Voici le code entier qui entoure la requête!

    if(!empty($_POST)) {
        if(!empty($_POST['title']) && preg_match('/^[\p{L}A-Za-z0-9\'\s@._]+$/ui', $_POST['title']) && strlen($_POST['title']) <= 50) {
            if(!empty($_POST['prix'] && preg_match('/^[0-9_]/', $_POST['prix']))) {
                if(!empty($_POST['location'] && preg_match('/^[A-Za-z0-9\s]/', $_POST['location']))) {
                    if(!empty($_POST['content'])) {
                        require_once 'inc/sql.php'; 
                        $req = $pdo->prepare('INSERT INTO tgd_ann SET 
                        user_id = :user_id,
                        name = :user_name,
                        title = :title,
                        content = :content,
                        prix = :prix,
                        location = :location,
                        creation = :creation');
                        $req->execute([
                        'user_id' => $_SESSION['auth']->id,
                        'user_name' => $_SESSION['auth']->nom,
                        'title' => $_POST['title'],
                        'content' => $_POST['content'],
                        'prix' => $_POST['prix'],
                        'location' => htmlspecialchars($_POST['location']),
                        'creation' => time()]
                        );
                    }
                    else {
                        $_SESSION['flash']['title'] = 'La description entrée est invalide!';
                        $_SESSION['content']['title'] = $_POST['title'];
                        $_SESSION['content']['prix'] = $_POST['prix'];
                        $_SESSION['content']['location'] = $_POST['location'];
                        $_SESSION['content']['content'] = $_POST['content'];
                        header('location: addannonce');
                    }
                }
                else {
                    $_SESSION['flash']['title'] = 'Vous devez entrer une localisation valide.';
                    $_SESSION['content']['title'] = $_POST['title'];
                    $_SESSION['content']['prix'] = $_POST['prix'];
                    $_SESSION['content']['location'] = $_POST['location'];
                    header('location: addannonce');
                }
            }
            else {
            $_SESSION['flash']['title'] = 'Vous devez entrer un prix valide. (Uniquement numérique)';
            $_SESSION['content']['title'] = $_POST['title'];
            $_SESSION['content']['prix'] = $_POST['prix'];
            header('location: addannonce');
            }
        } else {
            $_SESSION['flash']['title'] = 'Vous devez entrer un titre valide. (50 Caractères maximums)';
            $_SESSION['content']['title'] = $_POST['title'];
            header('location: addannonce');
        }
    } ?>

Bonjour Alex,
je remarque que tu as mis le preg_match à l'intérieur du empty pour prix et location, c'est normal ?
aussi le preg_match du prix ne prend pas en compte la virgule ou le point décimal.

Alex
Auteur

Alors non c'est pas normal et du coup c'est rectifié.
Et je savais pas merci.
Et d'ailleurs merci pour m'avoir fait rectifié mon erreur. Mais le problème persiste.

Bonjour,

code complexe à debuger, il faudrait essayer de debuguer ligne par ligne :

  • voir si tu rentres dans la condition qui exécute la requête avec juste un die('conditions ok');
  • vérfiier que toutes les variables ont les bonnes valeur avec var_dump

Si tu peux nous faire un retour la dessus :)
Bon courage à toi.

Alex
Auteur

Alors le problème ne vient pas des variables, mais de la première condition qui est tout simplement:
if(isset($_POST)) ... Voilà d'où vient le problème, le formulaire n'est pas envoyé et donc rien n'est effectué !

Mais là du coup je comprends tojujours pas, je m'explique:

        <form action="addannonce2" method="POST">
        <div class="right">
            <a href="addannonce2"><button type="submit"> SUIVANT <i class="fa fa-arrow-right fa-3"></i></submit></a>
        </div>
    </div>
    <div class="body">
        <div class="addann">
            <div class="formulaire">
                <div class="header">
                    <img src="./img/ajouterannonce.png">
                </div>
                <div class="content">
                    <?php if(isset($_SESSION['flash']['title'])) { echo '<div class="alert alert-erreur"'.$_SESSION['flash']['title']."</div>"; } ?>

                    <input type="text" name="title" <?php if(isset($_SESSION['content']['title'])) { ?> value="<?php echo $_SESSION['content']['title']; ?>" <?php } ?> placeholder="Titre de votre annonce">

                    <div class="input_two">
                        <input type="text" name="prix" <?php if(isset($_SESSION['content']['prix'])) { ?> value="<?php echo $_SESSION['content']['prix']; ?>" <?php } ?> placeholder="Prix">
                        <input type="text"  <?php if(isset($_SESSION['content']['location'])) { ?> value="<?php echo $_SESSION['content']['location']; ?>" <?php } ?> name="location" placeholder="Localisation">
                    </div>
                    <textarea name="content" placeholder="Insérez ici, une description précise de votre produit. Par exemple, l'état du produit, ou le nombre mise en vente..."><?php if(isset($_SESSION['content']['content'])) { echo $_SESSION['content']['content'];  } ?></textarea>
                    <?php unset($_SESSION['content']); ?>
        </form>

Donc là, je ne comprends pas pourquoi le formulaire n'est pas envoyé...