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 :

Requête SQL inopérante


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 99
    Points : 36
    Points
    36
    Par défaut Requête SQL inopérante
    Bonjour à tous,

    Premièrement voici ma page complète pour que vous compreniez ce que je cherche à faire :
    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
            <meta http-equiv="content-type" content="text/html;charset=utf-8" />
            <title>Visite Virtuelle : Echec de l'ajout </title>
        </head>
     
        <body>
     
            <CENTER><h1>Echec de votre requête</h1></CENTER>
            <?php
            require 'menu.php';
            ?>
     
            <?php
            if (isset($_FILES['fichier'])) {
                $dossier = 'plans/';
                $fichier = basename($_FILES['fichier']['name']);
                $taille_maxi = 50000000;
                $taille = filesize($_FILES['fichier']['tmp_name']);
                $extensions = array('.ifc');
                $extension = strrchr($_FILES['fichier']['name'], '.');
                if (!in_array($extension, $extensions)) {
                    $erreur = "Vous devez uploader un fichier de type .ifc";
                }
                if ($taille > $taille_maxi) {
                    $erreur = "Le fichier est trop volumineux, veuillez upload un fichier de moins de 50Mo.";
                }
                if (!isset($erreur)) {
     
                    $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
                    $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
                    if (move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) {
                        require 'connect.php';
                        // récupérations des valeurs des champs : 
                        $ajoutnom = $_POST["nom_plan"];
                        $ajoutdesi = $_POST["desi_plan"];
                        $nomplan = $_FILES['fichier']['name'];
                        $lienplan = 'plans/' . $nomplan;
     
                        //requête sql : 
                        $ajoutPlanSQL = "INSERT INTO vv_plans (nom_plan, designation, lien_plan)
                                VALUES( '$ajoutnom', '$ajoutdesi', '$lienplan')";
     
                        //exécution requête
                        $requeteAPlan = $dbh->query($ajoutPlanSQL);
     
                        // vérification de l'exécution 
                        if ($requeteAPlan) {
                            echo "Ajout base OK";
                        } else {
                            echo "Ajout base échoué";
                        }
                    } else {
                        echo 'Echec upload..';
                    }
                } else {
                    echo $erreur;
                }
            }
            ?>
     
            <?php
            ?>
     
        </body>
    </html>
    Pour faire simple, c'est une simple page contenant un script permettant de stiocker un fichier upload dans un dossier voulus et de permettre l'enregistrement des informations dans la base (nom, description et liens d'accès au fichier)

    Bon la première partie concernant le stockage du fichier marche, les vérification marche, toutes cette partie marche.

    C'est la seconde partie, l'ajout des informations, qui ne fonctionne pas :

    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
    require 'connect.php';
                        // récupérations des valeurs des champs : 
                        $ajoutnom = $_POST["nom_plan"];
                        $ajoutdesi = $_POST["desi_plan"];
                        $nomplan = $_FILES['fichier']['name'];
                        $lienplan = 'plans/' . $nomplan;
     
                        //requête sql : 
                        $ajoutPlanSQL = "INSERT INTO vv_plans (nom_plan, designation, lien_plan)
                                VALUES( '$ajoutnom', '$ajoutdesi', '$lienplan')";
     
                        //exécution requête
                        $requeteAPlan = $dbh->query($ajoutPlanSQL);
     
                        // vérification de l'exécution 
                        if ($requeteAPlan) {
                            echo "Ajout base OK";
                        } else {
                            echo "Ajout base échoué";
                        }
    Puisqu'il m'affiche "Ajout base échoué".

    J'ai bien vérifier mes variable, ma syntaxe dans ma requête SQL (possible que le problème soit dedans je ne suis pas bon en SQL..). JE ne comprends pas pourquoi ça ne marche pas.

    Pourtant j'ai repris l'exemple d'une page que j'ai déjà créer et qui fonctionne.

    Je me demandais si ces ligne étaient correcte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $nomplan = $_FILES['fichier']['name'];
                        $lienplan = 'plans/' . $nomplan;
    C'est juste une supposition. Peut être des prblèmes avec la forme de la variable ?

    J'utilise une connexion PDO contenu dans le connect.php, d'où le Ma connexion marche, puisque le reste de mes pages fonctionne très bien

    J'en appel à votre savoir et à vos connaissance !

    En tout cas, merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    On ne met pas directement dans une requête des données non contrôlées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
               $nomplan = $_FILES['fichier']['name'];
                        $lienplan = 'plans/' . $nomplan;
                        $ajoutPlanSQL = "INSERT INTO vv_plans (nom_plan, designation, lien_plan)
                                VALUES( :nom_plan, :desi_plan, :lien_plan)";
    $sth =  $dbh->prepare($ajoutPlanSQL);
    $sth->execute(array(':nom_plan'=>$_POST["nom_plan"], ':desi_plan'=>$_POST["desi_plan"], ':lien_plan'=>$lienplan));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 99
    Points : 36
    Points
    36
    Par défaut
    Merci ça fonctionne !

    Par contre, au lieu de recopier bêtement, j'aimerai plutôt comprendre mon erreur.

    Pourrais tu m'expliquer ce que tu entends par données non contrôlées ?

    Et dans ce cas, quel est la différence avec ce script là :
    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
    <?php
            require 'connect.php';
            //récupération des valeurs des champs:
            $ajoutPseudo = $_POST["pseudo"];
            $ajoutPass = $_POST["password"];
            $nom = $_POST["nom"];
            $prenom = $_POST["prenom"];
            $statut = $_POST["statut"];
     
            //création de la requête SQL:
            $ajoutSQL = "INSERT  INTO vv_utilisateur  (pseudo, password, nom, prenom, statut)
                VALUES ( '$ajoutPseudo', '$ajoutPass', '$nom', '$prenom', '$statut') ";
     
            //exécution de la requête SQL:
            $requete = $dbh->query($ajoutSQL);
     
     
            //affichage des résultats, pour savoir si l'insertion a marchée:
            if ($requete) {
                header("location:ajoutUti.php");
            } else {
                echo("L'insertion à échouée");
            }
            ?>
    C'est sur celui ci que je me suis basé pour faire la première version de mon script, sachant qu'il marche très bien pour la page demandé.

    Merci de ton aide et de ton temps en tout cas

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bonjour,

    Une petite lecture rapide pour bien comprendre

    http://fmaz.developpez.com/tutoriels...dre-pdo/#LII.a

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourrais tu m'expliquer ce que tu entends par données non contrôlées ?
    L'utilisateur peut écrire n'importe quoi, comme du code SQL malveillant et dans ton premier code, tu remettras ces instructions malveillantes directement ta requête.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 99
    Points : 36
    Points
    36
    Par défaut
    D'acc' @sabotage, merci pour l'explication !

    @MaitrePylos je vais potasser ça de suite, merci bien !

    Sujet résolu.

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

Discussions similaires

  1. [MySQL] Requête SQL update inopérante
    Par err3d dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/10/2008, 20h58
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37
  5. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/02/2003, 16h44

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