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 :

[Tableaux] Découpage et affichage d'un article (long texte) selon certain paramètres


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut [Tableaux] Découpage et affichage d'un article (long texte) selon certain paramètres
    Bonjour tout le monde,
    J'espère que vous allez bien.

    Je suis face un problème et il est possible que ma méthode soit en cause.
    Pour faire simple, je dois afficher un article (un très très long texte, à ne pas confondre avec article d'E-commerce) sur mon site.
    Cette article (il n'y en aura pas qu'un seul) sera découper en plusieurs pages et en plusieurs paragraphes.

    Jusqu'a maintenant j'ai fais une page d'administration en PHP :

    1/ On choisi le nombre de page html de l'article.
    2/ On choisi le nombre de paragraphe par page.

    3/ On met le titre de l'article, et on a un nombre de champs TEXTAREA à remplir selon le nombre de paragraphe.
    Par exemple si on choisi 3 pages avec 3 paragraphes par page, on aura en tout 9 champs TEXTAREA avec comme attribut :
    name = "PageM-ParaN"
    (où M est le numéro de la page et N est le numéro de paragraphe).

    4/ On en enregistre tout ça dans une table MYSQL : ID, Titre, TotalPage, Article , Date.
    L'article est enregistré dans la BDD de la manière suivante :
    [&&Page1-Para1&&]Blablablablabla Balbalbal blaaall blalala [&&Page1-Para2&&]Blablablablabla Balbalbal blaaall blalala[&&Page1-Para3&&]Tudududududud[&&Page2-Para1&&] etc...
    On passe maintenant à mes 2 questions :

    1/ Existe-il une fonction PHP ou MySQL me permettant de prendre uniquement un morceau de texte : entre [&&Page1-Para3&&] et[&&Page2-Para1&&] par exemple ?

    2/ Est-ce que ma méthode en général est celle à suivre selon ma problématique de départ ? ou bien je fais complétement fausse route et il y'a plus simple et/ou plus souple ?

    Merci d'avance pour vos eclaircissement !

    ++
    ShinJava

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    je reagirai par rapport a ta méthode. peut etre bien qu'elle est facile mais est la bonne? personnellment je pense que non. j'allais proceder comme ça(voir la piece jointe). autrement tu peux toujours suivre ta méthode et utiliser les expression regulière pour l'extraction
    Images attachées Images attachées  

  3. #3
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Tout d'abord merci d'avoir pris le temps de lire mon message et de m'avoir repondu.

    Je ne suis pas tres bon concernant la lecture des schema de bases de données, desolé .
    J'ai juste une question concernant ton schéma : Que siginifie le logo "repertoire jaune avec le losange rouge" ? (afin de comprendre la signification de ce qu'il englobe)

    Avant de m'attaquer aux expressions régulières et de m'enteter sur ma méthode, je vais quand même essayer de comprendre ta méthode qui m'a l'air mieux construite.

    Merci d'avance.

    ++
    ShinJava

  4. #4
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Ce sont des clés étrangères (FK = Foreign Key).

    Il y à une def ici :
    http://sql.developpez.com/definitions/#L1


    Qd à ton problème je te conseille aussi vivement que ouatmad de le modéliser plutot que de bidouiller.

    Pour l'analyse merise, qui t'aidera par la suite à faire un schéma physique
    http://sql.developpez.com/modelisation/merise/

    Pour les clefs etrangères :
    http://sql.developpez.com/sqlaz/ddl/...partie2#L7.2.4

  5. #5
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Merci pour la réponse epox.
    Apres avoir lu tout ca, je comprend mieux les foreign key du coup et un peu mieux les schemas.
    En fait avec de le modèle de ouatmad, on a un truc super structurer.
    Si je reprend son schema, je peux ajouter la colonne "Titre" dans la Table Article ? ca ne changera rien au foreign key logiquement ?

    Avec une 40 aine d'article par mois pour une moyenne de 15 paragraphes par article, ca nous fait 600 lignes dans la table par mois. Il n'y a pas a s'inquieter j'imagine de ce côté la...

    Merci!

    ++
    ShinJava

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    effectivment ShinJava tu peux ajouter d'autres attributs a la table article sans qu'il n'y ait d'interférence avec les foreign key
    Avec une 40 aine d'article par mois pour une moyenne de 15 paragraphes par article, ca nous fait 600 lignes dans la table par mois. Il n'y a pas a s'inquieter j'imagine de ce côté la...
    tu n'as pas a t'inquiter ça marcheras

  7. #7
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Merci beaucoup.
    J'ai encore une petite question.
    A propos de l'insertion des données je compte faire de la manière suivante, dites moi si je me complique la vie ou non :

    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
    
    // Insertion de l'id de l'article (generer automatiquement)
    $query = "INSERT into article (Null, 'Titre')";
    mysql_query($query, $link) or die(mysql_error());
    
    // on recupere l'ID generer automatiquement
    $Id_Article = mysql_insert_id();
    
    // ici on a les couples id_page et id_article selon le nbre de page
    for ($i = 1; $i <= $TotalPage; $i++)
    {
       $query = "INSERT into page ($i,  $Id_Article)";
       mysql_query($query, $link) or die(mysql_error());
    }
    
    // on insert le texte du paragraphe avec son n°paragraphe ($j),  n° article  et  n° de Page ($i)
    for ($i = 1; $i <= $TotalPage; $i++)
    {
         for ($j = 1; $j <= $TotalPara.$Page.$i; $j++)
         {
            $query = "INSERT into page ($j,  $Id_Article, $i, "Text", NOW() )";
            mysql_query($query, $link) or die(mysql_error());
         }
    }
    Je ne vois pas vraiment comment faire autrement

    Merci d'avance !


    ++
    ShinJava

  8. #8
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    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
    // ici on a les couples id_page et id_article selon le nbre de page
    for ($i = 1; $i <= $TotalPage; $i++)
    {
       $query = "INSERT into page ($i,  $Id_Article)";
       mysql_query($query, $link) or die(mysql_error());
    }
    
    // on insert le texte du paragraphe avec son n°paragraphe ($j),  n° article  et  n° de Page ($i)
    for ($i = 1; $i <= $TotalPage; $i++)
    {
         for ($j = 1; $j <= $TotalPara.$Page.$i; $j++)
         {
            $query = "INSERT into page ($j,  $Id_Article, $i, "Text", NOW() )";
            mysql_query($query, $link) or die(mysql_error());
         }
    }
    Tu te rends compte tout de même que tu fais deux fois les insert ?

    la premiere boucle for ne sert à rien.
    Sinon apperement c'est cela, mais tes insert ne sont pas très explicite puisque tu ne mets pas les noms de colonnes, pas simple à vérifer

    bbye

  9. #9
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Citation Envoyé par ePoX
    Tu te rends compte tout de même que tu fais deux fois les insert ?

    la premiere boucle for ne sert à rien.
    Sinon apperement c'est cela, mais tes insert ne sont pas très explicite puisque tu ne mets pas les noms de colonnes, pas simple à vérifer

    bbye
    Ah désolé.
    En fait, je ne fais pas 2 fois le meme insert, je me suis trompé sur le nom de la table, je recommence avec les noms de colonne en +, ca devrait être beaucoup plus clair :

    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
    // Insertion de l'id de l'article (generer automatiquement)
     $query = "INSERT into article (Art_id, Titre) VALUES (Null, 'Titre')";
    mysql_query($query, $link) or die(mysql_error());
    
    // on recupere l'ID de article generer automatiquement
     $Id_Article = mysql_insert_id();
    
    // ici on a les couples ipage_id et article_id selon le nbre de page
    for ($i = 1; $i <= $TotalPage; $i++)
    {
       $query = "INSERT into page (Page_id, Art_id) VALUES ($i,  $Id_Article)";
       mysql_query($query, $link) or die(mysql_error());
    }
    
    // on insert le texte du paragraphe avec son n°paragraphe ($j),  n° article  et  n° de Page ($i)
    for ($i = 1; $i <= $TotalPage; $i++)
    {
         for ($j = 1; $j <= $TotalPara.$Page.$i; $j++)
         {
            $query = "INSERT into paragraphe (Paragraphe_id, Art_id, Page_id, Texte, Date) VALUES ($j,  $Id_Article, $i, "Text", NOW() )";
            mysql_query($query, $link) or die(mysql_error());
         }
    }
    Voila voila, est ce que ca semble bon la ?

    Merci encore

    ++
    ShinJava

    EDIT : Je voulais dire, est-ce que ca semble la bonne méthode à adopter ?

  10. #10
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Effectivement c'est bien mieux

    Il y'à juste le $Page.$i la dedans que je capte pas très bien.
    Mais j'imagine que c'est lié au formulaire tu l'as créé tantôt pour executé cette action.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    for ($i = 1; $i <= $TotalPage; $i++)
    {
         for ($j = 1; $j <= $TotalPara.$Page.$i; $j++)
    ...

  11. #11
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Oui oui effectivement, c'est bien lié au formulaire

    En tout cas, c'est genial les clé étrangère : les delete en cascade, c'est super efficace.
    Bon bah je pense que j'ai tout ce qu'il me faut pour avancer!

    Un grand merci à vous 2, vous m'avez bien guider

    Bonne soirée et encore mille fois merci !
    ++
    ShinJava

    PS : Je met en résolu, si jamais quelqu'un à quelque chose à rajouter n'hésitez pas, je suis à l'écoute !

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 12/04/2010, 17h27
  2. [Tableaux] Problème d'affichage
    Par covin85 dans le forum Langage
    Réponses: 4
    Dernier message: 08/05/2006, 11h37
  3. Réponses: 3
    Dernier message: 07/04/2006, 16h06
  4. [Tableaux] Ajouter l'affichage dynamique d'une image
    Par leloup84 dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 09h14
  5. Réponses: 10
    Dernier message: 13/02/2006, 15h29

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