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

Langage PHP Discussion :

Utiliser 2 regex dans 1 preg_match_all


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Par défaut Utiliser 2 regex dans 1 preg_match_all
    Bonjour !
    J'ai ce code que j'ai modifié pour crawler du contenu.
    Jusque là tout vas bien !

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    <?php
    //licence CC BY-NC http://buzut.fr
     
    //site web à crawler
    $url = 'http://127.0.0.1:8887/URL/';
     
    //déclaration de la fonction de crawl
    function crawl($url)
    {
     
            //initialisation de curl
            $ch = curl_init($url);
     
            //création d'un fichier texte pour stocker le contenu crawlé
            //effacement du fichier précédent si existe
            if(file_exists('fichier_html_brut'))
            {
            	unlink('fichier_html_brut');
            }
            $fp_fichier_html_brut = fopen('fichier_html_brut', 'a');
     
            //définition des paramètres curl
            //1 redirection de l'output dans le fichier txt
            curl_setopt($ch, CURLOPT_FILE, $fp_fichier_html_brut);
     
            //2 on spécifie d'ignorer les headers HTTP
            curl_setopt($ch, CURLOPT_HEADER, 0);
     
            //exécution de curl
            curl_exec($ch);
     
            //fermeture de la session curl
            curl_close($ch);
     
            //fermeture du fichier texte
            fclose($fp_fichier_html_brut);
     
            //passage du contenu du fichier à une variable pour analyse
            $html_brut = file_get_contents('fichier_html_brut');
     
            //extraction des emails
            preg_match_all('%<div class="illus">(.*)</div>%Us', $html_brut, $adresses_mail);
     
            //creation d'un fichier pour recevoir les mails
            $fp_fichier_emails = fopen('fichier_mails', 'a');
     
            //on creer une boucle pour placer tous les mails de la page dans le fichier
            foreach ($adresses_mail[0] as $element)
            {
     
    		//on ajoute un retour chariot en fin de ligne pour avoir 1 mail/ligne
    		$element .= "\n";
            	fputs($fp_fichier_emails, $element);
            }
     
            fclose($fp_fichier_emails);
     
            //extraction des liens
            preg_match_all('#"/?[a-zA-Z0-9_./-]+\.(php|html|htm)"#', $html_brut, $liens_extraits);
     
            //si le fichier contenant les liens existe déjà
            if (file_exists('liens_a_suivre'))
            {		
            	//on l'ouvre
                    $fp_fichier_liens = fopen('liens_a_suivre', 'a');
     
    		//on créé une boucle pour enregistrer tous les liens ds le fichier
                    foreach ($liens_extraits[0] as $element)
                    {		
                    	//on recharge le contenu dans la variable à chaque tour de boucle
                    	//pour être à jour si le lien est present +sieurs x sur la même page
                    	$gestion_doublons = file_get_contents('liens_a_suivre');
     
                    	//on enlève les "" qui entourent les liens
                            $element = preg_replace('#"#', '', $element);
                            $follow_url = $element;
                            $follow_url .= "\n";
     
                            //creation d'un pattern pour la verification ds doublons
                            $pattern = '#'.$follow_url.'#';
     
    			//on verifie grace au pattern précédemment créé
    			//que le lien qu'on vient de capturer n'est pas déjà ds le fichier
                            if (!preg_match($pattern, $gestion_doublons))
                            {
                                    fputs($fp_fichier_liens, $follow_url);
                            }
                    }
            }
     
            //si le fichier contenant les liens n'existe pas 
            else
            {
     
    		//on le créé
                    $fp_fichier_liens = fopen('liens_a_suivre', 'a');
     
    		//puis on fait une boucle pour enregistrer tous les liens ds 1 fichier
                    foreach ($liens_extraits[0] as $element)
                    {
                            $element = preg_replace('#"#', '', $element);
                            $follow_url = $element;
                            $follow_url .= "\n";
                            fputs($fp_fichier_liens, $follow_url);
                    }
            }
     
    	//fermeture fu fichier contenant les liens
            fclose($fp_fichier_liens);
     
    }
     
    //on appelle une première fois la fonction avec l'url racine
    crawl($url);
     
     
    //ensuite on ouvre le fichier de liens pour visiter les autres pages du site
    $lire_autres_pages = fopen('liens_a_suivre', 'r');
     
    //on créé une boucle pour visiter chacun des liens
    //on stop cette boucle quand le curseur arrive à la fin du fichier
    $numero_de_ligne = 1;
     
    while(!feof($lire_autres_pages))
    {
        //curl ne comprend que les liens absolus
        //on formate donc nos liens relatifs en liens absolus
        $page_suivante = $url;
        $page_suivante .= fgets($lire_autres_pages);
        echo $numero_de_ligne . ' Analyse en cours, page : ' .  $page_suivante;
        $numero_de_ligne++;
     
        //on se contente de rappeler la fonction crawl avec nos nouveaux liens
        crawl($page_suivante);
    }
     
    fclose ($lire_autres_pages);
     
     
    ?>
    Maintenant, ce que je veux récuperer en + et inclure en + dans mon fichier de reception, c'est la balise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td headers="header3" class="">(.*)</td>'
    j'ai essayé en faisant ça, mais sans résultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //extraction des emails
    preg_match_all('%<img height="100" width="100" alt="(.*)" src="../../../imgs/produits/(.*).jpg" />%Us',
    '<td headers="header3" class="">(.*)</td>',
    $html_brut, $adresses_mail);

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Combien de fois faudra-t-il répéter que parser du HTML à coup d'expressions régulières est à proscrire ! C'est comme se masturber avec une râpe à fromage : beaucoup de souffrances et très peu de résultats.

    Passe par DOMDocument qui est fait pour.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Je suis d'accord. Les expressions régulières et le HTML ne font jamais bon ménage !
    Je citerais une réponse à ce sujet venue d'un autre site :

    You can't parse [X]HTML with regex. Because HTML can't be parsed by regex. Regex is not a tool that can be used to correctly parse HTML. As I have answered in HTML-and-regex questions here so many times before, the use of regex will not allow you to consume HTML. Regular expressions are a tool that is insufficiently sophisticated to understand the constructs employed by HTML. HTML is not a regular language and hence cannot be parsed by regular expressions. Regex queries are not equipped to break down HTML into its meaningful parts. so many times but it is not getting to me. Even enhanced irregular regular expressions as used by Perl are not up to the task of parsing HTML. You will never make me crack. HTML is a language of sufficient complexity that it cannot be parsed by regular expressions. Even Jon Skeet cannot parse HTML using regular expressions. Every time you attempt to parse HTML with regular expressions, the unholy child weeps the blood of virgins, and Russian hackers pwn your webapp. Parsing HTML with regex summons tainted souls into the realm of the living. HTML and regex go together like love, marriage, and ritual infanticide. The <center> cannot hold it is too late. The force of regex and HTML together in the same conceptual space will destroy your mind like so much watery putty. If you parse HTML with regex you are giving in to Them and their blasphemous ways which doom us all to inhuman toil for the One whose Name cannot be expressed in the Basic Multilingual Plane, he comes. HTML-plus-regexp will liquify the n​erves of the sentient whilst you observe, your psyche withering in the onslaught of horror. Rege̿̔̉x-based HTML parsers are the cancer that is killing StackOverflow it is too late it is too late we cannot be saved the trangession of a chi͡ld ensures regex will consume all living tissue (except for HTML which it cannot, as previously prophesied) dear lord help us how can anyone survive this scourge using regex to parse HTML has doomed humanity to an eternity of dread torture and security holes using regex as a tool to process HTML establishes a breach between this world and the dread realm of c͒ͪo͛ͫrrupt entities (like SGML entities, but more corrupt) a mere glimpse of the world of reg​ex parsers for HTML will ins​tantly transport a programmer's consciousness into a world of ceaseless screaming, he comes, the pestilent slithy regex-infection wil​l devour your HT​ML parser, application and existence for all time like Visual Basic only worse he comes he comes do not fi​ght he com̡e̶s, ̕h̵i​s un̨ho͞ly radiańcé destro҉ying all enli̍̈́̂̈́ghtenment, HTML tags lea͠ki̧n͘g fr̶ǫm ̡yo​͟ur eye͢s̸ ̛l̕ik͏e liq​uid pain, the song of re̸gular exp​ression parsing will exti​nguish the voices of mor​tal man from the sp​here I can see it can you see ̲͚̖͔̙î̩́t̲͎̩̱͔́̋̀ it is beautiful t​he final snuffing of the lie​s of Man ALL IS LOŚ͖̩͇̗̪̏̈́T ALL I​S LOST the pon̷y he comes he c̶̮omes he comes the ich​or permeates all MY FACE MY FACE ᵒh god no NO NOO̼O​O NΘ stop the an​*̶͑̾̾​̅ͫ͏̙̤g͇̫͛͆̾ͫ̑͆l͖͉̗̩̳̟̍ͫͥͨe̠̅s ͎a̧͈͖r̽̾̈́͒͑e n​ot rè̑ͧ̌aͨl̘̝̙̃ͤ͂̾̆ ZA̡͊͠͝LGΌ ISͮ̂҉̯͈͕̹̘̱ TO͇̹̺ͅƝ̴ȳ̳ TH̘Ë͖́̉ ͠P̯͍̭O̚​N̐Y̡ H̸̡̪̯ͨ͊̽̅̾̎Ȩ̬̩̾͛ͪ̈́̀́͘ ̶̧̨̱̹̭̯ͧ̾ͬC̷̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝S̨̥̫͎̭ͯ̿̔̀ͅ
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  4. #4
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Pour pousser un peu la réflexion, des requêtes Xpath serait probablement une bonne solution dans ce que tu souhaite faire.

    Étant donné que tu es sur du HTML, il vaut mieux passer par la lib DomDocument et les objets DomXpath (pour du XML, la classe SimpleXMLElement est plus légère et préférable pour de la lecture simple via des requêtes Xpath ou autres).

    A+
    Idriss

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Par défaut
    Merci d'avoir répondu si rapidement !
    Alors, le problème c'est que je comprend pas comment completer mon code avec la classe DOMXPath.

    Je peux utiliser ce 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
     
    <?php
    // to retrieve selected html data, try these DomXPath examples:
     
    $file = $DOCUMENT_ROOT. "test.html";
    $doc = new DOMDocument();
    $doc->loadHTMLFile($file);
     
    $xpath = new DOMXpath($doc);
     
    // example 1: for everything with an id
    //$elements = $xpath->query("//*[@id]");
     
    // example 2: for node data in a selected id
    //$elements = $xpath->query("/html/body/div[@id='yourTagIdHere']");
     
    // example 3: same as above with wildcard
    $elements = $xpath->query("*/div[@id='yourTagIdHere']");
     
    if (!is_null($elements)) {
      foreach ($elements as $element) {
        echo "<br/>[". $element->nodeName. "]";
     
        $nodes = $element->childNodes;
        foreach ($nodes as $node) {
          echo $node->nodeValue. "\n";
        }
      }
    }
    ?>
    add a note
    et ajouter en suite le reste de mon code php pour boucler le tout et copier dans un document le résultat ?

    A vrai dire, j'ai l'impression de faire n'importe quoi !
    Les expressions régulières, j'avais commencé à bien piger le truc.
    Mais là avec DOM, c'est la rechute

  6. #6
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Désolé pour la réponse un peu tardive.

    J'ai moins l'habitude d'utiliser DomDocument pour faire du Xpath (plutôt pour construire des documents). SimpleXMLElement est plus légère et plus rapide à l'exécution pour ce genre de choses, toutefois elle nécessite un document XML bien formé (toute balise, bien refermée, etc) => ça vaut lorsque l'on fait du HTML.

    Du coup Dom est préférable pour ceux qui ne referment pas toutes leurs balises... nous y reviendrons dans l'exemple qui suit.

    Exemple :

    Je reprend ta "spécification" précédente qui est d'extraire les valeurs des balises suivant ce pattern :

    <td headers="header3" class="">(.*)</td>'
    Voici un document xHTML de test (oui je ne me suis pas fatigué à le rendre correcte d'un point de vue "HTML").

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <html>
        <table>
            <tr><td headers="headers3" class="">toto</td></tr>
            <tr>
                <table><tr><td headers="headers3" class="">toto2</td></tr></table>
            </tr>
        </table>
    </html>

    Et voici un script de test avec SimpleXML et Xpath :

    Code php : 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
    [idriss@hp-dv6:~]$ cat test.php 
    #!/usr/bin/php
     
    <?php
        $xml = simplexml_load_file("test.html");
     
        // Chemin absolu des valeurs des td
        $arrayValues = $xml->xpath('/html/table/tr/td[@class="" and @headers="headers3"]');
     
        echo "Version 1 : chemin absolu :\n";
        foreach ($arrayValues as $value){
           echo (string) $value . "\n";
        }
     
        // Chemin relatif (situé n'importe où dans le document) des valeurs des td
        $arrayValues = $xml->xpath('//td[@class="" and @headers="headers3"]');
     
     
        echo "\nVersion 2 : chemin relatif :\n";
        foreach ($arrayValues as $value){
           echo  (string) $value . "\n";
        }
     
    ?>
    [idriss@hp-dv6:~]$ ./test.php
     
    Version 1 : chemin absolu :
    toto
     
    Version 2 : chemin relatif :
    toto
    toto2

    Voilà, tu peux t'inspirer de ce genre de requêtes XPath y compris pour DomXpath, après il faut que tu te documente davantage sur la sémantique XPath.

    D'ailleurs voici le même exemple en DomXpath (j'ai repris que la version chemin relatif) :

    Code php : 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
    [idriss@hp-dv6:~]$ cat test.php
    #!/usr/bin/php
     
    <?php
        $dom = new DOMDocument();
        $dom->loadHTMLFile("test.html");
     
        $dxpath = new DOMXpath($dom);
     
        $lstNodesResult = $dxpath->query('//td[@class="" and @headers="headers3"]');
        if ($lstNodesResult){
            foreach($lstNodesResult as $node){
                echo $node->nodeValue . "\n";
            }
        }
    ?>
    [idriss@hp-dv6:~]$ ./test.php
     
    toto
    toto2

    En tout cas c'est d'une efficacité redoutable pour le parsing de documents basés XML, beaucoup plus que les regexp qui plantent facilement parce que tu as sauté une ligne en plus pour indenter un jour ou l'autre...

    Sinon enfin le test de tolérance avec un document HTML mal formé (le tr n'est pas refermé) :

    Code html : 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
    [idriss@hp-dv6:~]$ cat test.html
    <html>
        <table>
            <tr><td headers="headers3" class="">toto</td>
            <tr>
                <table><tr><td headers="headers3" class="">toto2</td></tr></table>
            </tr>
        </table>
    </html>
    [idriss@hp-dv6:~]$ ./test_domxpath.php 
     
    toto
    toto2
    [idriss@hp-dv6:~]$ ./test_simple.php
     
    PHP Warning:  simplexml_load_file(): test.html:7: parser error : Opening and ending tag mismatch: tr line 3 and table in /home/idriss/test_simple.php on line 4
    PHP Stack trace:
    PHP   1. {main}() /home/idriss/test_simple.php:0
    PHP   2. simplexml_load_file() /home/idriss/test_simple.php:4
    PHP Warning:  simplexml_load_file():     </table> in /home/idriss/test_simple.php on line 4
    PHP Stack trace:
    PHP   1. {main}() /home/idriss/test_simple.php:0
    PHP   2. simplexml_load_file() /home/idriss/test_simple.php:4
    PHP Warning:  simplexml_load_file():             ^ in /home/idriss/test_simple.php on line 4
    PHP Stack trace:
    PHP   1. {main}() /home/idriss/test_simple.php:0
    PHP   2. simplexml_load_file() /home/idriss/test_simple.php:4
    PHP Warning:  simplexml_load_file(): test.html:8: parser error : Opening and ending tag mismatch: table line 2 and html in /home/idriss/test_simple.php on line 4
    PHP Stack trace:
    PHP   1. {main}() /home/idriss/test_simple.php:0
    PHP   2. simplexml_load_file() /home/idriss/test_simple.php:4
    PHP Warning:  simplexml_load_file(): </html> in /home/idriss/test_simple.php on line 4
    PHP Stack trace:
    PHP   1. {main}() /home/idriss/test_simple.php:0
    PHP   2. simplexml_load_file() /home/idriss/test_simple.php:4
    PHP Warning:  simplexml_load_file():        ^ in /home/idriss/test_simple.php on line 4
    PHP Stack trace:
    PHP   1. {main}() /home/idriss/test_simple.php:0
    PHP   2. simplexml_load_file() /home/idriss/test_simple.php:4
    PHP Warning:  simplexml_load_file(): test.html:9: parser error : Premature end of data in tag html line 1 in /home/idriss/test_simple.php on line 4
    PHP Stack trace:
    PHP   1. {main}() /home/idriss/test_simple.php:0
    PHP   2. simplexml_load_file() /home/idriss/test_simple.php:4
    PHP Warning:  simplexml_load_file():  in /home/idriss/test_simple.php on line 4
    PHP Stack trace:
    PHP   1. {main}() /home/idriss/test_simple.php:0
    PHP   2. simplexml_load_file() /home/idriss/test_simple.php:4
    PHP Warning:  simplexml_load_file(): ^ in /home/idriss/test_simple.php on line 4
    PHP Stack trace:
    PHP   1. {main}() /home/idriss/test_simple.php:0
    PHP   2. simplexml_load_file() /home/idriss/test_simple.php:4
    PHP Fatal error:  Call to a member function xpath() on a non-object in /home/idriss/test_simple.php on line 7
    PHP Stack trace:
    PHP   1. {main}() /home/idriss/test_simple.php:0
    [idriss@hp-dv6:~]$

    Conclusion : le SimpleXML est plus léger plus rapide mais pour du parsing HTML mal formé d'un point de vue XML, c'est à proscrire

    Cordialement,
    Idriss

Discussions similaires

  1. [9.2] Utilisation d'un regex dans la fonction substring()
    Par stanmaniaq dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/08/2014, 15h47
  2. Réponses: 10
    Dernier message: 22/10/2010, 18h37
  3. Utiliser le Point (.) dans les regex
    Par LinkinSelim dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 19/06/2007, 19h25
  4. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  5. Utilisation de Pointeurs dans API windows
    Par Drooxy dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 13/03/2003, 22h39

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