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 :

Créer un générateur de texte à trous


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Par défaut Créer un générateur de texte à trous
    Bonjour,

    Je voudrais créer un générateur de texte à trous avec une base de données :

    On entre un texte dans un textarea et on place des balises aux mots que l'on veut faire chercher.

    Exemple :

    dans le [$]texte[/$], les premieres.

    Le mot texte sera à trouver.

    ----------------------------------------------

    Dans un premier temps, il faut ajouter le mot dans la base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $texte = "dans le [$]texte[/$], les premieres";
    $texte_bis = str_replace("[$]", '<?php $req = mysql_query("INSERT INTO rep_text_trou (reponse, position) VALUES (\'', $texte);
    $texte_bis = str_replace("[/$]", '\', \'$m\')"); ?> ', $texte_bis);
    echo $texte_bis;
    ?>
    Le problème c'est que lorsque j'affiche la source dans firefox j'ai :

    dans le <?php $req = mysql_query("INSERT INTO rep_text_trou (reponse, position) VALUES ('texte', '$m')"); ?> , les premieres
    ----------------------------------------------

    De plus, j'ai un autre problème : Il faudrait pouvoir remplacer [$]texte[/$] par $tab[].

    Merci

  2. #2
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Par défaut
    Bon la méthode n'est pas la bonne.

    Utilise stripos ou mieux une expression reguliere pour extraire ton mot avec preg_match_all.
    Met les dans un tableau

    Une fois que tu as tous tes mots, executes tes requetes sql.

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Par défaut
    Donc voilà, j'ai utilisé ce que tu m'as dit pour faire les requetes :

    Maintenant le texte ressemble à ça :

    dans le [res_here], les [res_here]
    Je voudrais remplacer les "[res_here]" par <? echo "$tab1[$k]"; $k++; ?>

    Comment procéder ?

    Merci

  4. #4
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <? echo "$tab1[$k]"; $k++; ?>
    Pourquoi veux tu constamment ouvrir ta balise php ????

    Ton systeme de texte a trou, voici la marche à suivre :
    - Extraire tous les textes direction un tableau (instructions preg_match_all)
    - Parcourir ce tableau et lancer sur chaque element une requete SQL pour inserer tes données dans la base
    - Faire un preg_replace() pour remplacer les balises et le texte par ce que tu veux.

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Par défaut
    Ok, mais comment incrementer $k ?

    Merci

  6. #6
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Par défaut
    Pas bete...

    Bon supposons que tu aies tes textes dans un tableau (etape du debut), appellé $array1.

    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
     
    $text = "mon text avec [text1], [text2], [text3]";
    $array1 = array("text1", "text2", "texte3");
    $array2 = array_keys($array1);//Tu obtiendra un tableau (1, 2, 3);
     
    //Traitement du tableau 1 pour rajouter prefixe et suffixe
    function text_alter(&$item1, $key, $prefix, $suffix) {
        $item1 = "$prefix.$item1.$suffix";
    }
     
    //Traitement du tableau 2 pour rajouter prefixe et suffixe
    function text_remplacement(&$item2, $key, $array) {
        $item2 = $array[$item2];
    }
     
    array_walk ($array1 , 'text_alter', '[', ']');//j'aime pas trop cette fonction car elle travaille sur une reference du tableau (neanmoins elle est facile à prendre en main)
    array_walk ($array2 , 'text_remplacement', $tab);
     
    $text_final = str_replace($array1 , $array2, $text );
    Voila une facon de faire.
    Au lieu d'utiliser array_walk, je te conseille d'employer des boucles (c'est plus clair à la relecture)

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

Discussions similaires

  1. Créer des zones de texte dynamiquement
    Par supertoms dans le forum IHM
    Réponses: 7
    Dernier message: 17/04/2008, 09h10
  2. Créer une zone de texte de taille défini?
    Par tmk21fr dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/07/2007, 07h04
  3. Créer une saisie de texte sans formulaire
    Par Matgic95 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/01/2007, 12h20
  4. Créer un éditeur de texte "avancé" non BB code
    Par GritNatz dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 12/01/2007, 15h57
  5. Créer animation à appliquer sur texte
    Par p0Kep0K dans le forum Flash
    Réponses: 5
    Dernier message: 25/09/2006, 16h08

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