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 :

Recherche et remplacement : timeout


Sujet :

PHP & Base de données

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 98
    Points : 64
    Points
    64
    Par défaut Recherche et remplacement : timeout
    Bonjour à tous.

    Je vous explique la situation, je suis entrain de commencer à me faire un site perso et je voulais mettre quelques tutos mais je rnecontre un problème.

    Voilà dans ma base de données j ai le tuto donc les explications sont en html mais quand je veuxmettre un bout de code je délimite par donc ca il n'y a pas de problème il me fait un encadré avec mon code mais j'ai un problème parce que je voudrais tester les mots que j'ai écrit pour ssavir lesquels sont des mots clés. donc je vais vous mettre mon 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
    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
    <?PHP
    include("connexionBDD.txt");
    $sql = "SELECT * FROM tutoriel WHERE langage='csharp' AND numTuto=$num";
    $reponse = mysql_query($sql) OR DIE ("ERREUR : ".mysql_error()." <br /> sur la requete : <br /> $sql");
    while ( $donnees = mysql_fetch_array($reponse))
    {
    ?>
    <fieldset> 
    <legend> <?PHP echo strtoupper($donnees['chapitre']); ?> </legend>
    <?PHP 
    $texte = $donnees['contenu']; 
    $chaine = $texte;
    // je regarde ou est le mot code
    $pos = strpos($chaine, "[ code ]");
    if ($TabFich = file("CSharp.txt"))
    {
    //je dis tant qu'il ya un [ code ] je fais :
    while($pos != false)
    {
    // je récupère l'index du début du code
    $indexD = strpos($texte,"[ code ]");
    // je récupère l'index de fin du code
    $indexF = strpos($texte,"[/ code ]") + 7;
    // je récupère une sous chaine ne contenant que le code
    $chaine = substr($texte, $indexD, ($indexF-$indexD));
    $chaine =  str_replace("[ code ]", "<table border=\"0\" width=\"80%\"  align=\"center\" ><tr bgcolor=\"#FFFFFF\"> <td><font size=\"2\" face=\"Verdana\" color=\"#007F0E\"><b> Code C#: </b></font> </td> </tr><tr bgcolor=\"#D1FFC9\"><td><font size=\"2\" face=\"Verdana\" color=\"#000000\">",$chaine);
    $chaine = str_replace("[/ code ]", "</td></tr></table>",$chaine);
    // là j essaye de récupérer le mot
    $j=0;
    while ($j < strlen($chaine))
    {
    $mot="";
    // tant que j < mon code && que le caractére à l indice j est un espace je passe au suivant
    while($j < strlen($chaine) && substr($chaine, $j, 1) == " ")
    {
     $j++;
    }
    // tant qu'il y a des caracteres dans ma chaine je le mets dans mot
    while(substr($chaine, $j, 1) != " ")
    {
    $mot.= substr($chaine, $j, 1);
    $j++;
    }
    // je ressors avec un mot
    for($i = 0; $i < count($TabFich); $i++)
    {
    // je regarde si le mot que je récupère est égal au mot de mon fichier
    if ( $mot == Trim($TabFich[$i]))
    {
    $m = $j;
    // la je remplace le mot dans la chaine par ts des vides ( il n'y a pas de fonctions remove?)
    for($k = 0; $k < strlen($mot); $k++)
    {
    $chaine =  substr_replace($chaine,"", $m);
    $m++;
    }
    // je mets le mot avec la colorisation syntaxique adéquate
    $chaine =  substr_replace($chaine,"<font size=\"2\" face=\"Verdana\" color=\"#005DFF\">".Trim($TabFich[$i])."</font>", $j);
    }
    }
    $j++;
    }
    // quand j ai fini je remplace la partie contenant mon code par mes modifications
    $partieTexte = substr($texte, $indexD, $indexF-$indexD);
    $texte = str_replace($partieTexte, $chaine, $texte);
    // je passe au code suivant
    $pos = strpos($texte, "[ code ]");
    }
    }
    echo $texte;
    ?>
    </fieldset>
    <?PHP
    }
    mysql_close();
    ?>
    Mais comme vous devez vous en douter (vu que je suis là) cela ne fonctionne pas... Il me met :
    Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\version5\tutoCSharp.php on line 165
    La ligne 165 c'est : (je l ai mise en gras dans le code)
    while(substr($chaine, $j, 1) != " ")
    Portant en essaynt en mettant un "die" à la sortie de mon tant que il m'affiche bien la première valeur donc j'imagine que mon code est trop long à l'exécution ??

    Si quelqu'un a une idée je suis preneur.

    Bonne journée à tous et merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Bonjour,

    En fait tu te prend une boucle infinie car le retour de substr n'est jamais égal a " ".

    Tente ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(!is_null(substr($chaine, $j, 1)))
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 98
    Points : 64
    Points
    64
    Par défaut
    merci beaucoup kazou,

    J'ai pas eu le temps de revenir sur le forum depuis mon post et c'est con car j'aurais perdu moins de temps je n'ai trouvé la solution qu'hier soir alors que tu me l'avais déjà posté depuis l'avant veille...

    Encore merci beaucoup à toi !!

    j'ai juste rajouté dans mon TQ la condition : $j < strlen($chaine) cela revient au même à la fin.

    Bonne journée.

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

Discussions similaires

  1. [VBA] Rechercher et remplacer dans un champs
    Par virginie2 dans le forum Access
    Réponses: 2
    Dernier message: 19/07/2006, 11h19
  2. Afficher, rechercher et remplacer dans un fichier
    Par lynal dans le forum Langage
    Réponses: 1
    Dernier message: 13/06/2006, 21h24
  3. Recherche et remplacement d'un caractère dans Word
    Par faiglon dans le forum Access
    Réponses: 3
    Dernier message: 13/02/2006, 14h17
  4. [RegEx] Rechercher et remplacer plusieurs occurences avec expression
    Par nabab dans le forum Langage
    Réponses: 2
    Dernier message: 12/12/2005, 17h12
  5. Réponses: 11
    Dernier message: 01/12/2004, 19h09

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