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 :

Extraction de données depuis le Web [Fait]


Sujet :

PHP & Base de données

  1. #1
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut Extraction de données depuis le Web
    Bonjour,

    Je souhaiterais savoir quelles sont les solutions envisageables pour permettre à un utilisateur de récupérer sous format texte via le WEB le contenu d'une table (100MB) sur serveur Oracle 10g ?
    Pour l'instant la récupération de données se fait via lien ODBC Excel !
    Ce qui pose pb quand le nombre de lignes du fichier dépasse la limite autorise par Excel.

    Merci d'avance.

  2. #2
    Membre éclairé Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Points : 773
    Points
    773
    Par défaut
    La façon la plus simple est de mettre un serveur WEB type Apache et de créer un script PHP qui va récupérer et sortir ce que tu veux.

    Ensuite il n'y a plus qu'à accéder avec un browser traditionnel pour downloader le fichier.

    Maintenant si le but est de voir les données, tu peux en plus faire une page WEB qui te permettra de te balader dans le jeux de réponses.
    Philippe CEROU,

    Architecte Systèmes & Bases de données.

  3. #3
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut Recuperation par scripts php
    Hola,

    Merci pour cette info.

    J'avais entendu dire que le couplage PHP/Oracle n'étais pas aussi puissant/adéquat que Java/Oracle...

    Est-ce que tu aurais un exemple de ce genre de scripts ou un tutoriel ?

    Merci d'avance...

  4. #4
    Membre éclairé Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Points : 773
    Points
    773
    Par défaut
    Rendons à César ce qui appartient à Brutus, comme dirait l'autre...

    PHP est un langage qui a fait ses preuves et qui fonctionne correctement. Tu veux faire du WEB donc il s'impose de lui-même.

    Côté tutoriel il y a ce qu'il faut sur le site :

    http://php.developpez.com/cours/phporacle
    Philippe CEROU,

    Architecte Systèmes & Bases de données.

  5. #5
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut download des donnees
    Hola,

    Donc les scripts PHP sont entreposes sur le Tomcat...

    Par contre, je ne vois pas très bien la procédure de download des données via browser...?

    Merci d'avance.

  6. #6
    Membre éclairé Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Points : 773
    Points
    773
    Par défaut
    C'est tout bête voici un exemple de fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Envoi d'un fichier au client
     
    function html_send_file($filename, $content)
    {
        header('Content-disposition: attachment; filename="'.str_replace(' ', '_', $filename)).'"';
        header('Content-Type: application/force-download');
        header('Content-Transfer-Encoding: binary');
        header('Pragma: no-cache');
        header('Expires: 0');
        print $content;
    }
    Philippe CEROU,

    Architecte Systèmes & Bases de données.

  7. #7
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut download des donnees
    Hola,

    Donc les scripts PHP sont entreposes sur le Tomcat...

    Par contre, je ne vois pas très bien la procédure de download des données via browser...?

    Merci d'avance.

  8. #8
    Membre éclairé Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Points : 773
    Points
    773
    Par défaut
    C'est à toi de l'écrire et pur ce faire appui toi pour la présentation de la donnée au browser sur l'exemple de fonction fourni ci-desssus.

    Pour le reste, lis la docmentation PHP/OCI.
    Philippe CEROU,

    Architecte Systèmes & Bases de données.

  9. #9
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut Resultat de requete vide
    Hola,

    Ok je me suis lancé en PHP (que je ne connais pas bien).
    Je me suis inspiré d'un code trouvé sur le forum...

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    function connexion() {
     
    require('config.inc.php');
     
    $domain = $user."@".$host;
     
    $ora_conn = ora_logon($domain, $passwd);
     
    	if (!$ora_conn) {
    		echo "<div style=\"background-color: #DDDDDD;width:300px\"><font color=\"red\">Probl&egrave;me pour se connecter &agrave; la base.<BR>\n";
    		echo ora_error(), "\n";
    		echo "</font></div>";
    	}
     
    	return $ora_conn;
     
    }
     
    /*
    *Fonction ora_query()
    *Fonction qui execute une requête sur le serveur Oracle
    *Paramètres: @sql où $sql est une requête
    *@ora_conn où $ora_conn est le pointeur de connexion
    *Renvoie les résultats d'une requête
    */
    function ora_query($sql,$ora_conn) {
     
    	// open a cursor
    	$curs = ora_open($ora_conn);
     
    	// check that SQL is OK
    	if (!@ora_parse($curs,$sql)) {
    		echo "Erreur dans le parsing de la requête. Error was :", ora_error($curs);
    		} else {
    		ora_exec($curs);
     
    	}
    	return $curs;
    }
     
    /*
    *Fonction close qui permet de fermer un curseur en cour
    *PARAM: @$curseur qui est le curseur en cours
    */
    function close($curseur) {
    	ora_close($curseur);
    }
     
    /*
    *Fonction deco() qui permet de fermer une connexion au serveur
    *PARAM: @$connexion qui est le pointeur de connexion
    */
    function deco($connexion) {
    	ora_logoff($connexion);
    }
     
    echo "Prueba de connexion";
     
    $domain = "USER"."@"."TNSNAME";
    $passwd = "PASSWORD";
     
    $connexion=ora_logon($domain, $passwd);
     
    $curs = ora_query("SELECT * FROM SIMA_POPERACIO;",$connexion);
     
    if(ora_numrows($curs)>0)
    {echo "<BR>yes";
    }else{
    echo "<BR>vide";
    }
     
    close($curs);
     
    deco($connexion);
    Sur SQL*PLUS, le login et la requete fonctionnent très bien mais via la page php, le résultat est vide...
    Je me demande si la connexion ou la requete sont bien construites avec le code ci-dessus ?

    Merci...

  10. #10
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut
    Finalement, j'ai opté pour le code suivant:

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    <?php
    echo "LISTA DE OPERACIONES";
     
    $conn = ora_logon('USER@TNSNAME', 'PASSWORD');
     
    if (!$conn) {
      $e = ora_error();
      print htmlentities($e['message']);
      exit;
    }
     
    $cursor = ora_open($conn);
     
    $query = 'SELECT * FROM SIMA_POPERACIO';
     
    $stid = ora_parse($cursor, $query);
    if (!$stid) {
      $e = ora_error($conn);
      print htmlentities($e['message']);
      exit;
    }
     
    $r = ora_exec($cursor);
    if (!$r) {
      $e = ora_error($stid);
      echo htmlentities($e['message']);
      exit;
    }
     
    print("<TABLE");
    print(" BORDER=\"1\">\n");
    print("<TR>\n");
     
    for($index = 0; $index < ora_numcols($cursor); $index++){
       print("<TH>");
       // get column info
       print(ora_columnname($cursor, $index));
       print("</TH>\n");
    }
     
    print("</TR>\n");
     
    //  get each row
    while(ora_fetch($cursor)){
    	print("<TR>\n");
    	for($index = 0; $index < ora_numcols($cursor); $index++){ 
    		print("<TD>");
    		// get column
    		print(ora_getcolumn($cursor,$index));
    		print("</TD>\n");
    	}
    	print("</TR>\n");
    }
    print("</TABLE>\n");
     
    print("<BR>\n");
    print("Rows: ");
    print(ora_numrows($cursor));
    print("<BR>\n"); 
     
    ora_close($cursor);
    ora_logoff($conn);
    ?>
    Reste à écrire le tout dans un fichier texte...

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Salut,

    c'est simple, suffit de concaténer le tout dans une variable au lie de faire des print_r.
    Puis de faire file_put_contents (je te renvois vers la doc), si tu veux le mettre dans un fichier, même si ce n'est pas obligatoire.
    Après tu fais html_send_file($filename, $content); puis die();

    Par contre dans tous les cas si fais du excel tu seras toujours bloqué par la limite de 65000 lignes si j'ai bon souvenir..

    bye

  12. #12
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut ecriture de resulset dans fichier texte
    En fait j'écris les infos dans un fichier texte, justement pour pallier à la limite d'Excel. Comme ceci:

    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
     
    $filename = "test.txt";
    $fp = fopen($filename,"a+");
    fputs($fp, "Nombre;Fecha inicial;Fecha final\n");
     
    //  get each row
    while(ora_fetch($cursor)){
    	for($index = 0; $index < ora_numcols($cursor); $index++){ 
    		// get column
    		$content = (ora_getcolumn($cursor,$index));
    		fputs($fp,$content);
    		fputs($fp,";");
    	}
    	fputs($fp,"\n");
    }
    fclose($fp);
     
    ora_close($cursor);

  13. #13
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut Fatal error: Maximum execution time of 30 seconds exceeded
    En revanche, maintenant j'ai un problème lors de l'extraction de près de 60 000 enregistrements d'une vue Oracle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Maximum execution time of 30 seconds exceeded

  14. #14
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut valeur de max_execution_time
    c'est bon, il fallait juste changer la valeur du paramètre max_execution_time dans php.ini

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    max_execution_time = 2000

  15. #15
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut choisir l'emplacement d'enregistrement du fichier
    Encore un détail, comment puis-je donner la possibilité à l'utilisateur de choisir l'emplacement d'enregistrement du fichier ?
    Du genre "Enregistrer Sous"...

    Merci

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/02/2010, 13h38
  2. Extraction de données depuis interbase
    Par mat777 dans le forum InterBase
    Réponses: 4
    Dernier message: 08/03/2008, 22h09
  3. récupération données depuis page web
    Par Elay dans le forum Windows Forms
    Réponses: 5
    Dernier message: 08/01/2008, 07h35
  4. Extraction de données depuis SAP
    Par romrai dans le forum SAP
    Réponses: 7
    Dernier message: 03/08/2006, 15h42
  5. Extraction de données depuis fichier .NDX ...
    Par Olif_C dans le forum WinDev
    Réponses: 4
    Dernier message: 30/08/2005, 11h57

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