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 :

Insertion simple en bloucle


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    administrateur système
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur système

    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Points : 58
    Points
    58
    Par défaut Insertion simple en bloucle
    bonjour, voici mon probleme:

    je veux lire la 1ere ligne d'une table mysql ensuite prendre le resultat de la requete pour lancer un get_meta_tags et inserer dans une autre table le resultat du meta tags. une fois fait lire la ligne deux de la table et ainsi de suite.

    voici mon essaie de code :

    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
     <?php
     $dbhost = 'localhost';
    $dbuser = 'root';
    $dbpass = 'damien';
     
    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die                      ('Error connecting to mysql');
     
    $dbname = 'dbdmozcopy';
    mysql_select_db($dbname); 
     
     
    for($i=0; $i <= 100 ; $i++) 
        { 
     
     
              $sql = 'SELECT
    concat(thosts.sHost,
    textlinks.sPage) as url
    FROM
    textlinks
    Inner Join thosts ON thosts.id = textlinks.idHost where textlinks.id='. $i; 
     
    // on envoie la requête 
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    while($data = mysql_fetch_array($req)){
     
     
     
     
      $tags = get_meta_tags('http://'.$data['url']);
     
    // Notice how the keys are all lowercase now, and
    // how . was replaced by _ in the key.
    echo $tags['author'];       // name
    echo $tags['keywords'];     // php documentation
    echo $tags['description'];  // a php manual
    echo $tags['geo_position']; // 49.33;-86.59
     
    $sql1="INSERT INTO newdata ('', id, author, keywords, description, geo_position)
    VALUES
    ('','$i','$tags[author]','$tags[author]','$tags[keywords]','$tags[description]','$tags[geo_position]')";
     
    }
        }
    // on ferme la connexion à mysql 
     
      mysql_close(); 
    ?>
    Si une personne pouvais me donner une piste. Je suis debutant.

    Merci d'avance

  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
    Tu pourrais nous dire precisemment ce qui ne fonctionne pas dans ce que as fait ?

    En regardant comme ca je vois deux choses bizarres :

    - ta premiere boucle ne sert a rien.
    tu peux faire directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     $sql = 'SELECT id, concat(thosts.sHost,textlinks.sPage) as url
    FROM textlinks
    Inner Join thosts USING (id) 
    WHERE textlinks.id<=100;
    si tu veux te limiter aux id inférieures à 100.
    Ensuite tu inseres la valeur $data['id'] au lieu de $i.


    - INSERT INTO newdata ('', id,.....
    C'est quoi ce premier champ vide ?

  3. #3
    Membre du Club
    Profil pro
    administrateur système
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur système

    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    le 1er champs vide est une valeur id en auto incrementation

  4. #4
    Membre du Club
    Profil pro
    administrateur système
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur système

    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    j'ai corriger les erreur mais il y a toujours aucun enregistrement dans ma base. et je suis pas sur que mon script soit fait pour traiter 4 millions de lignes. et aucun message d'erreur a l ecran

  5. #5
    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
    Les champs autoincrement n'ont pas besoin d'etre indiqués dans un insert.
    En supposant que j'ai bien compris et ce champ autoincrementé ne soit pas le "id" qui est deja indiqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql1="INSERT INTO newdata (id, author, keywords, description, geo_position)
    VALUES
    ('$data[id]','$tags[author]','$tags[author]','$tags[keywords]','$tags[description]','$tags[geo_position]')";

    Bon et sinon tu n'as pas un peu oublié de l'executer cette requete dans ta boucle ?

  6. #6
    Membre du Club
    Profil pro
    administrateur système
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur système

    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    en effet j'avais oublier la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mysql_query($sql1) or die('Error, insert query failed');
    mais j'ai le message Error, insert query failed
    mes champs de la table accepte les valeurs null.
    je me demandais si le faite que ma base de donnee soit coder en utf8 puisse etre un probleme.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Points : 54
    Points
    54
    Par défaut
    Fais plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     mysql_query($sql1) or die(mysql_error());
    C'est une erreur SQL que tu as là.
    Grâce à cela on verra ce quel est l'erreur.

  8. #8
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Les champs autoincrement n'ont pas besoin d'etre indiqués dans un insert.
    En supposant que j'ai bien compris et ce champ autoincrementé ne soit pas le "id" qui est deja indiqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql1="INSERT INTO newdata (id, author, keywords, description, geo_position)
    VALUES
    ('$data[id]','$tags[author]','$tags[author]','$tags[keywords]','$tags[description]','$tags[geo_position]')";

    Bon et sinon tu n'as pas un peu oublié de l'executer cette requete dans ta boucle ?
    Dans ta requete tu as $tags[author] en trop, Damien si tu as repris cette requete en copier-coller il est donc normal que cela ne marche pas car 5 champs et 6 valeurs insérés Oo

Discussions similaires

  1. formulaire ,insertion simple dans base de données
    Par Madusa dans le forum Langage
    Réponses: 11
    Dernier message: 31/07/2013, 13h01
  2. Concatenation avec insertion simple quote (')
    Par gerald@23juin.net dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/05/2010, 22h17
  3. Insertion simple en SQL Server impossible
    Par Cygace dans le forum ASP.NET
    Réponses: 1
    Dernier message: 10/01/2008, 19h48
  4. [MySQL] transformer une simple quote en double pour un insert !!
    Par st0nky dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/01/2006, 17h38
  5. Probleme simple de debutant avec INSERT TO et UPDATE
    Par Tom_Cruise dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/08/2005, 09h15

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