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 :

Fonction UPDATE PHP+SQL


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Points : 761
    Points
    761
    Par défaut Fonction UPDATE PHP+SQL
    Bonjour à tous, je tente désepserement de faire fonctionner ma fonction d'update SQL

    Ma requête est validée par phpmyadmin sans aucun soucis mais lors de l'execution de la fonction l'update n'est pas effectif

    J'appel :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    updateEntreprise($updatenom, $updatelien, $updatemail, $updateinfo, $updatestatus, $updatedep);


    La fonction :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function updateEntreprise($updatenom, $updatelien, $updatemail, $updateinfo, $updatestatus, $updatedep) {
        $textSQL2 = "UPDATE entreprise SET 
    nom = '" . $updatenom . "',
    lien = '" . $updatelien . "',
    mail = '" . $updatemail . "',
    info = '" . $updateinfo . "',
    status = '" . $updatestatus . "',
    departement = '" . $updatedep . "' 
    WHERE id =$updateid  
    ";
        return mysql_query($textSQL2);
    }


    Merci pour votre aide

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Et $updateid vient d'ou ????

    (En plus tu as commencé avec de la concaténation de variable et rien pour cette partie de la requête)
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  3. #3
    Invité
    Invité(e)
    Par défaut
    En effet, il manque $updateid dans le libellé de la fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function updateEntreprise($updateid, $updatenom, $updatelien, $updatemail, $updateinfo, $updatestatus, $updatedep) {
        $textSQL2 = "UPDATE entreprise SET 
    // [...]
    WHERE id = '" . $updateid . "'
    ";
        return mysql_query($textSQL2);
    }
    AS-tu aussi pensé à la PROTECTION contre les injections SQL ?

  4. #4
    Membre éclairé Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Points : 761
    Points
    761
    Par défaut
    Bonjour,

    J'effectu ceci avant un traitement dans la fonction

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (!isset($_POST['updatelien'])) {
        $updatelien = '';
    } else {
        $updatelien = mysql_real_escape_string ($_POST['updatelien']);
    }


    J'ai bien vérifie via un echo que ma requête était bonne.

    Mon nouvel appel de fonction :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    updateEntreprise($updateid, $updatenom, $updatelien, $updatemail, $updateinfo, $updatestatus, $updatedep);
    Mon traitement

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function updateEntreprise($updateid, $updatenom, $updatelien, $updatemail, $updateinfo, $updatestatus, $updatedep) {
        $textSQL2 = "UPDATE entreprise SET
    id = '".$updateid."',
    nom = '" . $updatenom . "',
    lien = '" . $updatelien . "',
    mail = '" . $updatemail . "',
    info = '" . $updateinfo . "',
    status = '" . $updatestatus . "',
    departement = '" . $updatedep . "' WHERE id ='" .$updateid. "' 
    ";
        return mysql_query($textSQL2);

    Je n'ai helas toujours aucun update avec la fonction

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    J'effectu ceci avant un traitement dans la fonction
    Ce n'est théoriquement pas l'endroit le plus opportun.
    L'appliquer dans la fonction serait (à mon sens) mieux, ceci pour 2 raisons.

    1/ Si cette mise à jour se fait plusieurs fois (l'appel à cette fonction updateEntreprise) dans d'autres pages ou autre contexte (peu importe), tu vas inévitablement devoir répéter autant de fois ce code dans les traitements qu'il y aura d'appel à cette fonction.
    Donc tu vas avoir du code répétitif.
    A l'inverse, en les mettant dans la fonction tu n'auras plus ces codes répétitifs, mais surtout, tu vas te garantir que tous les appels à mysql_escape_string() seront effectués (moins risque d'oubli).
    En somme il est en bonne partie là l'intérêt d'une fonction.


    2/ Admettons que cette variable $updatelien sera non seulement exploitée dans la fonction updateEntreprise() mais aussi exploitée dans la page HTML pour être affichée (pour exemple).
    Et bien si cette donnée contient des quotes (genre : c'est l'été), elles seront échappées (le but de mysql_real_escape_string), et par conséquent des caractères d'échappements seront visibles dans la page HTML.
    Et bien le piège c'est se dire qu'il faudra alors les supprimer à grand renfort de striplashes().
    Le piège quoi.

    Bref ... mysql_real_escape_string() est une fonction propre et dédiée à mysql, son usage doit être fait uniquement sur des données destinées à être exploitées dans une requête faite avec mysql_query().

    C'était juste une (petite) parenthèse.


    Je n'ai helas toujours aucun update avec la fonction
    Prends tu bien soin de modifier les données ? (au moins une)
    Est-ce que la valeur de $updateid correspond bien à une des données dans la Bdd ?

    As tu pris soin d'afficher la chaine de requête (un echo sur $textSQL2) afin de vérifier que tout est cohérent/conforme ?

    Ca se peu que la requête échoue (une erreur), et dans tel cas il est bon de savoir la nature de l'erreur éventuelle.
    Pour cela :
    - soit tu active l'affichage des erreurs de MySQL (mysql.trace_mode à On dans le php.ini ou faire un ini_set)
    - Ou alors rajouter un : mysql_query($textSQL2) or die('ERREUR : '.mysql_error());
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  6. #6
    Invité
    Invité(e)
    Par défaut
    Pour l'update :
    $textSQL2 = "UPDATE entreprise SET
    id = '".$updateid."',
    nom = '" . $updatenom . "',
    lien = '" . $updatelien . "',
    mail = '" . $updatemail . "',
    info = '" . $updateinfo . "',
    status = '" . $updatestatus . "',
    departement = '" . $updatedep . "'
    WHERE id ='" .$updateid. "'
    ";

  7. #7
    Membre éclairé Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Points : 761
    Points
    761
    Par défaut
    C'est a présent résolu, après lecture et relecture, j'avais un input hidden qui ne me dirigeai pas vers le bon traitement dans un if plus lointain.... merci à tous pour votre aide

Discussions similaires

  1. [SQL] Fonction UPDATE en sql
    Par theotaki dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 25/04/2007, 08h06
  2. [SQL] Problème avec la fonction UPDATE
    Par JohanProg dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 16/10/2006, 12h56
  3. [SQL-Server] Problème avec la fonction mssql_connect (connexion PHP SQL Server)
    Par flydragon dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/05/2006, 11h59
  4. [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, 19h21
  5. Fonction UPDATE dans un ADOQuery - SQL
    Par yanba dans le forum Bases de données
    Réponses: 1
    Dernier message: 18/03/2006, 13h53

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