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 :

Introduire une variable dans requête SQL, insérer des données à la volée


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 14
    Points
    14
    Par défaut Introduire une variable dans requête SQL, insérer des données à la volée
    Bonjour a tous !

    J'ai quelques soucis en php :

    J'ai créer un code qui détecte le passage des robots sur un site, j'ai donc un table bots avec tout les bots qui ont crawlés le site ainsi que des tables :

    - google_ip
    - yahoo_ip
    - msn_ip

    Qui contiennent les debuts d'ip des robots ( moitié de l'ip), car beaucoup d'ip de robots on un début commun.

    J'ai aussi créer une petite interface admin pour pouvoir ajouter/supprimer des ip.

    Dans mon code "ajouter_ip.php" j'ai ce code :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
      $requete = "insert into XXXX_ip values('$ip_robot')";
      mysql_query($requete) or die(mysql_error());
      echo "OK !";

    J'aimerai bien remplacer les XXXX par la variable robot , definie plus tot dans le code !
    Comment faire ?

    Une autre petite question j'ai une liste d'ip dans un fichier texte, comment pouvoir "parser" ces ip de façon a garder les deux premier groupement de chiffres (moitié de l'ip) , puis les insérer dans une base MySql de façon automatique ?

    Dernière question , avez vous un code simple pour vérifier les doublons d'une base, pas forcement lors d'un nouvel enregistrement !

    Merci , Ronan

    PS: Si ce n'est pas clair , n'hésitez pas a me demander d'autres explications

  2. #2
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    XXXX_ip
    Tu veux en fait créer une nouvelle table pour chaque robot ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    En fait la page ajouter_ip , est faite pour ajouter un ip dans la table mais il existe un table par robot !

    Donc il faut introduire une variable dans la selection de la table

    Ex :

    SI google :
    $requete = "insert into google_ip values('$ip_robot')";

    SI yahoo :
    $requete = "insert into yahoo_ip values('$ip_robot')";

    SI msn :
    $requete = "insert into msn_ip values('$ip_robot')";

    Il faudrait pouvoir faire ca :

    $requete = "insert into $robot_ip values('$ip_robot')";


    Mais cela ne fontionne pas !

  4. #4
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    C'est normal ! La table n'est pas encore créer pour "robot".

    Il faut en premier que tu regarde si une table existe pour le robot.
    - si elle existe, tu insere l'ip, etc...
    - sinon tu doit créer la table : http://dev.mysql.com/doc/refman/5.0/...ate-table.html

  5. #5
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    
    $requete = "insert into '$table_tobot' values('$ip_robot')";
    ?
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    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
    $ip_robot = $_GET['ip'];
    //
    if($robot == "google")
    {
    $table = "google_ip";
    }
    if($robot == "yahoo")
    {
    $table = "yahoo_ip";
    }
    if($robot == "msn")
    {
    $table = "msn_ip";
    }
    $requete = "insert into $table values('$ip_robot')";
    mysql_query($requete) or die(mysql_error());
    echo "OK !";
    Ca marche merci , reste juste pour la liste d'ip

  7. #7
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Ca marche merci , reste juste pour la liste d'ip
    Tu ouvre ton fichier en lecture puis tu fait une simple boucle pour chaque ligne, tu peux utiliser la fonction split(), elle te permet de découper des strings suivant un caractére précis (dans le cas d'une adresse ip le .)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    Je Galère , j'ai ces ip ( exemple ) :

    68.142.249
    68.142.250
    68.142.251
    72.30.101
    72.30.102
    72.30.103
    72.30.104
    72.30.107

    Je voudrai qu'il entre dans la base :

    68.142
    72.30

    Mais je n'y arrive pas

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Salut,

    Fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $result = <a href="http://fr.php.net/manual/fr/function.explode.php" target="_blank">explode</a>('.',$ip,3);
    echo $result[0].'.'.$result[1];

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    donc je lis le fichier , et introduit cet "explode" dans la boucle ?

  11. #11
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Tu lis le fichier ligne par ligne !! puis tu met le explode dans la boucle (avec ta requête bien sûr )

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    Voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    $ouvre=fopen("lycos.txt","r"); // ouverture fichier en lecture "r"
    while (!feof ($ouvre))         // tant que pas en fin de fichier
        {
    $tampon = fgets($ouvre, 4096); // mise en tampon des données
    $separer = explode(".", $tampon);
    $ip = "$separer[0].$separer[1]";
    echo "$ip<br/>";               // affichage du tampon
          }
    fclose($ouvre);               // fermeture fichier
    ?>
    A partir de ca dans mon fichier texte :

    166.48.225.254
    202.232.118.40
    202.232.118.51
    206.79.171
    207.77.90
    207.77.91.184

    J'obtient bien que le début des ip comme cela :

    166.48
    202.232
    202.232
    206.79
    207.77
    207.77

    Mais comment ne garder qu'un exemplaire de chaque ?

  13. #13
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Tu les inséres dans un tableau !

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    Fonction file , ou avec un tableau html ?

  15. #15
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Par exmple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $tab = array();
    while (...)
    {
        //Traitement de la chaine
        $tab += NewIp;
    }

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    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
    <?php
    $tab = array();
    $ouvre=fopen("lycos.txt","r"); // ouverture fichier en lecture "r"
    while (!feof ($ouvre))         // tant que pas en fin de fichier
        {
    $tampon = fgets($ouvre, 4096); // mise en tampon des données
    $separer = explode(".", $tampon);
    $ip = "$separer[0].$separer[1]";
    $tab[] = $ip;
          }
    fclose($ouvre);               // fermeture fichier
    $result = array_unique($tab);
    print_r ($result);
     
    ?>
    Ca me retourne un tableau sans doublons , reste a savoir comment inserer ca dans la base

  17. #17
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Une petite boucle ensuite avec INSERT INTO .......

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    Comment je separe les données ? je fait un insert into dans la boucle ? (gourmand non ?)

  19. #19
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Tu fait une boucle en parcourant le tableau avec à chaque passage un INSERT.

Discussions similaires

  1. [AC-2003] Ajout d'une variable dans requête Sql
    Par Plume27 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/09/2012, 22h50
  2. [AC-2007] Comment introduire une variable dans SQL INSERT
    Par JPJOLY dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 13/11/2011, 17h54
  3. Inclure une variable dans requête SQL
    Par Mvu dans le forum Visual Studio
    Réponses: 2
    Dernier message: 04/07/2008, 09h13
  4. [SQL] Insérer des données dans une table
    Par wonga dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 01/08/2007, 12h00
  5. une variable dans du SQL ??
    Par Black Pearl dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/06/2005, 12h55

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