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

PHP & Base de données Discussion :

Modification et ajout de donnée depuis un formulaire [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut Modification et ajout de donnée depuis un formulaire
    Bonjour à tous,

    Voilà j'essaye de créer un panneau d'administration mais pour l'instant je n'arrive depuis ce fameux panneau juste à supprimer les offres de logement que j'ai inséré.

    J'aimerais savoir ou est le problème dans l'ajout et la modification des annonces ?

    Merci d'avance pour votre aide !

    Le code est un peu long enfin pas trop non plus mais suffisamment pour éviter de coller la source ici je joint donc les fichiers correspondants.

    Le fichier liste_offre.php qui permet d'afficher un panneau listant toutes les offres mais aussi deux boutons soit pour les modifier ou les supprimer.

    Le fichier rediger_offre.php qui est un formulaire qui permet soit la modification soit l'ajout d'offre dans la bdd.

    Le fichier admin.php qui est la page permettant de choisir soit d'effectuer la gestion des offres ou la gestion des news du site.

    Merci d'avance pour votre aide précieuse.
    Fichiers attachés Fichiers attachés

  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
    Par défaut
    Dans ton rediger_offre.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (isset($_GET['modifier_offre'])) 
          // aucun interet de proteger un chiffre ni avec mysql_real_escape_string ni avec htmlentities
          $retour = mysql_query('SELECT * FROM base_logement WHERE id=' . intval($_GET['modifier_offre']));
        while ($donnees = mysql_fetch_array($retour)) {    
     
            // tes données ne viennent pas de $_POST mais de la requête
    	$meuble = $donnee['meuble']);
    }
    ligne 124 tu as mis "contenu" au lieu de "description"
    ligne 116 tu as mis "loter" au lieu de "loyer"

    Pour toutes tes requêtes, c'est mysql_real_escape_string() qu'il faut utiliser sur les chaines et non addlslashes().

    Quand tu developpes, il faut afficher toutes les erreurs et controler tes variables.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut
    Merci pour ta réponse sabotage !

    J'ai corriger les erreurs effectivement que tu m'as indiqué mais il doit me rester un problème je n'arrive pas à récupérer les données de la bdd dans les champs du formulaires pour modifier une offre... cependant l'offre peut être modifier correctement.

    Et lors de la création d'une nouvelle offre j'ai le droit à une fameuse erreur :

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in rediger_offre.php on line 57

    Mais je ne vois pas ce que ça pourrait être
    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     
    <title>LOGI'EIPC</title>
     
    <meta name="robots" content="index, follow" />
    <meta name="revisit-after" content="21 days" />
    <meta name="author" content="" />
    <meta name="copyright" content="" />
    <meta name="rating" content="Global" />
    <meta http-equiv="imagetoolbar" content="no" />
    <meta name="Description" content="" />
    <meta name="Keywords" content="" />
    <meta name="abstract" content="" />
    <link type="text/css" rel="stylesheet" href="layout.css" title="default" media="all" />
    </head>
     
    <body id="rediger_news">
    <div id="main-wrapper" align="center">
     
    <div id="logo">
    <a href="index.html" title="Find a Property home">LOGI'<span>EIPC</span></a></div>
    <div id="nav-wrapper">
    <div id="navigation">
    <ul>
    <li><a href="../index.php" title="Accueil" id="home-link">Accueil</a></li>
    <li><a href="../services2.php" title="Information" id="info-link">Informations</a></li>
    <li><a href="../news.php" title="Les news" id="news-link">News</a></li>
    <li><a href="../offre2.php" title="Les offres" id="offres-link">Les offres</a></li>
    <li><a href="admin.php" title="services" id="admin-link">Administration</a></li>
    <li><a href="../contact.html" title="Une question ?" id="contact-link" class="last">Nous Contacter</a></li>
    </ul>
    </div>
     
    <div id="nav-right">
    </div>
    </div>
    <div class="clear"></div>
     
    <div id="content-area">
    <br />
    <div id="content-top"></div>
    <div id="content-main">
     
    <h3><a href="liste_offre.php">Retour à la liste des offres </a> &nbsp &nbsp <a href="admin.php">Retour à la page d'administration </a></h3>
     
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("base_logement");
     
    if (isset($_GET['modifier_offre'])) 
     
          $retour = mysql_query('SELECT * FROM base_logement WHERE id=' . intval($_GET['modifier_offre']));
     
        while ($donnees = mysql_fetch_array($retour)) 
    	{    
        $meuble = $donnees['meuble'];
        $loyer = $donnees['loyer'];
    	$distance = $donnees['distance'];
    	$superficie = $donnees['superficie'];
    	$description = $donnees['description'];
    	$prenom_proprio = $donnees['prenom_proprio'];
    	$nom_proprio = $donnees['nom_proprio'];
    	$rue = $donnees['rue'];
    	$code_postal = $donnees['code_postal'];
    	$ville = $donnees['ville'];
    	$num_fixe = $donnees['num_fixe'];
    	$id_offre = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
        }
     
    if (isset($_GET['modifier_offre'])) // Si on demande de modifier une offre
    {
        // On protège la variable "modifier_offre" pour éviter une faille SQL
        $_GET['modifier_offre'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_offre']));
        // On récupère les infos de la news correspondante
     
        $retour = mysql_query('SELECT * FROM base_logement WHERE id=\'' . $_GET['modifier_offre'] . '\'');
        $donnees = mysql_fetch_array($retour);
     
        // On place les champs dans des variables simples
    	$meuble = mysql_real_escape_string($_POST['meuble']);
        $loyer = mysql_real_escape_string($_POST['loyer']);
    	$distance = mysql_real_escape_string($_POST['distance']);
    	$superficie = mysql_real_escape_string($_POST['superficie']);
    	$description = mysql_real_escape_string($_POST['description']);
    	$prenom_proprio = mysql_real_escape_string($_POST['prenom_proprio']);
    	$nom_proprio = mysql_real_escape_string($_POST['nom_proprio']);
    	$rue = mysql_real_escape_string($_POST['rue']);
    	$code_postal = mysql_real_escape_string($_POST['code_postal']);
    	$ville = mysql_real_escape_string($_POST['ville']);
    	$num_fixe = mysql_real_escape_string($_POST['num_fixe']); 
    	$id_offre = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
     
    }
    else // C'est qu'on rédige une nouvelle news
    {
        // Les variables $titre et $contenu sont vides, puisque c'est une nouvelle offre
    	$id_offre = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
    	$meuble = '';
        $loyer = '';
    	$distance = '';
    	$superficie = '';
    	$description = '';
    	$prenom_proprio = '';
    	$nom_proprio = '';
    	$rue = '';
    	$code_postal = '';
    	$ville = '';
    	$num_fixe = '';
     
    }
    ?>
     
    <form action="liste_offre.php" method="post">
     
    <p align="center" bgcolor="" class="color">Type :</span> <br />
    <select name="meuble" size=1 value="<?php echo $meuble; ?>">
    <option selected>Type de logement<option>Studio <option>Appartement<option>Chambre<option>Maison<option>Gites</option> 
    </select>
    </p>
     
    <p align="center" bgcolor="" class="color">Meuble :</span> <br />
    <select name="meuble" size=1 value="<?php echo $meuble; ?>">
    <option selected>Meubler ? <option>Oui<option> non </option> 
    </select>
    </p>
     
    <p>Loyer : <br />   <input type="text" size="30" name="loyer" value="<?php echo $loyer; ?>" /></p> 
     
    <p>Distance :  <br /><input type="text" size="30" name="distance" value="<?php echo $distance; ?>" /></p>
     
    <p>Superficie : <br /> <input type="text" size="30" name="superficie" value="<?php echo $superficie; ?>" /></p>
     
    <p>Description : <br />
     
      <textarea name="description" cols="50" rows="10">
        <?php echo $description; ?>
        </textarea>
    	<br />
    </p>
     
    <p>Prénom du propriétaire : <br /> <input type="text" size="30" name="prenom_proprio" value="<?php echo $prenom_proprio; ?>" /></p>
     
     
    <p>Nom du propriétaire    : <br /> <input type="text" size="30" name="nom_proprio" value="<?php echo $nom_proprio; ?>" /></p>
     
    <p>Rue    : <br /> <input type="text" size="30" name="rue" value="<?php echo $rue; ?>" /></p>
     
    <p>code postale    : <br /> <input type="text" size="30" name="code_postal" value="<?php echo $code_postal ?>" /></p>
     
    <p>Ville    : <br /> <input type="text" size="30" name="ville" value="<?php echo $ville; ?>" /></p>
     
    <p>Numéro de téléphone fixe   : <br /> <input type="text" size="30" name="num_fixe" value="<?php echo $num_fixe; ?>" /></p>
     
     
    <input type="hidden" name="id_offre" value="<?php echo $id_offre; ?>" />
    <input type="submit" value="Envoyer" /> 
     
     
    </form>
    <br />
    </div>
    </div>
    </body>
    </html>

  4. #4
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 73
    Par défaut
    la ligne 55 la requête semble incorrecte essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $retour = mysql_query('SELECT * FROM base_logement WHERE id=" . intval($_GET["modifier_offre"])"');
    fais attention aux quote qui delimite

  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
    Par défaut
    C'est quoi la partie de code de la ligne 75 à la ligne 98 que tu as ajouté ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut
    Merci pour le message j'ai donc changer la requête mais j'ai un petit soucis :

    Avant changement de le requête la modification d'une annonce n'entrainer pas d'erreur maintenant j'ai ça :

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in rediger_offre.php on line 58

    et l'ajout d'une nouvelle offre me donne comme erreur :

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in rediger_offre.php on line 58

    Donc en fait la même erreur ce serait un problème venant de la requête alors ?

    j'ai modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $retour = mysql_query('SELECT * FROM base_logement WHERE id=' . intval($_GET['modifier_offre']));
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $retour = mysql_query('SELECT * FROM base_logement WHERE id=" . intval($_GET["modifier_offre"])"');
    Merci d'avance

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut
    Autant pour moi effectivement il y avait un petit doublon des lignes 75 à 98 !

    J'arrive à parfaitement récupérer donc les donnés de la base, j'arrive à supprimer et donc modifier.

    Le problème réside en ce qui concerne l'ajout d'offre... c'est d'ailleurs étrange parce qu'il me semble que ça à fonctionner mais je n'en n'est pas la certitude.

    Ce morceau de code dans liste_offre.php me pose problème :

    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
     
    <h2><a href="rediger_offre.php">Ajouter une annonce</a> &nbsp &nbsp <a href="admin.php">Retour à l'Administration</a> </h2>
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("base_logement");
    //-----------------------------------------------------
    // Vérification 1 : est-ce qu'on veut poster une nouvelle offre ?
    //-----------------------------------------------------
    //isset($_POST['meuble']) AND isset($_POST['loyer']) AND  isset($_POST['superficie']) AND isset($_POST['description'])
    //AND isset($_POST['prenom_proprio']) AND isset($_POST['nom_proprio']) AND isset($_POST['rue']) AND isset($_POST['code_postal']) AND isset($_POST['ville']) AND isset($_POST['num_fixe'])
    //AND isset($_POST['num_portable'])
     
     
    if (isset($_POST['meuble']) AND isset($_POST['loyer']) AND  isset($_POST['superficie']) AND isset($_POST['description']) 
    AND isset($_POST['prenom_proprio']) AND isset($_POST['nom_proprio']) AND isset($_POST['rue']) AND isset($_POST['code_postal']) AND isset($_POST['ville']) AND isset($_POST['num_fixe'])
    AND isset($_POST['num_portable']))
    {
    	echo 'test ok' ;
            $meuble = addslashes($_POST['meuble']);
            $loyer = addslashes($_POST['loyer']);
    	$distance = addslashes($_POST['distance']);
    	$superficie = addslashes($_POST['superficie']);
    	$description = addslashes($_POST['description']);
    	$prenom_proprio = addslashes($_POST['prenom_proprio']);
    	$nom_proprio = addslashes($_POST['nom_proprio']);
    	$rue = addslashes($_POST['rue']);
    	$code_postal = addslashes($_POST['code_postal']);
    	$ville = addslashes($_POST['ville']);
    	$num_fixe = addslashes($_POST['num_fixe']);
     
        // On vérifie si c'est une modification des offres ou pas
        if ($_POST['id_offre'] == 0)
        {
    		echo "nouvelle offre >> id_news ==0 ";
            // Ce n'est pas une modification, on crée une nouvelle entrée dans la table
           mysql_query("INSERT INTO base_logement VALUES('', '" . $meuble . "', '" . $loyer . "', '" . $distance . "', '" . $superficie . "', '" . $description . "', '" . $prenom_proprio . "','" . $nom_proprio . "','" . $rue . "','" .$code_postal . "', '" . $ville . "', '" . $num_fixe . "')");
        }
        else
        {
            // On protège la variable "id_offre" pour éviter une faille SQL
            $_POST['id_offre'] = addslashes($_POST['id_offre']);
            // C'est une modification, on met juste à jour le différents champs
            mysql_query("UPDATE base_logement SET meuble='" . $meuble . "', loyer='" . $loyer . "', distance='" . $distance . "', superficie='" . $superficie . "', description='" . $description . "', prenom_proprio='" . $prenom_proprio . "', nom_proprio='" . $nom_proprio . "', rue='" . $rue . "', code_postal='" . $code_postal . "', ville='" . $ville . "', num_fixe='" . $num_fixe . "' WHERE id='" . $_POST['id_offre'] . "'");
        }
    }
     
    //--------------------------------------------------------
    // Vérification 2 : est-ce qu'on veut supprimer l'offre ?
    //--------------------------------------------------------
    if (isset($_GET['supprimer_offre'])) // Si on demande de supprimer une offre
    {
        // Alors on supprime l'offre correspondante
        // On protège la variable "id_offre" pour éviter une faille SQL
        $_GET['supprimer_offre'] = addslashes($_GET['supprimer_offre']);
        mysql_query('DELETE FROM base_logement WHERE id=\'' . $_GET['supprimer_offre'] . '\'');
    }
    ?>
    <center>
    <table border=1>
    <tr>
    <th>Modifier</th>
    <th>Supprimer</th>
    <th>Type</th>
    <th>Meuble</th>
    <th>Loyer</th>
    <th>Distance</th>
    <th>Superficie</th>
    <th>Prenom_proprio</th>
    <th>Nom_proprio</th>
    <th>Rue</th>
    <th>Code Postale</th>
    <th>Ville</th>
    </tr>
    </center>
     
    <?php
    $retour = mysql_query('SELECT * FROM base_logement ORDER BY id DESC');
    while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
    {
    ?>
    <tr align="center">
    <td><?php echo '<a href="rediger_offre.php?modifier_offre=' . $donnees['id'] . '">'; ?>Modifier</a></td>
    <td><?php echo '<a href="liste_offre.php?supprimer_offre=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
    <td><?php echo stripslashes($donnees['type']); ?></td>
    <td><?php echo stripslashes($donnees['meuble']);?></td>
    <td><?php echo stripslashes($donnees['loyer']);?></td>
    <td><?php echo stripslashes($donnees['distance']);?></td>
    <td><?php echo stripslashes($donnees['superficie']);?></td>
    <td><?php echo stripslashes($donnees['prenom_proprio']);?></td>
    <td><?php echo stripslashes($donnees['nom_proprio']);?></td>
    <td><?php echo stripslashes($donnees['rue']);?></td>
    <td><?php echo stripslashes($donnees['code_postal']);?></td>
    <td><?php echo stripslashes($donnees['ville']);?></td>
    </tr>
     
    <?php
    } // Fin de la boucle qui liste les offres
    ?>
    </table>
    J'ai un doute sur mon premier test, il semble que si j'essaye de rentrer une nouvelle offre le test est toujours faux...

    Merci d'avance encore pour votre aide !

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

Discussions similaires

  1. [ZF 1.10] Problème dans l'ajout des données depuis un formulaire
    Par king_soft dans le forum Zend_Form
    Réponses: 6
    Dernier message: 24/01/2011, 09h25
  2. Réponses: 1
    Dernier message: 17/10/2008, 06h23
  3. Réponses: 1
    Dernier message: 28/08/2008, 22h53
  4. récuperer des données depuis un formulaire
    Par anaaa dans le forum Langage
    Réponses: 2
    Dernier message: 03/12/2007, 11h34
  5. Réponses: 2
    Dernier message: 17/05/2006, 17h54

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