se positionner à un endroit dans un texte

se positionner à un endroit dans un texte - PHP - Programmation

Marsh Posté le 17-10-2005 à 12:07:17    

Bonjour, voila ma problématique:
 
J'ai un champ dans ma bdd qui contient un log du type:
 
Debut de 'job1'
..
..
..
fin de 'job1'
Debut de 'job2'
..
..
..
fin de 'job2'
 
J'affiche le log complet dans un <textarea>
 
Je souhaiterais me positionner dans le log, à la ligne 'debut de Job2' par exemple.
 
Est-ce possible ?
Merci d'avance.
Rudy

Reply

Marsh Posté le 17-10-2005 à 12:07:17   

Reply

Marsh Posté le 17-10-2005 à 12:11:20    

Avec une regexp bien placée, essaye de transformer ça en :

<textarea id="job1">
  Debut de 'job1'
  ..
  ..
  ..
  fin de 'job1'  
</textarea>
<textarea id="job2">
  Debut de 'job2'
  ..
  ..
  ..
  fin de 'job2'  
</textarea>


Ensuite tu fais un lien du genre :

logjob.php#job2

Reply

Marsh Posté le 17-10-2005 à 12:15:29    

Pour bien cerner mon pb:
 
Mon code:
 

Code :
  1. function showlog()
  2. {
  3. $incid = $_GET['incid'];
  4. $sql = "select log from serverlog where incid='$incid'";
  5. $result = exec_sql($sql)or die(mysql_error());
  6. $row = mysql_fetch_object($result);
  7. print("
  8.          <table width = 100% cellspacing = 0>
  9.          <tr>
  10.          <td width = 100% class='tdshowlog'>
  11.         
  12.          <textarea rows='44' cols='160'>
  13.          $row->log
  14.          </textarea>
  15.          </td>
  16.          </tr>
  17.          <tr>
  18.  " );
  19. }


 
Et ma sortie:
 
4. show_space
-----------------------------------------------------------------------------------------------------------
Debut         : 16/10/05 a 21:04:52
 
 Name                 Data MB       Used MB        Percent Log MB    Log Used  Log Pct  
 -------------------- ------------- -------------- ------- --------- --------- -------  
 codav9                        2000         1419.6   70.98       500      0.06    0.01  
(return status = 0)
 
Fin normale   : 16/10/05 a 21:05:03
      => /sauvegarde/dtsrv1/log/20051016_2104_show_space.log
 
 
5. purge_log
-----------------------------------------------------------------------------------------------------------
Debut         : 16/10/05 a 21:05:03
 
Archivage mensuel programme entre le 5 et le 9 du mois
 
Fin normale   : 16/10/05 a 21:05:04
      => /sauvegarde/dtsrv1/log/20051016_2105_purge_log.log


Message édité par hornetmen le 17-10-2005 à 12:15:40
Reply

Marsh Posté le 17-10-2005 à 12:17:06    

et donc, je connais les intitulés genre "purge_log" etc ........
Et Je peux les passer en argument.
 

Reply

Marsh Posté le 17-10-2005 à 12:18:08    

Bah voilà -> regexp

Reply

Marsh Posté le 17-10-2005 à 13:48:59    

Ok pour regexp.
 
Tu peux m'aiguiller ?
Je voit pas comment faire.

Reply

Marsh Posté le 17-10-2005 à 15:45:17    

je pense que c'est possible en javascript avec une commande du style:  
textArea.setCaretPosition(textArea.getDocument().getLength()) ou
textarea.setSelectionRange(selectionStart, selectionEnd).
 
Consultes les liens suivants:
http://java.sun.com/docs/books/tut [...] tarea.html
http://www.toutjavascript.com/foru [...] 02&start=0
http://www.trucsweb.com/Forum/voir [...] osparent=0
 
Edit. Tuto Regex:
http://www.siteduzero.com/php/regex1.php


Message édité par protoss_tth le 17-10-2005 à 15:47:55
Reply

Marsh Posté le 17-10-2005 à 15:49:46    

Toujours personne ?
J'ai pas de problème avec le regexp, mais avec la gestion de l'affichage.
 
Je sais modifier $row->log pour remplacer "purge_log" en textearea id="purge_log".
 
=> OK
 
Mais après, comment je fais ?
 
Pour info, l'URL est la suivante :
http://xxx/exploit/foor.php?view=s [...] ncid=89585
 
ou view=showlog, => lancement de la fonction "showlog" ecrite plus haut.
 
Alors je sais bien faire un truc du genre:

Code :
  1. $log = $row->log;
  2. $logout = ereg_replace("[?. ]dump_all_db","<textarea id='dump_all_db'> ",$log);


 
Mais c'est la suite qui me pose problème.

Reply

Marsh Posté le 17-10-2005 à 18:29:29    

J'ai rien compris au dernier post et à ce que t'essaies de faire. [:mlc]
 

Code :
  1. $log = preg_replace('#[0-9]\\. ([a-z_ ]+?)\\r?\\n-{107}(.+?)\\.log#s', '<textarea rows="44" cols="160" id="\\\\1">Job \\\\1:' . "\\r\\n" . '\\\\2</textarea><br />', $log);


 
edit: il serait temps de signaler à qqun le problème des antislashs zappés dans les [ cpp ] :/


Message édité par sielfried le 17-10-2005 à 18:34:29

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 17-10-2005 à 19:44:27    

Pour les anti-slash zappés, suffit de les doubler [:spamafote] Une fois qu'on sait ça, plus de problèmes :D

Reply

Marsh Posté le 17-10-2005 à 19:44:27   

Reply

Marsh Posté le 17-10-2005 à 19:54:55    

Ouais je sais bien mais je suis feignant. Et j'oublie toujours. :(


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-10-2005 à 09:58:00    

Bah ecoute, j'ai mon log complet dans la variable $log.
Je connais le nom des jobs.
 
Je veux pouvoir consulter une partie du log, sans tout afficher.
 
J'ai pas de problèmes avec les regexp.
 
Je bute sur l'affichage.
 
Comment à partir de mon $log, puis-je afficher un bloc texte qui commence par "1.job" => "Fin a/normale" du même job.
 

Reply

Marsh Posté le 18-10-2005 à 10:25:42    


Contenu de $log:
 

Code :
  1. 4. show_space
  2. -----------------------------------------------------------------------------------------------------------
  3. Debut         : 16/10/05 a 21:04:52
  4. Name                 Data MB       Used MB        Percent Log MB    Log Used  Log Pct 
  5. -------------------- ------------- -------------- ------- --------- --------- ------- 
  6. codav9                        2000         1419.6   70.98       500      0.06    0.01 
  7. (return status = 0)
  8. Fin normale   : 16/10/05 a 21:05:03
  9.       => /sauvegarde/dtsrv1/log/20051016_2104_show_space.log
  10. 5. purge_log
  11. -----------------------------------------------------------------------------------------------------------
  12. Debut         : 16/10/05 a 21:05:03
  13. Archivage mensuel programme entre le 5 et le 9 du mois
  14. Fin normale   : 16/10/05 a 21:05:04
  15.       => /sauvegarde/dtsrv1/log/20051016_2105_purge_log.log


 
On prend mon problème à l'envers ok ?
Comment je peux lire dans ma variable de "5. purge_log " à "Fin normale   : 16/10/05 a 21:05:04  
      => /sauvegarde/dtsrv1/log/20051016_2105_purge_log.log"
 
J'espere que c'est compréhensible  :)

Reply

Marsh Posté le 18-10-2005 à 10:50:28    

Qu'est-ce que ça donne mon preg_replace ? J'ai testé en local et ça avait l'air OK.
 
Tu peux adapter à partir de là. :spamafote:

Reply

Marsh Posté le 18-10-2005 à 10:54:00    

sielfried a écrit :

Qu'est-ce que ça donne mon preg_replace ? J'ai testé en local et ça avait l'air OK.
 
Tu peux adapter à partir de là. :spamafote:


 
Ca marche ;)
Mais j'ai pas tout compris ;)
 
Donc faut que je pige avant de continuer.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed