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 :

Update PHP - MYSQLI [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5
    Points : 10
    Points
    10
    Par défaut Update PHP - MYSQLI
    Bonsoir a tous.

    Je viens à vous car j'ai un petit problème pour un Update de base de données.

    Je précise je voudrais faire des mises à jour de titre dans une base de données mais je bloque un peu.

    le problème: le script me dit:
    La modification a été effectuée avec succès. Retour à l'administration.
    Alors que rien n'a changé dans la base de données.

    ensuite j'ai le code erreur.
    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\wwwroot\www\admin\modifier-categorie.php
    Et je ne trouve pas d'où viens le problème.

    Je vous mets le code de la page

    connexion (idents.php)
    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
     
    <?php
    //données pour la connexion à la base de données
     function connexion_bd(){
     
    $nom_du_serveur ="localhost";
    $nom_de_la_base ="base";
    $nom_utilisateur ="root";
    $passe ="mdp";
     
      @$link = mysqli_connect($nom_du_serveur,$nom_utilisateur,$passe,$nom_de_la_base);
            @mysqli_set_charset($link,"utf8");
            //printf("Jeu de caractères courant : %s\n", mysqli_character_set_name($link));
            if (mysqli_connect_errno($link)) {
                echo "Echec lors de la connexion à MySQL : " . mysqli_connect_error($link);
                exit();
            }
            return $link;
        }
        $connexion = connexion_bd();
    ?>
    La page:

    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
     
    <?php
        // on se connecte à la base de données (je place la connexion à la BD en début de fichier)
        include('idents.php');   
        //Fonction pour nettoyer une chaîne (on pourrait placer cette fonction dans un fichier appelé également par une include)
        function clean($chaine){
            $chaine = trim(htmlspecialchars($chaine, ENT_COMPAT , 'utf-8'));
            return $chaine;
        }
    ?>
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
    ______
    ______
    ______
    ______
    </head>
     
      <body>
    ____
    ____
    <?php 
     
      //Si l'action de modifier a été faite 
      if(isset($_POST["Modifier"])) 
      { 
     
        $titre = htmlspecialchars(stripcslashes(trim($_POST["titre"]))); 
        $description = htmlspecialchars(stripcslashes($_POST["description"]));
        $id = $_GET["id"];   
        //on enregistre les données
        $result = mysqli_query($connexion,"UPDATE CATEGORIES SET nom_categorie='".mysqli_real_escape_string($connexion,$titre)."', description_categorie='".mysqli_real_escape_string($connexion,$description)."' WHERE id = '$id'");
        //Si il y a une erreur, on crie ^^ 
        if (!$result){
          die('Requête invalide : ' . mysql_error()); 
        } 
        else
        { 
          //on informe que le message est enregistré 
          echo '<div class="cadre"><p>La modification à été éffectué avec succès. <a href=index.php> Retour à l\'administration.</a></p></div>';
        }         
        //on ferme if(isset($_POST["Modifier"])) 
      } 
      ?> 
     
        <!-- debu formulaire -->
      <form action="modifier-categorie.php?id=<?php echo $id;?>" method="post"> 
      <fieldset>   
      <?php 
      $id = $_GET["id"];
      $result = mysqli_query($connexion,"SELECT * FROM CATEGORIES WHERE id = $id"); 
      while($affiche = mysqli_fetch_array($result)){ 
        ?> 
        <p>Titre de la cat&eacute;gorie :<br/>  
        <input name="titre" size="65" value="<?php echo $affiche['nom_categorie'];?>"  type="text"/> </p> 
        <p>Description de la cat&eacute;gorie :<br/>  
        <textarea name="description" rows="10" cols="50" ><?php echo $affiche['description_categorie'];?></textarea> </p> 
        <?php 
        //On ferme la boucle while 
      } 
      ?> 
      <input name="Modifier" value="Modifier" type="submit"/> 
      <input name="Effacer" value="Effacer" type="reset"/>   
      </fieldset> 
      </form> <!-- fin du formulaire --> 
     
     
    </body>
    </html>
    Si une bonne âme peux me donner une solution.

    Bien à vous.

  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
    La première chose à faire est d'afficher tes requêtes pour voir a quoi elles ressemblent au final.
    Au vu des erreurs je dirais que tu as un problème avec ton id.

    Au passage tu declares deux fois $id.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5
    Points : 10
    Points
    10
    Par défaut
    Re_Bonsoir.

    Bon j'ai trouvé un moyen pour que cela fonctionne.
    je peux désormais modifier ma base.
    Mais si vous voyez des choses qui pourrait être améliorer je suis preneur


    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
     
    <?php
        // on se connecte à la base de données (je place la connexion à la BD en début de fichier)
        include('idents.php');   
        //Fonction pour nettoyer une chaîne (on pourrait placer cette fonction dans un fichier appelé également par une include)
        function clean($chaine){
            $chaine = trim(htmlspecialchars($chaine, ENT_COMPAT , 'utf-8'));
            return $chaine;
        }
    ?>
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
    ______
    ______
    ______
    ______
    </head>
     
      <body>
    ____
    ____
    <?php
      $id = $_GET["id"]; 
     
      //Si l'action de modifier a été faite 
      if(isset($_POST["Modifier"])) 
      { 
     
        $titre = htmlspecialchars(stripcslashes(trim($_POST["titre"]))); 
        $description = htmlspecialchars(stripcslashes($_POST["description"]));
         $id = $_GET["id"];
        //on enregistre les données
        $result = mysqli_query($connexion,"UPDATE CATEGORIES SET nom_categorie='$titre', description_categorie='$description' WHERE id = $id");
        //Si il y a une erreur, on crie ^^ 
        if (!$result){
          die('Requête invalide : ' . mysql_error()); 
        } 
        else
        { 
          //on informe que le message est enregistré 
          echo '<div class="cadre"><p>La modification à été éffectué avec succès. <a href=index.php> Retour à l\'administration.</a></p></div>';
        }         
        //on ferme if(isset($_POST["Modifier"])) 
      } 
      ?> 
      <form action="modifier-categorie.php?id=<?php echo $id;?>" method="post"> 
      <fieldset>   
      <?php 
     
      $result = mysqli_query($connexion,"SELECT * FROM CATEGORIES WHERE id = $id"); 
      while($affiche = mysqli_fetch_array($result)){ 
        ?> 
        <p>Titre de la cat&eacute;gorie :<br/>  
        <input name="titre" size="65" value="<?php echo $affiche['nom_categorie'];?>"  type="text"/> </p> 
        <p>Description de la cat&eacute;gorie :<br/>  
        <textarea name="description" rows="10" cols="50" ><?php echo $affiche['description_categorie'];?></textarea> </p> 
        <?php 
        //On ferme la boucle while 
      } 
      ?> 
      <input name="Modifier" value="Modifier" type="submit"/> 
      <input name="Effacer" value="Effacer" type="reset"/>   
      </fieldset> 
      </form> <!-- fin du formulaire --> 
     
     
    </body>
    </html>


    Bien à vous

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    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 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Tu travaille avec quelle version de php ?

    Quelle est la nécessité du stripcslashes ?

    On utilise pas htmlspecialchars pour un enregistrement en bdd mais uniquement à l'affichage.

    Pourquoi ne pas utiliser mysqli_real_escape_string ?

    Ta requête comporte une faille de sécurité car $_GET['id'] n'est pas contrôlée. Si tu ne la contrôle pas il faudrait au minimum la protéger avec mysqli_real_escape_string.

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

Discussions similaires

  1. [MySQL] php/mysqli UPDATE avec jointure
    Par lvdesign dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 13/08/2014, 15h48
  2. problème update php
    Par drogba72 dans le forum Langage
    Réponses: 32
    Dernier message: 19/02/2009, 12h56
  3. [ODBC] Requête UPDATE PHP->ACCESS
    Par frogs dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/10/2008, 14h48
  4. [MySQL] erreur d'update php
    Par gjhffd dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 10/02/2008, 02h49
  5. [MySQL] choix en insert et update PHP SQL
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 04/05/2006, 20h21

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