1. ✅ Apprenez une METHODE qui marche pour votre SEO ! Formation à distance avec Olivier Duffez et Fabien Facériès + aide pour prise en charge du financement
    Rejeter la notice

Problème modification ligne MYSQL

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Ibilolz, 7 Mai 2014.

  1. Ibilolz
    Ibilolz Nouveau WRInaute
    Inscrit:
    6 Mai 2014
    Messages:
    21
    J'aime reçus:
    0
    Bonjour, j'ai une table salle qui contient un id, num_salle, descr et nombre_poste. Je cherche à faire un petit formulaire de modification ou l'on choisirait la salle dans un bouton déroulant et on pourrais modifier ses champs en rentrant dans des input un nouveau nom, une nouvelle description et un nouveau nombre de poste. J'ai fais ça mais ça ne marche pas, il doit y avoir une erreur dans le php.

    Code:
    <?php 
     
    include 'fonctions.connect.php';
    $id_salle = "SELECT num_salle FROM Salle"; 
    $res = mysql_query($id_salle); 
    ?>
    <br></br>
                     <div> 
                    <form action="" method="post" id=test> 
               
                    <select name="test3" id="test1"> 
                    <option value='-1'>----Choisissez le numéro d'une salle à modifier -----</option> 
                    <?php 
                    while ($row = mysql_fetch_array($res))   
                    { 
                    $salle = $row['num_salle']; 
                    echo "<option value='$salle'>$salle</option>"; 
                    }  
                    ?> 
                    </select> 
                     <br></br>
            Numéro de la salle : <input type="text" name="num3" size=10 <br></br>
            Description : <input type="text" name="descr3" size=20 <br></br>
            Nombre de poste :<input type="text" name="nombre3" size=20 <br></br>
            <br></br>
            <input type="submit", name="submit" Value="Modifier">
    <?php              
             
    if (isset($_POST['test3'], $_POST['num3'], $_POST['descr3'], $_POST['nombre3']))
    
    
    {
    
    $test3 = $_POST['test3'];
    $num3 = $_POST['num3']; 
    $descr3 = $_POST['descr3']; 
    $nombre3 = $_POST['nombre3']; 
    
    
    $sql = 'UPDATE Salle SET num_salle='$num3', description= '$descr3', nombre_poste='$nombre3' WHERE num_salle='$test3'';
    
    
     
    mysql_query($sql);
    
    // on ferme la connexion à la base
    mysql_close();
    
    ?>
    
    
    </div> 
            <br></br>
    
     </div></FORM>
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 057
    J'aime reçus:
    294
    En informatique dire "ça ne marche pas" ou rien c'est pareil.

    NB: il faut revoir les bases parce que là t'as une belle faille d'injection SQL.
     
  3. Ibilolz
    Ibilolz Nouveau WRInaute
    Inscrit:
    6 Mai 2014
    Messages:
    21
    J'aime reçus:
    0
    Me répondre ça ou rien c'est pareil. Tous mes champs sont bien nommés, je les récupèrent tous et normalement ma commande sql est aussi bonne donc si tu veux me dire quelque chose dis moi d’où viens l'erreur ...
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 057
    J'aime reçus:
    294
    Non ta requête n'est pas bonne:
    1° problème de quotes
    2° injection SQL
     
  5. Ibilolz
    Ibilolz Nouveau WRInaute
    Inscrit:
    6 Mai 2014
    Messages:
    21
    J'aime reçus:
    0
    Bon, j'ai remplacé ma requête par ça mais il doit encore y avoir une erreur ..

    $sql = "UPDATE `Salle` SET `num_salle` = \'$num3\', `description` = \'$descr3\', `nombre_poste` = \'$nombre3\' WHERE `num_salle` = \`$test3\`;";
     
  6. FortTrafic
    FortTrafic WRInaute passionné
    Inscrit:
    11 Décembre 2012
    Messages:
    1 210
    J'aime reçus:
    18
    Je n'y connais rien mais je vois que les quotes de la dernière variable ne sont pas les mêmes que celles des autres variables.. En plus il n'y a pas besoin d'échapper les quotes quand ce ne sont pas celles dont tu te sert pour entourer la chaîne de caractères de la requête.

    Mais bon en fait tu ne me donnes pas plus envie de t'aider que ça et encore j'aurai du te laisser dans ton coin.. Trop bon, trop con.. Quand je vois la réponse que tu fais à spout alors que tu es dans l'erreur en ne communiquant pas le message d'erreur, mais au lieu d'être reconnaissant d'avoir eu une réponse et de donner plus d'information sur l'erreur ou de demander pourquoi spout te dit ca, tu te rebelles bêtement, et ben rebelle toi tout seul.
    Tu vois c'est facile de faire le susceptible :)
     
  7. Ibilolz
    Ibilolz Nouveau WRInaute
    Inscrit:
    6 Mai 2014
    Messages:
    21
    J'aime reçus:
    0
    ... Je ne savais pas que c'était pour l'erreur que je n'avais pas marqué, j'ai pourtant cru mettre que javais page blanche, que le code php faisait tout planter. Après je débute en prog en autodidacte depuis 3 mois et c'est pas en me répondant comme cela sur des forums que je vais avoir envi de faire des progrès. Réponse sèche, pas d’explication ... Une chose facile pour quelqu'un ne l'est pas forcément pour d'autre.
     
  8. FortTrafic
    FortTrafic WRInaute passionné
    Inscrit:
    11 Décembre 2012
    Messages:
    1 210
    J'aime reçus:
    18
    Sur les forums ceux qui aident le font car ils aiment la technique, c'est tout, on n'est pas assistantes sociales, si tu n'as pas l'envie de faire des progrès, il ne faut pas compter sur les autres pour te la donner.
    Spout t'as donné un conseil en fait, je le donne aussi des fois, pour les débutants justement, de mettre toutes les chances de ton côté pour obtenir des réponses, de l'aide, donc être plus poli qu'en temps normal, fournir toutes les informations qui peuvent aider à résoudre ton erreur. Et d'ailleurs en faisant comme ça quand je demande de l'aide, je m'aperçoit que quelques fois en écrivant toutes les informations pour que les gens m'aident, je trouve la réponse d'un coup, en gros j'essaye d'organiser les informations qui peuvent aider à m'aider, et du coup j'en arrive à m'aider tout seul :)
     
  9. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    701
    J'aime reçus:
    0
    Le problème de la page blanche, c'est sans doute un problème d'erreur masquée.
    La première chose à faire quand tu te lances dans le développement PHP, c'est de configurer PHP pour le dev. Au minimum:
    display_errors = On
    error_reporting = -1
    Le premier demande à afficher toutes les erreurs, et le second demande à afficher toutes les types d'erreurs, que ce soit des notices ou des crash.
    On le voit rarement dans les tutos pour débutant, c'est pourtant la base de l'apprentissage …
     
  10. Wiam
    Wiam Nouveau WRInaute
    Inscrit:
    2 Mai 2014
    Messages:
    15
    J'aime reçus:
    0
    Bonjour,

    Ton code fait très amateur, tu devrais utiliser PDO pour palier aux injections SQL, ainsi le code devient tellement simple ! PDO c'est la classe ... :p

    Exemple de code :

    Code:
        public function read($id)
        {
            $id = Security::filterVar($id, 3);
            $sql = 'SELECT * FROM ' . $this->db->prefix('matable') . ' WHERE id = :id AND ip = :ip';
            $sth = $this->db->prepare($sql);
            $sth->bindParam(':id', $id, PDO::PARAM_STR, 64);
            $sth->bindParam(':ip', $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR, 64);
            if (!$this->db->execute($sth)) {
                return '';
            }
            $data = $sth->fetch(PDO::FETCH_ASSOC);
            if (empty($data['data'])) {
                return '';
            }
            return $data['data'];
        }
    
    Avec ça les petits geeks peuvent toujours essayer ! :-D
     
  11. Wiam
    Wiam Nouveau WRInaute
    Inscrit:
    2 Mai 2014
    Messages:
    15
    J'aime reçus:
    0
    Code:
    $test3 = $_POST['test3'];
    $num3 = $_POST['num3'];
    $descr3 = $_POST['descr3'];
    $nombre3 = $_POST['nombre3'];
    
    
    $sql = 'UPDATE Salle SET num_salle='$num3', description= '$descr3', nombre_poste='$nombre3' WHERE num_salle='$test3'';
    
    8O Belles injections en perspectives.

    Pour utiliser du PHP dans les quotes, il faut utiliser les double quotes "$var". Ensuite pour les requêtes SQL tu devrais utiliser initvar sur tous les nombre comme "num_salle". Pour le texte utiliser au moins mysqli_real_escape_string pour limiter un peu la casse, je dis bien un peu.

    Pour mysqli_real_escape_string, lire attentivement la doc PHP : http://www.php.net/manual/fr/mysqli.real-escape-string.php
     
Chargement...
Similar Threads - Problème modification ligne Forum Date
Problème modification code Adsense AdSense 21 Avril 2020
L'ajax, problème d'appel et de modification de variables Développement d'un site Web ou d'une appli mobile 24 Février 2012
Probleme de modification de title Crawl et indexation Google, sitemaps 5 Décembre 2011
Problème modification DNS OVH Administration d'un site Web 8 Avril 2010
Search Console Problème d'indexations de pages produits Crawl et indexation Google, sitemaps Aujourd'hui à 11:26
Search Console Probleme redirection nom de domaine et indexation google Crawl et indexation Google, sitemaps 16 Septembre 2020
Problème passerelle sur Prestashop e-commerce 8 Septembre 2020
Problème indexation Google desktop/mobile Problèmes de référencement spécifiques à vos sites 3 Septembre 2020
Search Console Problèmes chargements images Crawl et indexation Google, sitemaps 3 Septembre 2020
Problème de position sur 1 mot-clé (effet yo-yo) Problèmes de référencement spécifiques à vos sites 21 Août 2020