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 :

Preg_replace Erreur: Compilation failed: nothing to repeat at offset 0 [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 38
    Par défaut Preg_replace Erreur: Compilation failed: nothing to repeat at offset 0
    Bonjour,

    Je souhaiterai utiliser la fonction preg_replace avec des donnees provenant de ma base mysql j'ai donc ecrit le script ci-dessous:

    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
    $i = 0;
    $j = 0;
    $reponse_personne = $bdd->query('SELECT id, nomacteur FROM personne');
    $reponse_count_personne = $bdd->query('SELECT COUNT(id) AS nb_personne FROM personne');
    $count_personne = $reponse_count_personne->fetch();
     
    while ($donnees_personne = $reponse_personne->fetch())
    {
    $patterns[$i] = '#'.$donnees_personne['nomacteur'].'#';
    $replacements[$count_personne['nb_personne'] - $j] = $donnees_personne['id'];
    $i++;
    $j++;
    }
     
    echo preg_replace($patterns, $replacements, $donnees['biographie']);
    Lors de l'affichage de ma page je recois l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: preg_replace() [function.preg-replace]: Compilation failed: nothing to repeat at offset 0 in C:\wamp\www\mon_projet\fiche_personne_generic.php on line 91
    La ligne 91 correspondant a la fonction reg_replace.

    Avez vous une idee pour resoudre mon probleme ?
    Merci

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    à mon avis, une de tes requêtes ou une de tes variables que tu passes ensuite à ton preg_replace est vide ou ne correspond pas à un motif (si c'est ton $pattern)...

    une bonne pratique avec la bd c'est de toujours prévoir que ça plante... (et oui ça peut arriver même après ta connexion réussie...

    donc on teste qu'on a bien une ressources et pas false, et on ne met pas un traitement dépendant de ces résultat hors de la zone qui doit correspondre à un résultat valide...


  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Par défaut
    franchement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ($donnees_personne = $reponse_personne->fetch())
    {
    }
    echo preg_replace($patterns, $replacements, $donnees['biographie']);
    Je trouve cela super obsolète si tu est sur php5, si ce n'est pas le cas, faut s'inquiéter

  4. #4
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 38
    Par défaut
    @ascito
    Je debute en PHP donc je m'inspire de tuto que je trouve sur le net.
    Si tu as une autre facon de faire et que tu as un exemple a me donner je suis preneur.

    @ericd69
    J'ai rajoute un if autour de preg_replace afin de verifie que les donnees ne sont pas NULL mais j'ai toujours la meme erreur.

    Le code complet ressemble a 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    try
    {
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=mon_projet', 'root', '', $pdo_options);
    $bdd->query("SET NAMES 'utf8'");
    $reponse = $bdd->query('SELECT nomacteur, nomnaissance, DATE_FORMAT(datenaissance, \'%d/%m/%Y\') AS datenaissance, DATE_FORMAT(datedeces, \'%d/%m/%Y\') AS datedeces, pays, biographie, photo FROM personne WHERE id ='.$_GET['id_personne'].'');
    while ($donnees = $reponse->fetch())
    {
    //d'autre ligne de code
     
    $i = 0;
    $j = 0;
    $reponse_personne = $bdd->query('SELECT id, nomacteur FROM personne');
    $reponse_count_personne = $bdd->query('SELECT COUNT(id) AS nb_personne FROM personne');
    $count_personne = $reponse_count_personne->fetch();
     
    while ($donnees_personne = $reponse_personne->fetch())
    {
    $patterns[$i] = '#'.$donnees_personne['nomacteur'].'#';
    $replacements[$count_personne['nb_personne'] - $j] = $donnees_personne['id'];
    $i++;
    $j++;
    }
     
    if($donnees['biographie'] =! NULL)
    {
    echo preg_replace($patterns, $replacements, $donnees['biographie']);
    }
     
    }
    $reponse->closeCursor();
    }
    catch (Exception $e)
    {
    die('Erreur : ' . $e->getMessage());
    }

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    a quoi sert ton preg_replace ?
    a surligne des mot dans une phrase ?

  6. #6
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 38
    Par défaut
    @stealth35

    Le but de final de ma page est d'afficher la biographie d'un acteur contenant des liens vers d'autre acteur ou film.

    Dans ma base de donne (table personne) les donnees suivantes sont donc enregistrees
    id: 1
    nomacteur: vincent cassel
    biographie: Vincent Cassel est ne le blabla ......

    id: 2
    nomacteur: mathieu kassovitz
    biographie: mathieu kassovitz est ne le blabla ....

    La page concernant vincent cassel affiche le texte suivant
    Par exemple ma page affiche:
    Vincent Cassel est ne le blabla. Il a joue dans la haine realise par mathieu kassovitz.

    Je voudrais que mathieu kassovitz soit remplace par un lien cliquable afin que l'utilisateur puisse acceder a la concernant mathieu kassovitz.

    Pour l'exemple ci dessus je voudrais que le code genere par php soit le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vincent Cassel est ne le blabla. Il a joue dans la haine realise par <a href="fiche_personne_generic.php?id_personne='.$donnees_personne['id'].'">'.$donnees_personne['nomacteur'].'</a>.
    J'espere avoir ete clair

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

Discussions similaires

  1. [RegEx] vbulletin Upgrade preg_replace(): Compilation failed
    Par unja2010 dans le forum Langage
    Réponses: 6
    Dernier message: 13/07/2013, 15h37
  2. [FreePascal] Erreur compilation ou défaut Dev-Pascal ?
    Par molesqualeux dans le forum Free Pascal
    Réponses: 5
    Dernier message: 27/12/2004, 10h00
  3. [Débutant]Erreur compilation !
    Par gandalf_le_blanc dans le forum AWT/Swing
    Réponses: 23
    Dernier message: 30/08/2004, 14h23
  4. Trop de message d'erreurs: compilation KO
    Par jeannot27 dans le forum C++Builder
    Réponses: 6
    Dernier message: 21/01/2004, 16h45
  5. Erreur compilation DX8.1 VC++ 6
    Par d.vidal dans le forum DirectX
    Réponses: 1
    Dernier message: 10/09/2003, 09h04

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