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 :

[PHP 5.3][MySQL 5.1.31] Stocker le code source d'une page dans une table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 21
    Par défaut [PHP 5.3][MySQL 5.1.31] Stocker le code source d'une page dans une table
    Bonjour à tous,

    je cherche le moyen de stocker tout le contenu d'une page web dans une table mySQL.

    Je récupère le code source avec la fonction "file_get_contents" qui marche très bien et je dispose d'une table work (id number autoincrement, data varchar(4000))

    L'idée serait que pour chaque ligne du code source, une ligne soit insérée dans la table afin de pouvoir les traiter / cleaner / extraire facilement en SQL.

    Quelqu'un aurait une idée ?

    Merci pour votre aide

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Un code comme ça devrait pouvoir faire :
    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
    <?php
      $fichier = 'ton_Fichier.php';
      $lignes = file($fichier);
     
      foreach ($lignes as $valeur)
      {
        //-- afin d'éliminer les lignes vides --------------------------------------
        $valeur = rtrim($valeur);
        if (!empty($valeur))
        {
          $datas = mysql_real_escape_string($valeur);
          $sql = 'INSERT INTO work (data)
                  VALUES (\'' . $datas . '\')';
          ExecRequete($sql, $connexion)
                  or die(mysql_error());
        }
      }
    ?>

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 21
    Par défaut
    Merci pour ton aide jeca

    Là tu pars du fait que ma source est un fichier or j'aimerais stocker le contenu du page web (son code source).

    Je vais voir s'il existe une fonction pour récupérer ce code source et l'enregistrer en fichier pour tester ton code.

    Si vous avez des idées, je suis preneur.

    Je vous tiens au courant.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Tu peux utiliser les fonction de bufferisation :
    http://fr.php.net/manual/fr/ref.outcontrol.php

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 21
    Par défaut
    Ca marche pas mal du tout, par contre je rencontre un problème... bizarre...

    Le fichier est créé et est de la forme que je veux.

    Puis j'exécute ce bout 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
     
    	$fichier = 'source.htm';
    	$lignes = file($fichier, FILE_SKIP_EMPTY_LINES);
     
            $sql = 'truncate table work';
    	mysql_query($sql,$db_link) or die(mysql_error());
     
    	foreach ($lignes as $valeur)
    	{
    		$datas = mysql_real_escape_string($valeur);
     
    		$sql = 'INSERT INTO work (data) VALUES (\'' . $datas . '\')';
    		mysql_query($sql,$db_link) or die('Requête invalide : ' . mysql_error());
    	}
     
    	unlink("source.htm");
    	// Déconnexion
    	mysql_close($db_link);
    Ca fonctionne très bien jusqu'à environ 1100 - 1200 lignes (elles sont bien dans ma table) alors que mon fichier en fait 14 000

    Ca doit planter dans le foreach puisque mon fichier n'est pas supprimé à la fin. Mais quand je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		if (mysql_errno())
    		{
    			echo "MySQL error " . mysql_errno() . ": " . mysql_error();
    		}
    Rien...

    Vous auriez une idée d'où ça peut venir ? Un problème avec l'array retourné par file() peut-être...

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Quel est le type de la colonne "id number" dans la table "work" ?

    Tu peux aussi après cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $lignes = file($fichier, FILE_SKIP_EMPTY_LINES);
    ajouter :
    pour vérifier s'il y a bien 14000 lignes.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 21
    Par défaut
    Id est number autoincrement donc pas de soucis de ce côté là. Il est bien autoalimenté dès que je fais un insert, ça marche sur les 1100-1200 enregistrement que j'arrive à faire.

    me renvoie bien un 14000.

    Le truc que je ne comprends pas, c'est que je n'arrive pas à sortir de mon foreach et je n'arrive pas à afficher l'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach ($lignes as $valeur)
    {
    	$datas = mysql_real_escape_string($valeur);
    	$sql = 'INSERT INTO work (data) VALUES (\'' . $datas . '\')';
    	mysql_query($sql,$db_link) or die('Requête invalide : ' . mysql_error());
    }
    echo "OK";
    Je ne vois jamais le "OK".

    Je pense que le soucis viens des \n qui sont dans le fichier...

    Ou un réglage dans Apache / PhpAdmin ?...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 21
    Par défaut
    Ah bah ça marche, c'était un problème d'incompatibilité PhpAdmin / MySQL il semblerait.

    j'ai téléchargé EasyPhP et tout fonctionne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  2. Mise en page d'une entrer dans une table Mysql
    Par keishah dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/08/2006, 15h00
  3. Réponses: 6
    Dernier message: 12/04/2006, 16h46
  4. faire passer une variable d'une fct js à une page php
    Par harlock59 dans le forum Langage
    Réponses: 1
    Dernier message: 25/11/2005, 14h41
  5. Réponses: 11
    Dernier message: 11/03/2005, 17h41

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