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 :

choix en insert et update PHP SQL


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut choix en insert et update PHP SQL
    Bonjour le forum

    j'ai un formulaire qui envoi les infos dans un fichier valide.php.

    Voici le code du fichier valide.php:

    <?PHP
    $server = ""; $user = ""; $password = ""; $base = "";
    mysql_connect($server,$user,$password);
    mysql_select_db($base);
    $sql = "INSERT INTO webmaster VALUES('$nom','$prenom')";
    mysql_query($sql) or die('Erreur SQL !'.$sql.' '.mysql_error());
    echo ''; mysql_close(); ?>
    Je sollicite votre grande gentillesse et o combien grande générosité pour deux minuscules questions

    1 - Comment puis je faire pour eviter qu'il m'insert systematiquement une meme saisie plusieurs fois, en fait je voudrais qu'il verifie dans la base si un nom n'existe pas déja
    J'ai un début de piste maladroit :

    $sql = "select nom from webmaster";
    mysql_query($sql) or die('Erreur SQL !'.$sql.' '.mysql_error());

    Mais mon If ne marche pas pour vérifier si le nom existe il doit soit insert to soit update.

    2 - Je souhaiterai, egalement que le nom de ma base, ici WEBMASTER soit une recupération d'une variable, à l'image de

    $sql = "select nom from $_GET['table']";


    Est ce que cela reste possible


    Merci beaucoup en tout cas du temps passé a lire ce post.

    Bonne journée me forum

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 235
    Par défaut
    Bonjour,

    1. Tu fais ton select, si mysql_num_rows te retourn un entier positif, ton utilisateur existe donc tu fais un update, sinon un insert

    2. Oui c'est possible mais bon, passer une table par GET, je trouve pas cela très sécurisé.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "select nom from webmaster where nom='$nom'";
    T'execute ta requete et si elle ne te retourne aucune ligne, tu peux faire l'insert sinon l'update.

    Pour ta deuxième question, j'suis pas sur d'avoir bien compris mais je ne vois pas d'objection à mettre une variable $_GET dans ta requete.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    Je suppose que tu veux qu'il y ai par exemple que un seul paul durant ds la table webmaster.

    donc il suffit dans ta bdd de faire de ces 2 champs une clef primaire.
    ainsi lorsque tu ajoutera qlqun qui existe deja la requete renverra une erreur et donc tu n'auras qu a afficher a l user la raison de cette erreur a savoir que ce nom preonm existe deja.

    pour l autre tu n'as qu a faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $table = $_REQUEST["table"];
    $sql = "select nom from $table";
    $_REQUEST reprenant les variables post et get.

  5. #5
    Membre chevronné Avatar de TucSale
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 264
    Par défaut
    salut,

    regarde aussi REPLACE
    http://dev.mysql.com/doc/refman/5.0/fr/replace.html

    REPLACE fonctionne exactement comme INSERT, sauf que si une vieille ligne dans la table à la même valeur qu'une nouvelle pour un index UNIQUE ou une PRIMARY KEY, la vielle ligne sera effacée avant que la nouvelle ne soit insérée. See Section 13.1.4, « Syntaxe de INSERT ».
    Ce qui est tres pratique et evite le test de mysql_num_rows()

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut Merci à tous mais......;
    ...Je vous avoue que je suis totalement perdu, car dans votre grande sympathie, vou sme proposez tous des solutions totalement différentes.

    Pouvez vous m'expliquer en me mettant un exemple de code, s'il vous plait......

  7. #7
    Membre éprouvé
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Mai 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 99
    Par défaut
    Ne pas oublier les questions de sécurité ... même si c basique ...
    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
    <?
    $nom = mysql_escape( $nom );
    $prenom = mysql_escape( $prenom );
    $count = 0;
    $table = 'webmaster';
     
    $sql = "SELECT Count(*) FROM $table WHERE nom='$nom'";
    $res = mysql_query( $sql );
    if ( $res ) {
     $count = mysql_result( $res, 0, 0 );
    }
     
    if ( $count <= 0 )
    {
      $sql = "INSERT INTO $table (nom, prenom) VALUES ( '$nom', '$prenom' );";
    }
    ?>

  8. #8
    Membre éprouvé
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Mai 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 99
    Par défaut
    Puis le but, c'est aussi pour toi d'apprendre et de chercher à comprendre...
    Bref faut aussi de l'effort de ton coté (tester etc.).
    Et non pas qu'on fasse tout pour toi même si c bidon à faire

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut oui oui c'est évident...........
    ...........pas de souci je teste de teste ton exemple.

    Merci a tout le monde je reviens vers vous dans quelques secondes.


    Il y a une erreur :
    Fatal error: Call to undefined function: mysql_escape() in /home/clients/www/listebebe.com/www/valide.php on line 10

Discussions similaires

  1. [MySQL] Fonction UPDATE PHP+SQL
    Par Lekno dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 03/05/2012, 17h55
  2. [Linq to Sql] Insert ou update ? telle est la question ...
    Par Ntotor dans le forum Accès aux données
    Réponses: 5
    Dernier message: 19/11/2008, 14h24
  3. Réponses: 8
    Dernier message: 18/01/2008, 15h58
  4. [sql Flash] Lecture BDD dans Flash , INSERT ou UPDATE
    Par Keroik dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/08/2007, 11h20
  5. [Pl/Sql] Insert ou Update dans une fonction
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 12
    Dernier message: 18/04/2006, 15h28

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