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 :

Problème d'insert en php/mysql/ technique mysqli


Sujet :

Langage PHP

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 1
    Par défaut Problème d'insert en php/mysql/ technique mysqli
    Bonjour ou bonsoir à toutes et à tous,

    Comment allez vous?? Moi pas très bien.. Lol! J'ai un soucis d'insert en php. "Notice: Trying to get property of non-object ".

    J'ai un soucis avec la mise en page du code sur ce site.. Excusez moi si le code est écrit en dur, sans le style php.

    Je n'ai pas trouvé un bouton pour cela. C'est très urgent!! Merci

    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
    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
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    <?php 
     
    session_start();
     
    require_once ('../admin/connection.php');
     
    /*Créer une page de connexion membre une fois le profil crée
        et la validation de l'admin*/
     
    //Je vérifie si la page n'est pas la page d'authentificationde l'admin (mettre cette vérification après l'inscription du membre sinon redirigé sans qu'il se soit déjà inscrit).
    /*
        header('location:../admin/connectionMembre.php');
    }*/
     
    //Tous les éléments du formulaire seront renvoyés à la bdd
    //L'élément photo sera renvoyé avec la technique $_FILES
    if(isset($_POST['id']) && !empty($_POST['id'])){
     
            //Je crée mon dossier de destination
            $target_dir="photoUser/";
            //Je crée le fichier de l'image à uploader
            //basename: retourne le nom de la composante finale d'un chemin
            $target_file= "../".$target_dir . basename($_FILES["photo"]["name"]);
            //Si la photo est bien uploadée, je crée une vraible avec un simple 1 en guise de check
            $uploadOK=1;
            //Je stocke l'image, je transforme en minuscule (car mon dossier de destination est en minuscule) avec le chemin et son extension(jpg, png...)
            $imageFileType=strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
     
            //Je vérifie si le dossier de l'image contient l'image actuelle ou une mauvaise image
            if(isset($_POST['photo'])){
                //Je récupère dans une variable les dimensions de l'image avec l'image courante et la destination temporaire où se situe l'image actuellement
                //$check["mime"]: détecte le type de contenu de l'image
                $check=getimagesize($_FILES["photo"]["tmp_name"]);
     
                if($check!==false){
     
                    echo "le fichier est une image -".$check["mime"] .".";
                    $uploadOK=1;
     
                } else {
     
                    echo"Le fichier n'est pas une image.";
                    $uploadOK=0;
                }
            }
     
            // Je vérifie si l'image existe
            if(file_exists($target_file)){
     
                echo"le fichier existe déjà";
                $uploadOK=0;
            }
            //Je vérifie la taille de l'image
            if($_FILES["photo"]["size"] > 50000000000){
     
                echo "Votre fichier est trop gros";
                $uploadOK=0;
            }
            //J'autorise certains type de formats
            if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType !="jpeg" && $imageFileType !="gif"){
     
                echo"Uniquement les formats JPG, JPEG, PNG & GIF sont autorisés.";
                $uploadOK= 0;
            }
            //Si la variable uploadIsOK est à 0, renvoyer une erreur d'upload
            if($uploadOK==0){
     
                echo "Votre fichier n'a pas été uploadé";
            //Si tout est ok, je tente un upload de l'image
            } else {
                //A ce moment là, créer une condition avec comme paramètre, la destination actuelle de l'image et en deuxième paramètre, le dossier de destination futur
                if(move_uploaded_file($_FILES["photo"]["tmp_name"], $target_file)){
                    //Indiquer que le fichier a bien été uploadé
                    echo"Le fichier ".basename($_FILES["photo"]["name"]). " a bien été uploadé.";
                } else {
     
                    echo"Il y a une erreur lors de l'upload du fichier";
                }
            } 
     
            $nom=htmlentities($_POST['nom']);
            $prenom=htmlentities($_POST['prenom']);
            $pseudo=htmlentities($_POST['pseudo']);
            $email=htmlentities($_POST['email']);
            $sexe=htmlentities($_POST['sexe']);
            $dateNaissance=htmlentities($_POST['dateNaissance']);
            //$id=htmlentities($_POST['id']);
            $photo=$_FILES['photo']['name'];
            //J'utilise ici la méthode plus moder nbe de hashage de mot de passe
            //$pass=password_hash($_POST['pass'], PASSWORD_DEFAULT);
            $pass=htmlentities($_POST['pass']);
            //$region=htmlentities($_POST['region']);
     
            //Toujours le problème de l'id du membre
            $insertMembre="INSERT INTO 'member'('id', 'name', 'firstname', 'gender', 'nickname', 'email', 'password', 'birthdayDate', 'profilePhoto', 'research', 'banned', 'id_region') VALUES (3,name='$nom',firstname='$prenom',gender='$sexe',nickname='$pseudo',email='$email',password='$pass',birthdayDate='$dateNaissance',profilePhoto='$photo',NULL,0,NULL);";
     
            $execInsertMembre=mysqli_query($connect,$insertMembre);
     
        }
     
     
    ?>
     
    <!DOCTYPE html>
    <html lang="fr">
    <head>
        <meta charset="utf-8">
        <title>Bienvenue nouvel(le) arrivant(e)</title>
        <link rel="stylesheet" type="text/css" href="../vendor/bootstrap/dist/css/bootstrap.css">
    </head>
    <body>
     
        <header>
     
        <h1>Bienvenue nouvel(le) arrivant(e)!</h1>
     
        </header>
     
        <section>
     
        <form action="membre.php" method="post" enctype="multipart/form-data">
     
            <p>
                <label>Votre nom :</label>
                <input type="text" name="nom" placeholder="Votre nom" value="<?php $execInsertMembre->name; ?>" required/>
            </p>
     
            <p>
                <label>Votre prénom :</label>
                <input type="text" name="prenom" placeholder="Votre prenom" value="<?php $execInsertMembre->firstname; ?>" required/>
            </p>
     
            <p>
                <label>Votre sexe :</label>
                <input type="radio" name="sexe" value="Homme"/>
                Homme
                <input type="radio" name="sexe" value="Femme"/>
                Femme
            </p>
     
            <p>
                <label>Votre pseudo :</label>
                <input type="text" name="pseudo" placeholder="Votre pseudo" value="<?php $execInsertMembre->nickname;?>" required/>
            </p>
     
            <p>
                <label>Votre email :</label>
                <input type="email" name="email" placeholder="Votre email" value="<?php $execInsertMembre->email ?>" required/>
            </p>
     
            <p>
                <label>Votre mot de passe :</label>
                <input type="password" name="pass" placeholder="Votre mot de passe" value="<?php $execInsertMembre->password?>" required/>
            </p>
     
            <p>
                <label>Votre date de naissance :</label>
                <input type="date" name="dateNaissance" placeholder="Votre date de Naissance" value="<?php $execInsertMembre->birthdayDate?>" required/>
            </p>
     
            <!--Le but ici est de renvoyer l'image vers la section backOffice
            -->
            <p>
                <label>Votre photo de profil :</label>
                <!--Il y aura un input soit de type img ou soit de type file afin de renvoyer l'image
                -->
                <!--Il y aura un input de type submit et un renvoi vers la base de donnée
                -->
                <label><img src="../photoUser/<?php echo $execInsertMembre->profilePhoto;?>" width="150" height="100"/>
                </label>
     
                <input type="file" name="photo"/>
                <input type="submit" name="Envoyer">
            </p>
     
        </form>
     
        </section>
        <script type="text/javascript" src="../vendor/jquery/dist/jquery.js"></script>
        <script type="text/javascript" src="../vendor/bootstrap/dist/js/bootstrap.js"></script>
    </body>
    </html>

  2. #2
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Pour la mise en forme du code php il faut utiliser le "bouton" # qui va donner [ CODE ][ /CODE ] puis modifier [ CODE ] en [ CODE=php ].
    * j'ai mis un espace après [ et avant ] pour éviter que le forum interprète les tags.

    Pour l'erreur... et bien il faudrait peut être indiquer la ligne où elle se trouve. Non ? Donner le plus d'éléments qui aideront à comprendre ce que tu veux faire et permettront de ne pas poser certaines questions.

    Déjà une chose. Ton query dans $insertMembre est faux. Tu fais un mix de syntaxe d'insert et d'update. C'est peut être pas la cause de ton erreur mais c'est déjà ça.


    Pour l'urgence... Celles et ceux qui répondent le font sur leur temps libre ils passent ici ou pas. Trouvent le problème intéressant ou pas. Bref je ne pense pas que mettre "urgent" fasse que les gens se bousculent pour répondre surtout qu'il y a pas mal de lignes.

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    En complément des remarques de badaze, l'erreur php te donne la ligne de l'erreur. Donc tu te rends à cette ligne et tu devrais trouver l'objet qui sur le principe devrait être sous cette forme : objet->propriete.
    Et donc php te dis qu'à cet instant du script que "objet" n'est pas un objet.

    Il semble que cet objet se nomme $execInsertMembre et effectivement puisque je vois dans ton code $execInsertMembre=mysqli_query($connect,$insertMembre); et qu'il s'agit d'une requête d'insertion, tu pourras lire en consultant la doc mysqli :

    Citation Envoyé par manuel php
    Valeurs de retour

    Retourne FALSE en cas d'échec. Pour des requêtes SELECT, SHOW, DESCRIBE ou EXPLAIN réussies, mysqli_query() retournera un objet mysqli_result. Pour les autres types de requêtes ayant réussi, mysqli_query() retournera TRUE.
    Au passage tu devrais utiliser pdo plutôt que mysqli, c'est beaucoup plus pratique.

    Sinon il y a aussi cette solution d'upload prête à l'emploi qui possède un exemple de formulaire d'inscription avec photo jointe et des fonctionnalités avancées : une requête ajax vérifie avant l'envoi du formulaire, la validité des champs dont l'unicité du mail par exemple, et le visiteur peut aussi recadrer sa photo avant l'upload.

Discussions similaires

  1. problème d'insertion de date mysql php
    Par glodybiss4 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/01/2012, 15h43
  2. probléme d'insertion avec java mysql
    Par ulysse031 dans le forum JDBC
    Réponses: 1
    Dernier message: 02/12/2007, 00h33
  3. [PHP-JS] Problème d'insertion du php
    Par roots_man dans le forum Langage
    Réponses: 4
    Dernier message: 10/10/2006, 22h02
  4. Problème antre ancienne version php/mysql et nouvelle
    Par yannicketolga dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 30/03/2006, 17h06
  5. [SGBD] [Problème insertion variable php/mysql]
    Par vincedjs dans le forum Installation
    Réponses: 20
    Dernier message: 08/02/2006, 16h41

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