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 :

barre de recherche comme ctrl-F


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 24
    Par défaut barre de recherche comme ctrl-F
    Bonjour,

    j'aimerais sur chacune de mes pages html, installer une barre de recherche qui se comporterait comme le ctrl-F. Cela a certainement déjà été fait mais je ne trouve pas... Et par moi-même je ne m'en sors pas

    Je pense m'y prendre ainsi pour chaque fichier.html:
    1/ Faire lire par un lire.php un fichier.html. Ex: "Eveil.html". Le contenu irait dans une table nommée "Eveil"
    2/ dans "Eveil.html" la barre de recherche compare le mot entré à la table "Eveil"
    3/ s'il est trouvé, la souris va sur le mot trouvé (et surligné)

    Est-ce que l'approche vous parait bonne?
    Est-ce que vous pourriez m'aider, notamment pour le point 3 ?

    merci de votre attention
    bien cordialement,
    daniel

  2. #2
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    PHP agit côté serveur. Cela signifie que quand tu vois la page web PHP a fini son travail et a envoyé le code html au navigateur. Donc toute interaction entre l’utilisateur, sa souris et la page web passe par le JavaScript et/ou Ajax.

  3. #3
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 24
    Par défaut
    PHP agit côté serveur. Cela signifie que quand tu vois la page web PHP a fini son travail et a envoyé le code html au navigateur.

    merci bien badaze

    donc
    1/ j'utilise le PHP pour créer ma table à partir du fichier HTML
    2/ par contre je découvre qu'en effet "on ne peut pas se connecter à une base de données en javascript" mais qu'en AJAX on pourrait appeler un script PHP qui récolterait mes données SQL
    3/ après je pourrai utiliser le JS pour aller positionner mon curseur (focus?)

    tu me confirmes tout ça ?
    merci !
    daniel

  4. #4
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Pour les points 2 et 3 oui (encore que pour le positionnement du curseur je ne suis pas sûr).
    Pour le point 1 je ne comprends pas ce que tu veux dire. C'est ambigu.

  5. #5
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 24
    Par défaut
    je veux juste dire utiliser le PHP pour créer une table qui va contenir un fichier HTML
    genre:
    $requete= "INSERT INTO matable SET nom=\"Machin\", prenom=\"Frank\", note=\"12\" ";

    par contre, pour ne récupérer que le texte du fichier HTML ça va pas être simple, c'est pourquoi avant de me lancer je souhaitais m'assurer d'être dans la bonne direction
    (pareil pour l'Ajax dont je ne fais que découvrir le mot!)

  6. #6
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    C’est toujours ambigu. Est-ce que tu veux dire créer des enregistrements dans une table à partir des données saisies sur la page html ?

  7. #7
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 24
    Par défaut
    Citation Envoyé par badaze
    Est-ce que tu veux dire créer des enregistrements dans une table à partir des données saisies sur la page html ?
    oui, des enregistrements, ou peut-être plutôt un seul. Une ligne dans laquelle on viendrait extraire/chercher le mot ou le groupe de mots qui sera entré dans la barre de recherche

    tu crois que c'est faisable cette affaire ?

  8. #8
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Je suis désolé mais je ne comprends toujours pas. Tu parles de recherche dans une page puis tu mets une requête SQL d'insertion avec 3 champs nom, prénom, âge.
    En informatique la précision dans la terminologie employée est très importante.

    Ci-dessous un exemple avec ajax.

    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
    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
     
    <script>
    var numLigne = 0;
    var idNom    = 'nom';
    var idPrenom = 'prenom';
    var idNote   = 'note';
    function creeInput(id,taille) {
     return "<input type='text' id='"+id+"' size='"+taille+"' />";
    }
    function creeLigneTableau(idNomX, tailleNomX,idPrenomX, taillePrenomX, idNoteX, tailleNoteX) {
     return '<tr>'+'<td>'+creeInput(idNomX,tailleNomX)+'</td>'+'<td>'+creeInput(idPrenomX,taillePrenomX)+'</td>'+'<td>'+creeInput(idNoteX,tailleNoteX)+'</td>'+'</tr>'; 
    }
    function ajoutLigne() {
     
     // sauvegarde de ce qui a été saisi
     savLigne = 0;
     if (numLigne>0) {
      savLigne = numLigne;
      val = new Array();
      for (let i = 0;i<savLigne;i++) {
       var ligne = new Array();
       ligne[0]  = document.getElementById(idNom+i).value;
       ligne[1]  = document.getElementById(idPrenom+i).value;
       ligne[2]  = document.getElementById(idNote+i).value;
     
       val[i]    = ligne;
      }  
     }
     
     // création d'une ligne
     document.getElementById('montbody').innerHTML = document.getElementById('montbody').innerHTML + 
     creeLigneTableau(idNom+numLigne, 30,idPrenom+numLigne, 30, idNote+numLigne, 5);
     numLigne++;
     // remise de ce qui a été saisi
     if (savLigne>0) {
      for (let i = 0;i<savLigne;i++) {
       var ligne = val[i];
       document.getElementById(idNom+i).value    = ligne[0];
       document.getElementById(idPrenom+i).value   = ligne[1];
       document.getElementById(idNote+i).value    = ligne[2];
      }  
     } 
     
    }
    // partie AJAX
    function getXhr(){
            var xhr = null; 
            if(window.XMLHttpRequest) // Firefox et autres
               xhr = new XMLHttpRequest(); 
            else if(window.ActiveXObject){ // Internet Explorer 
               try {
                    xhr = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    xhr = new ActiveXObject("Microsoft.XMLHTTP");
                }
            }
            else { // XMLHttpRequest non supporté par le navigateur 
               alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
               xhr = false; 
            } 
            return xhr;
    }
     
    function envoyer(){
     var xhr = new getXhr();
     // On défini ce qu'on va faire quand on aura la réponse
     xhr.onreadystatechange = function(){
               // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
               if(this.readyState == 4 && this.status == 200){
                       leselect = this.responseText;
                       document.getElementById('toto').innerHTML = leselect;
               }
     }
     xhr.open("POST","test9566b.php",true);
     xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     
     val = new Array();
     for (let i = 0;i<numLigne;i++) {
      var ligne = new Array();
      ligne[0]  = document.getElementById(idNom+i).value;
      ligne[1]  = document.getElementById(idPrenom+i).value;
      ligne[2]  = document.getElementById(idNote+i).value;
     
      val[i]    = ligne;
     }
        var monJSON = JSON.stringify(val);
        xhr.send("json="+monJSON); 
    }
     
     
    </script>
    <table id="matable">
      <tbody id="montbody">
     <tr>
      <td>Nom</td>
      <td>Prenom</td>
      <td>Note</td>
     </tr>
       </tbody>
    </table>
    <hr/>
    <input type="button" value="Ajouter ligne" onclick="ajoutLigne()" />
    <input type="button" value="Envoyer"  onclick="envoyer()"/>
    <hr/>
    <div id="toto"></div>

    test9566b.php (a appeler comme ça ou bien si tu mets un autre nom remplace test9566b.php par le tien dans le code qui est au-dessus)
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    $json = $_POST['json'];
    $array = json_decode($json, true);
    print "J'ai reçu ...<br/>";
    foreach($array as $subArray) {
     
     print "Nom = ".$subArray[0]." - Prénom = ".$subArray[1]." - Note = ".$subArray[2]."<br/>";
    }

  9. #9
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 24
    Par défaut
    Je suis désolé mais je ne comprends toujours pas. Tu parles de recherche dans une page puis tu mets une requête SQL d'insertion avec 3 champs nom, prénom, âge.

    aïe, c'est moi qui suis vraiment désolé. J'ai mis cet exemple de requête PHP juste pour montrer le genre de langage que je pensais utiliser, mais bien sûr ce n'est pas celle-là qu'il me faudra

    Je vais lire/étudier ta réponse mais de suite je voulais corriger ma maladresse

    merci encore pour ton aide!

  10. #10
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 24
    Par défaut
    bonjour

    je reviens vers toi (j'espère ne pas abuser)

    j'ai imprimé et étudié tes scripts. Les 2 différences avec ce que je voulais faire (au départ):
    a) tu réalises la saisie des données au clavier et non via un fichier
    b) tu ne places pas cette saisie dans un fichier ou une base mais tu les affiches
    De plus il doit me manquer un appel à une librairie ou autre chose car j'ai "Call to undefined function: json_decode()"

    Bon, c'est pas grave parce que j'ai encore réfléchi et avancé un peu. Voilà, en plus clair, ce qu'il me faudrait réaliser :

    1/ Lire en PHP ListeFiles.txt. Puis on ouvre un par un les fichiers qu'il contient et qui sont les fichiers HTML à traiter (~50).
    On lit par exemple "Eveil.html", ligne par ligne :
    . on concatène les caractères dans une seule ligne
    . quand on voit "<" on arrête de recopier et quand on voit ">" on reprend
    . on écrit la ligne dans "Eveil.txt"
    2/ Si un mot est entré dans la barre de recherche de "Eveil.html" :
    . il ouvre "Eveil.txt" (en JS/Ajax?)
    . si le mot est présent dans la chaine lue
    . il positionne le curseur dans "Eveil.html" sur le mot

    j'ai travaille sur le point 1 et il ne pose pas de problèmes pour l'instant. Mais là on j'ai vraiment besoin d'aide (je ne trouve pas dans Google ou je ne m'en sors pas) c'est pour la récupération de la chaine dans "Eveil.txt"

    Après, pour le positionnement, je pense, j'espère pouvoir me débrouiller

    merci!!
    daniel

    PS: cette barre de recherche n'est pas un gadget pour le site que je développe : germination.free.fr car, on me l'a dit, il est très dense (~ 2500 citations) et on a du mal à trouver une info précise

  11. #11
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Après être allé faire un tour sur ton site je pense voir compris ton souci.

    Ne prends pas mes remarques pour des critiques.
    Avant tout il y a un souci d'ergonomie. Il y a trop de choses affichées en même temps et de trop de manière différentes. Il y a tellement d'informations qu'on ne sait plus ou donner de la tête. Je m'y suis vite perdu. Tu devrais faire plus sobre.

    Actuellement comment sont stockées toutes tes citations ? Ce sont des pages html ou bien elles sont dans une table d'une base de données ?

  12. #12
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 24
    Par défaut
    bonjour!

    (désolé de ne pas répondre le soir, j'éteins assez tôt l'ordi... )
    oui ce sont des pages html
    merci d'avoir regardé et de m'avoir donné ton avis... même s'il me surprend car j'ai essayé de bien organiser les choses (après bien des tâtonnements) :

    page d'intro-> plan du site-> thèmes/ sous-thèmes avec dans chacun un petit plan, des boutons retours et un fil d'Ariane
    Pour moi ce qu'il manque c'est à chaque page une barre de recherche...

    Comment tu verrais les choses?
    daniel

  13. #13
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 24
    Par défaut
    Aaargh! je viens de trouver un Javascript qui marche sans être perturbé par les DIV imbriqués !
    ici: http://talkerscode.com/webtricks/hig...javascript.php

    regarde le résultat : http://germination.free.fr/But-de-la-vie.html
    je vais continuer à gratter mais je voulais te dire de suite 1/ pour pas que tu cherches 2/ pour te remercier

    (je te recontacterai peut-être pour te demander un tuyau pour ignorer les accents et se positionner )

    amicalement,
    daniel

  14. #14
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    J'ai parcourus le fil de discussion , j'ai donc peut être raté quelque chose mais j'ai l'impression que tu n'es pas certains de ton besoin.

    1- Soit tu veux faire une recherche textuelle sur toute la page , effectivement comme ctrl-f, auquel cas c'est effectivement avec javascript qu'il faut travailler.

    2- Soit tu veux recherche les citations , auquel cas , il faut envisager de stocker des citations dans une base de données et créer un moteur de recherche pour ces citations.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 24
    Par défaut
    bonsoir grunk

    "j'ai l'impression que tu n'es pas certain de ton besoin."
    je l'ai énoncé dès le titre mais c'est vrai que je n'avais pas la moindre idée de comment m'y prendre, et apparemment même, de mauvaises. C'est au fil des discussions et recherches que je commence à obtenir ce que je voulais. Un grand merci à Badaze et encore désolé pour l'avoir induit en erreur avec mon mauvais exemple PHP.

    Pour répondre à ta question je suis bien dans le 1er cas

    daniel

Discussions similaires

  1. Menu comme dans la barre de recherche de Qt Creator
    Par Guillaume1701 dans le forum Débuter
    Réponses: 6
    Dernier message: 05/06/2017, 21h34
  2. Changer la cible de recherche (comme barre de recherche des navigateurs)
    Par eric41 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/02/2009, 12h02
  3. Une barre de menu comme celui de Delphi 2006
    Par pointer dans le forum Delphi
    Réponses: 6
    Dernier message: 22/11/2006, 08h55
  4. barre de recherche dans les fonctions php pour firefox
    Par titoumimi dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 03/02/2006, 10h16

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