Discussion: Pas de retour de données [PHP 7]

  1. #1
    Membre à l'essai Avatar de Yvon73
    Homme Profil pro
    reconversion développeur web
    Inscrit en
    juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : reconversion développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juillet 2014
    Messages : 30
    Points : 20
    Points
    20

    Par défaut Pas de retour de données

    Bonjour,

    Un petit soucis me mène à vous interroger

    Quand je valide mon formulaire de retour, je n'arrive pas à récupérer les infos du formulaire modifiés. Mon formulaire réapparaît, mais vide . var_dump reste à null et print_r reste vide

    Un petit coup de main ne sera pas de refus

    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
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    <?php
     
    require '../../access/include/inc_connexion.php';
     
    // Fonction de nettoyage des informations reçus
    function controleDonnees($data) {
            $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
    }
     
        /*
         * Les données de l'item ont été modifiées
         * et sont sauvegardées dans la base de
         * données, après vérifications.
        */
     
     
     
    if (!empty($_GET['pays_id'])) {
            $id = controleDonnees($_GET['pays_id']);
    }
     
        $paysError = $capitaleError = $infosError = $imageError = $pays = $capitale = $infos = $upload = "";
     
    if (!empty($_POST)) {
            $id         = controleDonnees($_POST['pays_id']);
    $pays       = controleDonnees($_POST['pays']);
    $capitale   = controleDonnees($_POST['capitale']);
    $infos      = controleDonnees($_POST['infos_pays']);
    $upload     = controleDonnees($_FILES['image']['name']);
    $imagePath  = '../../access/img/pays'. basename($upload);
    $extensions = pathinfo($imagePath, PATHINFO_EXTENSION);
     
    if (empty($pays)) {
                $paysError  = 'Le nom du pays doit être remplie';
    $notError   = FALSE;
    }
            if (empty($capitale)) {
                $capitaleError  = 'Le nom de la capitale doit être remplie';
    $notError       = FALSE;
    }
            if (empty($infos)) {
                $infosError = 'Donner un minimum d\'infos, c\'est sympa de connaître une autre ville';
    $notError   = FALSE;
    }
     
            // Si l'input file reste vide, l'image d'origine reste
    if (empty($upload)) {
                $notUpdate      = FALSE;
    } else {
                $notUpdate      = TRUE;
    $uploadSuccess  = TRUE;
     
    // Définitions des types
    if ($extensions != "jpg" && $extensions != "jpeg" && $extensions != "png" && $extensions != "gif" && $extensions != "svg") {
                    $extensions_autorisees  = array('jpg', 'jpeg', 'png', 'gif', 'svg');
    $extensions_mime        = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif', 'image/svg');
    $nom_upload             = $_FILES[$upload]['name'];
    $type                   = strtolower(pathinfo($nom_upload[$upload], PATHINFO_EXTENSION));
     
    // Récupération du type MIME
     
    $source_upload  = $_FILES[$upload]['tmp_name'];
    $type_mime      = mime_content_type($source_upload);
     
    // Contrôle extensions
    if (!in_array($extensions, $extensions_autorisees)) {
                        $imageError = "Les fichiers autorises sont: .jpg, .jpeg, .png, .gif, .svg";
    }
                    if (!in_array($type_mime, $extensions_mime)) {
                        $imageError = 'Le fichier n\'est pas autorisé';
    }
                    $uploadSuccess = FALSE;
    }
     
                // Récupération du nom, de l'extension du fichier et contrôle fichier existant
    if (file_exists($imagePath)) {
                    $imageError     = 'Le fichier est dèjà présent';
    $uploadSuccess  = FALSE;
    }
     
                // Contrôle taille du fichier
    if ($taille_upload  = $_FILES[$upload]['size']) {
     
                    // 1048000 Octets = 1 Mo+
    $taille_max = "1048000";
     
    if ($taille_upload >= $taille_max) {
                        $imageError = 'La taille du fichier est de ' . $taille_upload . ' octets et dépasse la taille autorisé de ' . $taille_max . 'octets';
    }
     
                    $uploadSuccess = FALSE;
    }
     
                if ($uploadSuccess) {
                    if (!move_uploaded_file($_FILES['image']['tmp_name'], $imagePath)) {
                        $imageError     = 'Il y a eu une erreur lors de l\'upload';
    $uploadSuccess  = FALSE;
    }
                }
            }
     
            if (($notError && $notUpdate && $uploadSuccess) || $notError && $notUpdate) {
     
                // Connexion à la base et préparation de la requête
    $db = Database::connect();
    if ($notUpdate) {
                    $statement  = ('UPDATE devoirphp3.pays SET pays = ?, capitale = ?, infos_pays = ?, drapeau = ? WHERE id = ?');
    $requete    = $db->prepare($statement);
    $requete->execute(array($pays, $capitale, $infos, $upload, $id));
    }
                else
    {
                    $statement  = ('UPDATE devoirphp3.pays SET pays = ?, capitale = ?, infos_pays = ? WHERE id = ?');
    $requete    = $db->prepare($statement);
    $requete->execute(array($pays, $capitale, $infos, $id));
    }
                Database::disconnect();
    header("Location: update.php");
     
    }
            elseif ($notUpdate && $uploadSuccess)
            {
                $db = Database::connect();
    $statement  = ('SELECT * FROM devoirphp3.pays WHERE id = ?');
    $requete    = $db->prepare($statement);
    $requete->execute(array($id));
    while ($item    = $requete->fetch()) {
                    $upload     = $item['drapeau'];
    }
                Database::disconnect();
    }
        }
        else
    {
            $db = Database::connect();
    $statement  = ('SELECT * FROM devoirphp3.pays WHERE id = ?');
    $requete    = $db->prepare($statement);
    $requete->execute(array($id));
    while ($item    = $requete->fetch()) {
                $pays       = $item['pays'];
    $capitale   = $item['capitale'];
    $infos      = $item['infos_pays'];
    $upload     = $item['drapeau'];
    }
            Database::disconnect();
    }
     
        /***************************************************************************************************************/
        /***************************************************************************************************************/
     
    include '../../access/include/inc_head_2.php';
     
    // Titre de la page = Nom du pays
    echo '<title>' . $pays . '</title>
        </head>
     
          <body>
             <main class="container_24">
                <header class="grid_24">
                        <h1 id="titre"><img src = "../../access/img/europe.png" width = "70" height = "auto" alt = "Drapeau européen">Modification du pays : ' . $pays . '<img src = "../../access/img/europe.png" width = "70" height = "auto" alt = "Drapeau européen"></h1>
                    </header>
                    <!-- Passage à la ligne du tableau -->
                    <span class="clear"></span>
     
                    <!-- Formulaire d\'affichage -->
                    <section>
                        <form method="post" enctype="multipart/form-data" action="updatePays.php">
                            <article id="texte" class="grid_15">
                                <label class="grid_6 modifier" for="pays">Nom du pays : </label>
                                <input class="grid_5 modifier" id="pays" type="text" name="pays" value="' . $pays . '" /><br />
                                <!-- Passage à la ligne du tableau -->
                                <span class="clear"></span>
                                <label class="grid_6 modifier" for="capitale">Nom de la capitale : </label>
                                <input class="grid_5 modifier" id="capitale" type="text" name="capitale" value="' . $capitale . '" /><br />
                                <article class="texte grid_15 modifier">
                                    <label for="infos">Information sur la ville</label><br /><br />
                                    <textarea class="modifier" id="infos" name="infos" cols="75" rows="40">' . $infos . '</textarea><br />
                                </article>
                            </article>
     
                            <!-- Création bloc menu -->
                            <aside id="navigation" class="push_3 grid_5">
                                <h3>Menu</h3>
                                <ul>
                                    <li><a href = "../../index.php">&#10036 Retour à l\'accueil</a></li>
                                    <li><a href = "admin.php">&#10036 Retour</a></li>
                                </ul>
     
                                <!-- Modification ou ajout du drapeau du pays -->
                                <label for="upload">Drapeau du pays</label>
                                <img id="pics" src="' . $upload . '" width="100" height="auto" alt="Drapeau du pays" />
                                <input class="grid_6" type="file" name="upload" size="50" />
                                <p>image 1 Mo maxi, format PNG, GIF, SVG</p>
                            </aside>
                            <!-- Passage à la ligne du tableau -->
                            <span class="clear"></span>
                            <input type="hidden" name="pays_id" value="' . $id . '">
                            <input type="submit" name="validation" value="Valider les modifications" />
                        </form>
                    </section>
                    <!-- Retour à la ligne du tableau -->
                    <span class="clear"></span>';
     
    // Inclusion du pied de page
    include '../../access/include/inc_footer.php';

  2. #2
    Membre actif Avatar de jisig
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2014
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2014
    Messages : 112
    Points : 225
    Points
    225

    Par défaut Ton serveur affiche les erreurs php ?

    Ton serveur affiche les erreurs ?

    sinon tu peux aussi commenter tout le traitement de ton formulaire et voir si il t'affiche le print_r ?

    Jisig.
    Même une feuille de papier est plus légère si on la porte à deux.

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 434
    Points : 42 312
    Points
    42 312

    Par défaut

    J'ai pris ton code exact, j'ai seulement retiré la partie bdd et les include et le formulaire réapparait bien avec les champs remplis.
    Tu as essayé de simplifier ton code à l'essentiel pour circonscrire le problème ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre à l'essai Avatar de Yvon73
    Homme Profil pro
    reconversion développeur web
    Inscrit en
    juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : reconversion développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juillet 2014
    Messages : 30
    Points : 20
    Points
    20

    Par défaut

    Bonsoir,

    Aucune erreur n’apparaît jisig, les print_r reste vide.

    Sabotage, j'ai essayé de simplifier, mais j'été partis sur les vérifes du $_FILES, pas pensé au reste.

    Pense tu que si je sépare le script en deux je résoudrais le problème ?

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

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 434
    Points : 42 312
    Points
    42 312

    Par défaut

    Non découper le script ne résoudra pas le problème.
    Je suppose que si tu écris un formulaire tout simple, il fonctionne. Donc en rapprochant ton code qui ne fonctionne pas du formulaire tout simple, tu finiras par trouver la partie qui pose problème.

    Au passage ta fonction controleDonnees() des données est inutile : le stripslashes ne se fait plus depuis PHP5 et l'abandon des magic_quotes et le htmlspecialchars() ne devrait pas être fait pour l'insertion dans la base de données mais pour l'affichage uniquement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre à l'essai Avatar de Yvon73
    Homme Profil pro
    reconversion développeur web
    Inscrit en
    juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : reconversion développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juillet 2014
    Messages : 30
    Points : 20
    Points
    20

    Par défaut

    Entendu Sabotage, le script de base fonctionne, quand j'appel un pays tout s'affiche correctement, c'est uniquement quand je fais appel de l'update que je n'es plus rien. Es ce que la récupération des données du $_post est correct, car même si je fais un print_r($_post) en tout début de script, le tableau reste vide et je comprend pas pourquoi, vu qu'il n'y a encore aucun traitement effectué à ce moment la.

    Pour la fonction, je note et supprime.

    Je voulais savoir pour les requêtes, que ce soit pour le SELECT ou le UPDATE je suis obligé d'écrire le nom de la base et la table, chez moi, sinon j'ai droit à une erreur de table introuvable. S'agit il d'une "contrainte" de PhpStorm, PHP 7 ou de ma connexion à la bdd, en sachant que que je suis sur une plateforme serveur WampStack de Bitnami.

    Je pose beaucoup de question, mais à force je doute de tout , rare sont les exemples que j'arrive à reproduire sans erreurs, c'est décourageant à force même si je m'efforce de comprendre pourquoi.

    Je vais tester comme tu l'indique, en espérant trouver.

    Encore merci, pour le temps consacré à mon problème

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 434
    Points : 42 312
    Points
    42 312

    Par défaut

    je suis obligé d'écrire le nom de la base et la table
    Tu as bien cette base indiquée lors de la connexion ?
    print_r($_post)
    Attention c'est en majuscules
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre à l'essai Avatar de Yvon73
    Homme Profil pro
    reconversion développeur web
    Inscrit en
    juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : reconversion développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juillet 2014
    Messages : 30
    Points : 20
    Points
    20

    Par défaut

    Oui oui, la demande de connexion indique le nom de la base et le $_POST et en majuscule.

    Me penche sur le problème demain matin, pas la tête à réfléchir ce soir

  9. #9
    Membre à l'essai Avatar de Yvon73
    Homme Profil pro
    reconversion développeur web
    Inscrit en
    juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : reconversion développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juillet 2014
    Messages : 30
    Points : 20
    Points
    20

    Par défaut

    Bonjour,

    Après avoir revue le code, mon formulaire à l'air de fonctionner. Je l'es testé en faisant fonctionner les conditions, tous semble aller.

    Sabotage ou tout autres, pourrais tu, à l'occasion bien sur, jeter un œil sur mon code et me dire si celui ci est correct ou bon à jeter

    Je te/vous remercie à l'avance

    Attention les œils

    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
    183
    184
    185
    186
    187
    188
    <?php
     
        require '../../access/include/inc_connexion.php';
     
    /*
         * Les données de l'item ont été modifiées
         * et sont sauvegardées dans la base de
         * données, après vérifications.
        */
     
    if (!empty($_GET['pays_id'])) {
            $id = ($_GET['pays_id']);
    }
     
        if (!empty($_POST) && !empty($_FILES)) {
            $id         = ($_POST['pays_id']);
    $pays       = ($_POST['pays']);
    $capitale   = ($_POST['capitale']);
    $infos      = ($_POST['infos']);
    $upload     = ($_FILES['upload']['name']);
     
    if (empty($pays)) {
                $paysError      = 'Le nom du pays doit être remplie';
    }
            if (empty($capitale)) {
                $capitaleError  = 'Le nom de la capitale doit être remplie';
    }
            if (empty($infos)) {
                $infosError     = 'Donner un minimum d\'infos, c\'est sympa de connaître une autre ville';
    }
     
            if ($upload) {
                // Contrôles du fichier téléchargé
    $extensionsAutorisees   = array('jpeg', 'jpg', 'gif', 'png', 'svg');
    $typesMimeAutorises     = array('image/jpeg', 'image/gif', 'image/png', 'image/svg+xml');
    $tailleFichierMax       = 1048000; // 1024000 octets = 1 Mo
    $sourceUpload           = '../../access/img/pays';
     
    // Récupération du nom de fichier
    $nomFichier = $_FILES['upload']['name'];
     
    // Récupération de l'extension du fichier après mise en minuscules
    $extensionFichier = strtolower(pathinfo($nomFichier, PATHINFO_EXTENSION));
     
    // Récupération du type MIME
    $fichierUploadTmp = $_FILES['upload']['tmp_name'];
    $typeMimeFichier  = mime_content_type($fichierUploadTmp);
     
    // Récupération de la taille du fichier
    $tailleFichier = $_FILES['upload']['size'];
     
    // Vérification de l'extension et du type MIME
    if (!in_array($extensionFichier, $extensionsAutorisees)) {
                    echo 'Le fichier n\'est pas autorisé';
     
    if (!in_array($typeMimeFichier, $typesMimeAutorises)) {
                        echo 'Ce n\'est pas le bon type de fichier';
    }
                }
     
                // Vérification de la taille du fichier
    if ($tailleFichier > $tailleFichierMax) {
                    echo 'Le fichier dépasse la taille autorisé de ' . $tailleFichierMax . ' octets. Ca taille est de ' . $tailleFichier . ' octets';
    }
     
                if (!file_exists($sourceUpload.'/'.$nomFichier)) {
     
                    // Enregistrement dans le répertoire finale
    $destinationUpload = $sourceUpload . '/' . $nomFichier;
    move_uploaded_file($fichierUploadTmp, $destinationUpload);
     
    // Connexion à la base et préparation de la requête
    $db = Database::connect();
    $statement = ('UPDATE devoirphp3.pays SET pays = ?, capitale = ?, infos_pays = ?, drapeau = ? WHERE id = ?');
    $requete = $db->prepare($statement);
    $requete->execute(array($pays, $capitale, $infos, $destinationUpload, $id));
    Database::disconnect();
    header("Location: admin.php");
    }
                else
    {
                    echo 'Le fichier est déjà présent dans la base';
    }
            }
        }
        elseif (!empty($_POST) && empty($_FILES))
        {
            $id         = ($_POST['pays_id']);
    $pays       = ($_POST['pays']);
    $capitale   = ($_POST['capitale']);
    $infos      = ($_POST['infos']);
     
    if (empty($pays)) {
                $paysError      = 'Le nom du pays doit être remplie';
    }
            if (empty($capitale)) {
                $capitaleError  = 'Le nom de la capitale doit être remplie';
    }
            if (empty($infos)) {
                $infosError     = 'Donner un minimum d\'infos, c\'est sympa de connaître une autre ville';
    }
     
     
            $db         = Database::connect();
    $statement  = ('UPDATE devoirphp3.pays SET pays = ?, capitale = ?, infos_pays = ? WHERE id = ?');
    $requete    = $db->prepare($statement);
    $requete->execute(array($pays, $capitale, $infos, $id));
    Database::disconnect();
    header("Location: admin.php");
    }
        else
    {
            $db = Database::connect();
    $statement      = ('SELECT * FROM devoirphp3.pays WHERE id = ?');
    $requete        = $db->prepare($statement);
    $requete->execute(array($id));
    while ($item    = $requete->fetch()) {
                $pays       = $item['pays'];
    $capitale   = $item['capitale'];
    $infos      = $item['infos_pays'];
    $upload     = $item['drapeau'];
    }
            Database::disconnect();
    }
     
        echo '<pre>';
    print_r($_POST);
    print_r($_FILES);
    echo '</pre>';
     
    /***************************************************************************************************************/
        /***************************************************************************************************************/
     
    include '../../access/include/inc_head_2.php';
     
    // Titre de la page = Nom du pays
    echo '<title>' . $pays . '</title>
        </head>
     
          <body>
             <main class="container_24">
                <header class="grid_24">
                        <h1 id="titre"><img src = "../../access/img/europe.png" width = "70" height = "auto" alt = "Drapeau européen">Modification du pays : ' . $pays . '<img src = "../../access/img/europe.png" width = "70" height = "auto" alt = "Drapeau européen"></h1>
                    </header>
                    <!-- Passage à la ligne du tableau -->
                    <span class="clear"></span>
     
                    <!-- Formulaire d\'affichage -->
                    <section>
                        <form method="post" enctype="multipart/form-data" action="updatePays.php">
                            <article id="texte" class="grid_15">
                                <label class="grid_6 modifier" for="pays">Nom du pays : </label>
                                <input class="grid_5 modifier" id="pays" type="text" name="pays" value="' . $pays . '" /><br />
                                <!-- Passage à la ligne du tableau -->
                                <span class="clear"></span>
                                <label class="grid_6 modifier" for="capitale">Nom de la capitale : </label>
                                <input class="grid_5 modifier" id="capitale" type="text" name="capitale" value="' . $capitale . '" /><br />
                                <article class="texte grid_15 modifier">
                                    <label for="infos">Information sur le pays</label><br /><br />
                                    <textarea class="modifier" id="infos" name="infos" cols="75" rows="40">' . $infos . '</textarea><br />
                                </article>
                            </article>
     
                            <!-- Création bloc menu -->
                            <aside id="navigation" class="push_3 grid_5">
                                <h3>Menu</h3>
                                <ul>
                                    <li><a href = "../../index.php">&#10036 Retour à l\'accueil</a></li>
                                    <li><a href = "admin.php">&#10036 Retour</a></li>
                                </ul>
     
                                <!-- Modification ou ajout du drapeau du pays -->
                                <label for="upload">Drapeau du pays</label>
                                <img id="pics" src="' . $upload . '" width="100" height="auto" alt="Drapeau du pays" />
                                <input class="grid_6" type="file" name="upload" size="50" />
                                <p>image 1 Mo maxi, format JPEG, PNG, GIF, SVG</p>
                            </aside>
                            <!-- Passage à la ligne du tableau -->
                            <span class="clear"></span>
                            <input type="hidden" name="pays_id" value="' . $id . '">
                            <input type="submit" name="update" value="Valider les modifications" />
                        </form>
                    </section>
                    <!-- Retour à la ligne du tableau -->
                    <span class="clear"></span>';
     
    // Inclusion du pied de page
    include '../../access/include/inc_footer.php';

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 434
    Points : 42 312
    Points
    42 312

    Par défaut

    "Ca taille" => "Sa taille"

    Attention quand tu réaffiches les données venant d'un utilisateur, il faut utiliser htmlspecialchars().

    Dans toute ta partie HTML à la fin du script tu pourrais sortir de PHP plutôt que de faire un enorme echo.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre à l'essai Avatar de Yvon73
    Homme Profil pro
    reconversion développeur web
    Inscrit en
    juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : reconversion développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juillet 2014
    Messages : 30
    Points : 20
    Points
    20

    Par défaut

    Entendu Sabotage, orthographe corrigé et je corrige le code en fonction de t'es recommandations.


    Une petite question qui peu m'éviter d'être complètement chauve , est il possible de faire un UPDATE sur 2 et 3 tables en même temps, si oui faut-il faire comme le SELECT avec JOIN à la suite ou d'une autre manière.

    Pour mieux comprendre j'ai 3 tables pays, régions, villes. Dans la table régions je fais un JOIN avec la table pays et dans la table villes, je fais 2 JOIN, un avec pays et l'autre avec régions. Quand je modifie une villes par exemple, je voudrais pouvoir modifier la région ou le pays voir les deux. (C'est peut être plus parlant)

    Si c'est non suis dans la m****

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 434
    Points : 42 312
    Points
    42 312

    Par défaut

    et dans la table villes, je fais 2 JOIN, un avec pays et l'autre avec régions
    Ta ville devrait être uniquement liée à une région qui est elle même liée à un pays.

    Pour la question, oui tu peux faire un UPDATE dans un jointure.
    Mais je suis un peu inquiet de la logique de ton interface : l'utilisateur va en même temps modifier le nom du pays, de la région et de la ville ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre à l'essai Avatar de Yvon73
    Homme Profil pro
    reconversion développeur web
    Inscrit en
    juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : reconversion développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juillet 2014
    Messages : 30
    Points : 20
    Points
    20

    Par défaut

    C'est dans l'espace d’administration uniquement, pour pouvoir ajouter le nom du pays ou de la région si ils n'existes pas dans la bdd à la création d'une ville par exemple.

    Si je veux créer Stockholm et que je n'ai pas Suède dans la bdd, je suis coincé. En laissant le droit de modifier, je peu créer un item Suède et un autre pour le conté de Stockholm plus tard.

    Autrement je vois pas trop comment pouvoir rentrer un item ville ou region si le pays n'est pas encore en bdd, sans avoir un formulaire de création de 3 pieds de long.

    Enfin c'est le raisonnement que j'ai eu, si tu as une autre idée je suis preneur.

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 434
    Points : 42 312
    Points
    42 312

    Par défaut

    Tu parles d'insertion la, pas d'UPDATE donc je ne te suis plus.

    Dans le cas ou tu dois créer les 3 élements, ça fait 3 requêtes :
    - INSERT du pays
    - INSERT de la région dans le pays créé
    - INSERT de la ville dans la région créée
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre à l'essai Avatar de Yvon73
    Homme Profil pro
    reconversion développeur web
    Inscrit en
    juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : reconversion développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juillet 2014
    Messages : 30
    Points : 20
    Points
    20

    Par défaut

    Si je crée un item pays, je n'est pas grand chose à modifier hormis le texte des infos du pays.

    En créant une région ou une ville, que je veux relier au pays pour les deux et je rajoute une relation avec la région pour ce est d'un item ville. Si au moment ou je créer une ville(exemple), je doit la relier à un pays et à une région, si ils existent, je n'es pas de raison de modifier ces champs par la suite, la ville ne devrait pas déménager

    Par contre si quand je créer la ville et que je n'est pas la région voir le pays et la région, le UPDATE me servira par la suite, une fois l'item région ou pays créer, pour mettre la ville à jour.

    Je raisonne peut être pas comme il faut ?

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 434
    Points : 42 312
    Points
    42 312

    Par défaut

    Ca donne ça alors :
    - Interface de création de ville => INSERT INTO ville ....
    - Interface de création de pays => INSERT INTO pays ....
    - Interface de modification de ville => UPDATE ville SET pays_id = xxxx WHERE ville_id = xxxxx

    Il n'y a pas de jointure.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre à l'essai Avatar de Yvon73
    Homme Profil pro
    reconversion développeur web
    Inscrit en
    juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : reconversion développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juillet 2014
    Messages : 30
    Points : 20
    Points
    20

    Par défaut

    D'accord, je vais essayer de créer tout ça tranquillement.

    Merci Sabotage

  18. #18
    Membre éclairé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2011
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : juin 2011
    Messages : 401
    Points : 705
    Points
    705

    Par défaut

    Salut, mon grain de sel.

    - vous testez que le fichier ait été "uploadé" et le même code à quelques exceptions près est répété quand ce n'est pas le cas, il y'a moyen de faire un seul update.
    - Trop de parenthèses superflues autour des $_POST et $_GET, et des requêtes
    - Vous devez gérer le cas ou vous n'aurez pas pays_id dans URL, tout le code de MàJ devrait être dans la condition. Par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (!empty($_GET['pays_id'])) {
         $id = $_GET['pays_id'];
         //reste du code
    } else {
       // Erreur
    }
    - Ouvrez une seule fois la connexion Database::connect();, me demande bien que contient le disconnect.
    - Pour les erreurs (actuellement dans votre code, les variables concernées ne servent pas à grande chose), vous pouvez utiliser un tableau $erreurs = []; et à chaque erreur $erreurs[] = 'message';, tester s'il n'est pas vide et faire la MàJ

    Je sais que ça fait beaucoup en même temps et même si votre code fonctionne comme vous voulez , pensez-y.
    Le bienfait n'est jamais perdu

  19. #19
    Membre à l'essai Avatar de Yvon73
    Homme Profil pro
    reconversion développeur web
    Inscrit en
    juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : reconversion développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juillet 2014
    Messages : 30
    Points : 20
    Points
    20

    Par défaut

    Bonsoir Willy_K

    Je te remercie pour ton retour. désolé je tutoie après tout on est tous pareils, la différence c'est le respect de chacun.

    Je suis encore maladroit dans l'établissement de mon code et tout conseil est bon à prendre. Pour les messages d'erreurs, je pensai à la base faire autrement et avec mon soucis de formulaire, je n'es plus pensé à les reprendre. Je m'en serais aperçu à un moment mais quand, mystère.

    Pour le disconnect c'est un simple self::$connection = NULL.

    Pour le reste des remarques, je vais voir comment je peu changer ça, par contre comment faire pour les parenthèses, j'ai du mal à voir comment les éviter. Surchauffe de cafetière en perspective

  20. #20
    Membre éclairé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2011
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : juin 2011
    Messages : 401
    Points : 705
    Points
    705

    Par défaut

    Pas de soucis pour le tutoiement..
    Pour les parenthèses,
    par exemple $id = ($_GET['pays_id']); devient $id = $_GET['pays_id'];, idem pour les $_POST . Pour les requêtes
    ('UPDATE ....'); => 'UPDATE....';, dans ces cas là les parenthèses ne sont pas du tout requises, ça surcharge le code.

    Pour le reste des remarques, c'est bien de partir à son rythme (en mode reconversion d'après le profil), mais quand on peut mieux faire (et je comprends que ça prenne souvent du temps), c'est plus simple pour la suite.
    Le bienfait n'est jamais perdu

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/06/2006, 10h23
  2. [SQL][C#] Pas d'accès aux données d'une base SQL
    Par ridd21 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 20/06/2006, 10h46
  3. Réponses: 2
    Dernier message: 30/09/2005, 15h48
  4. pas de retour si count = 0
    Par pittacos dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/08/2005, 11h11
  5. DBListBox n'affiche pas ma base de données !
    Par vins91 dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/03/2005, 21h35

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