1. #1
    Membre à l'essai
    Homme Profil pro
    Touche à tout
    Inscrit en
    mai 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : mai 2017
    Messages : 46
    Points : 22
    Points
    22

    Par défaut Récupération valeur dans un fichier en fonction de la valeur d'une boucle

    Bonjour,

    Je remplis un tableau de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while ($row2 = mysqli_fetch_array($Result)) {
    		echo '<tr>
    				<td class="ligne">'.$row2['Line'].'</td>
    				<td class="cellule">'.$row2['CSL'].'</td>
    				<td class="Cout">'.$row2['NoType'].'</td>
    				<td class="Qty">'.$row2['ProcessDate'].'</td>
    				<td class="NCC">'.$row2['ErrorNumber'].'</td>
    			</tr>';
    												 }
    Je voudrais qu'en fonction de la valeur de ma cellule, une fonction aille lire dans un fichier txt sa correspondance et se remplace.

    Exemple: Si la valeur de '.$row2['ErrorNumber'].' est égal à 1432, je vais chercher cette valeur dans mon fichier et récupère le texte associé (ex: 'je suis ton père') et je remplace '1432' par 'je suis ton père' dans mon tableau.

    Mon fichier texte est de structuré comme suit:

    0 utut
    1 yrtrt
    2 tytyt
    Etc...

    Merci par avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    9 796
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 9 796
    Points : 19 696
    Points
    19 696

    Par défaut

    Bonjour,

    oui, c'est possible.


    ...dans le principe... (une solution) :

    A- On va d'abord mettre tous les couples num-texte dans un array (ca évitera de le recréer à chaque fois)
    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
     
    // creation de l array des couples num-texte
    function translate_create_array_num_to_txt_from_file()
    {
      $translate = array();
      // 1- ouverture du fichier
      $file = '..................';
      open(......);
      // 2- lecture du fichier ligne par ligne
      while(.......)
      {
        // 3- pour chaque ligne, on sépare le 1er (numéro) du 2ème élément (texte)
        $num = $ligne[0]; // numéro
        $txt = $ligne[1] // texte
        $translate[$num] = $txt;
      }
      return $translate;
    }

    B- Au début du fichier, on initialise l'array :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $translate = translate_create_array_num_to_txt_from_file();
    Ensuite, il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    				<td class="NCC">'. $translate[$row2['ErrorNumber']] .'</td>

    N.B. Si tu as une base de données, pourquoi utiliser ici un fichier ?
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire arrivent aisément."
    Nicolas Boileau-Despréaux (1636-1711).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  3. #3
    Membre à l'essai
    Homme Profil pro
    Touche à tout
    Inscrit en
    mai 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : mai 2017
    Messages : 46
    Points : 22
    Points
    22

    Par défaut

    N.B. Si tu as une base de données, pourquoi utiliser ici un fichier ?

    C'est pas faux, et du coup ça serait plus simple non?

    Du coup on ferait comment sans abuser?

  4. #4
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    9 796
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 9 796
    Points : 19 696
    Points
    19 696

    Par défaut

    Bonjour,

    Le mieux :

    • une table translate_error, avec les champs ErrorNumber et ErrorTexte
    • puis une jointure lors de la requête !
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire arrivent aisément."
    Nicolas Boileau-Despréaux (1636-1711).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  5. #5
    Membre à l'essai
    Homme Profil pro
    Touche à tout
    Inscrit en
    mai 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : mai 2017
    Messages : 46
    Points : 22
    Points
    22

    Par défaut

    Je me suis créé une table pour la gestion de mes codes d'erreur, par contre pour la jointure ça va être chaud...
    Je regarde et je reviens si je trouve pas.

    Merci

  6. #6
    Membre à l'essai
    Homme Profil pro
    Touche à tout
    Inscrit en
    mai 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : mai 2017
    Messages : 46
    Points : 22
    Points
    22

    Par défaut

    Je n'arrive pas à faire de jointure, je ne comprends pas trop comment je peux faire.
    Ma requête principale pour les données de mon tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $Query = "SELECT * FROM nccdetails WHERE '".$REFERENCE."' IN(NoType, 'Toutes') And Line = '".$Line."' And CSL = '".$Cell."' And ProcessDate BETWEEN '".$DateEndFull."' AND '".$DateStartFull."' Order by ProcessDate DESC";
    C'est dans cette même requête que je doit faire la jointure?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $Query = "SELECT * FROM nccdetails, nnccode WHERE '".$REFERENCE."' IN(NoType, 'Toutes') And Line = '".$Line."' And CSL = '".$Cell."' And ProcessDate BETWEEN '".$DateEndFull."' AND '".$DateStartFull."' AND nccdetails.ErrorNumber = ncccode.NCCerrorNumber Order by ProcessDate DESC";
    J'ai fais ça mais ça ne fonctionne pas.

  7. #7
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    9 796
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 9 796
    Points : 19 696
    Points
    19 696

    Par défaut

    bon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM nccdetails, nnccode ........
    Déjà, il faut savoir ce que c'est qu'une JOINTURE SQL et comment ça marche... :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $Query = "SELECT * 
       FROM nccdetails DD
       INNER JOIN nnccode NN
          ON DD.ErrorNumber = NN.NCCerrorNumber
     
       WHERE '".$REFERENCE."' IN(NoType, 'Toutes') 
       AND Line = '".$Line."' 
       AND CSL = '".$Cell."' 
       AND ProcessDate BETWEEN '".$DateEndFull."' AND '".$DateStartFull."' 
       ORDER BY ProcessDate DESC";
    En écrivant la requête sur plusieurs ligne, c'est tout de suite plus facile à lire... et à déboguer.


    Au fait, personne ne t'a parlé de requête préparée ?
    (je te laisse chercher ce que c'est...)
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire arrivent aisément."
    Nicolas Boileau-Despréaux (1636-1711).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  8. #8
    Membre à l'essai
    Homme Profil pro
    Touche à tout
    Inscrit en
    mai 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : mai 2017
    Messages : 46
    Points : 22
    Points
    22

    Par défaut

    Ok, je regarderai les requêtes préparées, merci pour l'info.

    Par contre, quand je fais ta requête j'ai une erreur, mais quand je fais la mienne elle fonctionne mais le résultat de ma requête est... bizarre..

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    27 916
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 27 916
    Points : 41 519
    Points
    41 519

    Par défaut

    Si tu ne nous dis pas l'erreur ...
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre à l'essai
    Homme Profil pro
    Touche à tout
    Inscrit en
    mai 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : mai 2017
    Messages : 46
    Points : 22
    Points
    22

    Par défaut

    Voici ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $Query = "SELECT Line, CSL, NoType, ProcessDate, a.ErrorNumber, b.sErrorNumber, b.sErrorText
    			  FROM nccdetails a
    			  INNER JOIN ncccode b 
    			  ON a.ErrorNumber = b.sErrorNumber
    			  WHERE '".$REFERENCE."' IN(NoType, 'Toutes')
    			  And '".$sNCC."' IN(ErrorNumber, 'Tous')
    			  And Line = '".$Line."' 
    			  And CSL = '".$Cell."' 
    			  And ProcessDate BETWEEN '".$DateEndFull."' AND '".$DateStartFull."' Order by ProcessDate DESC";
    EDIT:
    Je n'ai pas d'erreur mais je n'ai pas toutes les valeurs qui devraient être retournées...

  11. #11
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    9 796
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 9 796
    Points : 19 696
    Points
    19 696

    Par défaut

    Si tu n'as pas forcement des numError sur chaque ligne, il faut passer en JOINTURE EXTERNE

    remplace
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    			  INNER JOIN ncccode b
    par
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    			  LEFT OUTER JOIN ncccode b
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire arrivent aisément."
    Nicolas Boileau-Despréaux (1636-1711).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    27 916
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 27 916
    Points : 41 519
    Points
    41 519

    Par défaut

    j'ai une erreur
    Je n'ai pas d'erreur
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Importer une image dans l'entête en fonction de la valeur dans une cellule
    Par guillaume7684 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/10/2016, 14h54
  2. récupération valeur dans un fichier XML
    Par lola79 dans le forum Langage
    Réponses: 14
    Dernier message: 20/04/2012, 12h20
  3. Réponses: 9
    Dernier message: 23/02/2012, 18h33
  4. Difficulté concernant la récupération de valeur dans un fichier xml
    Par Raphael1980 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 12/02/2010, 11h49
  5. [batch]récupération de valeur dans n fichiers
    Par Ted37 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 12/02/2009, 08h00

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