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 :

Completer un array [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut Completer un array
    Bonjour,

    Je récupère des données depuis ma bdd via le code 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?php
     
    include("../datacamp/conf/conf_bd_pdo.php");
     
    $date1 = "20140401";
    $date2 = "20140430";
     
    $sql_1=$connexion->query("SELECT * FROM datacamp_emplacement WHERE
    '$date1' <= date_fin_emp && '$date2' >= date_deb_emp ORDER BY emplacement");
     
    $data_emp=array();
    while ($row = $sql_1->fetch(PDO::FETCH_ASSOC))
    {array_push($data_emp,$row);}
    $sql_1=NULL;
     
    echo '<table border=1 style="font-size:10pt;font-family:verdana,arial,tahoma">';
     
    echo '<tr>';
     
    foreach($data_emp as $row){
     
    echo '<td width="30" bgcolor ="orange">'.$row['emplacement'].'</td>';}
     
    echo '</tr>';
     
    echo '</table>';
     
    ?>
    mais je voudrais insérer les valeurs manquantes dans mon array lors de la création du tableau html.
    du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td width="30" bgcolor ="red">'.$ma_variable.'</td>';
    J'ai beau triturer le code dans tous les sens je ne tfouve pas de solution...

    Merci de votre aide.

    Cordialement.

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    qu'est ce que tu entends par "valeurs manquantes" ?
    Elles sont manquantes par rapport à quoi ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    J'ai de 1 à 110 emplacements, dans la bdd lorsque il sont occupé je les ressorts avec le code ci dessous.(qui fonctionne tres bien)
    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
     
    <?php
     
    include("../datacamp/conf/conf_bd_pdo.php");
     
    $date1 = "20140401"; 
    $date2 = "20140430"; 
     
    $sql_1=$connexion->query("SELECT * FROM datacamp_emplacement WHERE 
    '$date1' <= date_fin_emp && '$date2' >= date_deb_emp ORDER BY emplacement");
     
    $data_emp=array();
    while ($row = $sql_1->fetch(PDO::FETCH_ASSOC))
    {array_push($data_emp,$row);}
    $sql_1=NULL;
     
    echo '<table border=1 style="font-size:10pt;font-family:verdana,arial,tahoma">';
     
    echo '<tr>';
     
    foreach($data_emp as $row){
     
    echo '<td width="30" bgcolor ="orange">'.$row['emplacement'].'</td>';}
     
    echo '</tr>';
     
    echo '</table>';
     
    ?>
    Pour exemple 3 4 5 7 8 10 11 13 13 13 14 16 17 18 19 21 25 29 31 33 34 35 38 38 39 40 41 42 43 45 46 76 87 88 91 101 106 110
    Et moi je voudrais construire un tableau avec 1-2-3-4-5-6-7-8-etc...
    Les chiffres manquant ne sont pas dans la bdd.

    Par exemple je donne ce tableau contruis uniquement en html pour illustrer ma demande. :
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
     
    <table width="80%" border="1" cellspacing="0" cellpadding="0">
      <tr>
        <td>1</td>
        <td>2</td>
        <td bgcolor="#CC6600">3</td>
        <td bgcolor="#CC6600">4</td>
        <td bgcolor="#CC6600">5</td>
        <td>6</td>
        <td bgcolor="#CC6600">7</td>
        <td bgcolor="#CC6600">8</td>
        <td>9</td>
        <td bgcolor="#CC6600">10</td>
        <td bgcolor="#CC6600">11</td>
        <td>12</td>
        <td bgcolor="#CC6600">13</td>
        <td bgcolor="#CC6600">14</td>
        <td>15</td>
        <td bgcolor="#CC6600">16</td>
        <td bgcolor="#CC6600">17</td>
        <td>18</td>
        <td>19</td>
        <td>20</td>
        <td bgcolor="#CC6600">21</td>
        <td>22</td>
      </tr>
      <tr>
        <td>23</td>
        <td>24</td>
        <td bgcolor="#CC6600">25</td>
        <td>26</td>
        <td>27</td>
        <td>28</td>
        <td bgcolor="#CC6600">29</td>
        <td>30</td>
        <td bgcolor="#CC6600">31</td>
        <td>32</td>
        <td bgcolor="#CC6600">33</td>
        <td bgcolor="#CC6600">34</td>
        <td>35</td>
        <td>36</td>
        <td>37</td>
        <td>38</td>
        <td>39</td>
        <td>40</td>
        <td>41</td>
        <td>42</td>
        <td>43</td>
        <td>44</td>
      </tr>
      <tr>
        <td bgcolor="#CC6600">45</td>
        <td>46</td>
        <td>47</td>
        <td>48</td>
        <td bgcolor="#CC6600">49</td>
        <td>50</td>
        <td>51</td>
        <td>52</td>
        <td>53</td>
        <td>54</td>
        <td>55</td>
        <td>56</td>
        <td bgcolor="#CC6600">57</td>
        <td>58</td>
        <td>59</td>
        <td>60</td>
        <td>61</td>
        <td>62</td>
        <td>63</td>
        <td>64</td>
        <td>65</td>
        <td>66</td>
      </tr>
      <tr>
        <td>67</td>
        <td>68</td>
        <td>69</td>
        <td>70</td>
        <td>71</td>
        <td>72</td>
        <td>73</td>
        <td>74</td>
        <td>75</td>
        <td>76</td>
        <td>77</td>
        <td>78</td>
        <td>79</td>
        <td>80</td>
        <td bgcolor="#CC6600">81</td>
        <td>82</td>
        <td>83</td>
        <td>84</td>
        <td>85</td>
        <td>86</td>
        <td>84</td>
        <td>88</td>
      </tr>
      <tr>
        <td>89</td>
        <td bgcolor="#CC6600">90</td>
        <td bgcolor="#CC6600">91</td>
        <td>92</td>
        <td>93</td>
        <td>94</td>
        <td>95</td>
        <td>96</td>
        <td>97</td>
        <td>98</td>
        <td>99</td>
        <td>100</td>
        <td>101</td>
        <td>102</td>
        <td>103</td>
        <td>104</td>
        <td bgcolor="#CC6600">105</td>
        <td bgcolor="#CC6600">106</td>
        <td>106</td>
        <td>108</td>
        <td>109</td>
        <td bgcolor="#CC6600">110</td>
      </tr>
    </table>

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Comme ça :
    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
    <?php
     
    include '../datacamp/conf/conf_bd_pdo.php';
     
    $date1 = "20140401"; 
    $date2 = "20140430"; 
     
    $sql_1 = $connexion->query(<<<sql
      SELECT  *
        FROM datacamp_emplacement
       WHERE
            '{$date1}' <= date_fin_emp
            AND '{$date2}' >= date_deb_emp
    ORDER BY emplacement
    sql
    );
     
    // par défaut tous les emplacements sont vides
    $data = array_fill(1, 110, 'red');
     
    while ($row = $sql_1->fetch(PDO::FETCH_ASSOC))
    {
        $data[$row['emplacement']] = 'orange';
    }
     
    echo <<<'html'
    <table border="1" style="font-size:10pt;font-family:verdana,arial,tahoma">
        <tr>
    html;
     
    foreach($data as $k => $color)
    {
        echo <<<html
            <td width="30" bgcolor="{$color}">{$k}</td>
    html;
    }
     
    echo <<<'html'
        </tr>
    </table>
    html;
    Tu dois présenter soigneusement ton code : évite absolument ce genre d'horreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while ($row = $sql_1->fetch(PDO::FETCH_ASSOC))
    {array_push($data_emp,$row);}
    c'est illisible, énervant et anti toutes bonnes pratiques

    Un code peut, certes, demander un effort pour être compris mais ne doit en demander aucun pour être lu, AUCUN !

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    tout d'abord merci d'avoir pris le temps de construire le code que je cherchais, et ensuite je prend bonne note de tes remarques sur l'indentation de mon code.

    Cependant je voulais te demander quelques précision si tu as le temps de me les données.

    Je n'ai encore jamais vu et utilisé les signe suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <<<sql
    echo <<<'html'
    Cela permet de remplacer les guillemets et autres apostrophe dans le code ?

    Ou est que je peut trouver des infos à ce propos ,

    Merci pour ton code.

    Cordialement.

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Tout est expliqué ici

    Et effectivement ça améliore grandement la lisibilité du code dans la mesure où ça te dispense de traîner les guillemets, échappement et concaténation...
    Bref, l'essayer c'est l'adopter

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    ok merci pour l'info sur heredoc et nowdoc

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Désolé mais encore une question...

    Pour faire une ligne tout les 22 je ne trouve pas comment modifier ton code pour insérer les balises <tr> et </tr>... Je suis un peu perdu avec les nowdoc..

    Merci.

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Comme ça :
    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
    <?php
     
    include '../datacamp/conf/conf_bd_pdo.php';
     
    $date1 = "20140401";
    $date2 = "20140430";
     
    $sql_1 = $connexion->query(<<<sql
      SELECT  *
        FROM datacamp_emplacement
       WHERE
            '{$date1}'     <= date_fin_emp
            AND '{$date2}' >= date_deb_emp
    ORDER BY emplacement
    sql
    );
     
    // par défaut tous les emplacements sont vides
    $data = array_fill(1, 110, 'red');
     
    while ($row = $sql_1->fetch(PDO::FETCH_ASSOC))
    {
        $data[$row['emplacement']] = 'orange';
    }
     
    echo <<<'html'
    <table border=1 style="font-size:10pt;font-family:verdana,arial,tahoma">
        <tr>
    html;
     
    foreach($data as $k => $color)
    {    
        echo <<<html
            <td width="30" bgcolor="{$color}">{$k}</td>
    html;
     
        if (($k !== 110) && (($k % 22) === 0))    // nouvelle ligne tous les 22 emplacements
        {
            echo <<<'html'
        </tr>
        <tr>
    html;
        }
    }
     
    echo <<<'html'
        </tr>
    </table>
    html;

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Un grand merci.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Bonsoir,

    C'est encore moi...

    J'ai un ultime pb. sur la question relative à ce post ! (dernière fois, promis je reviendrais plus sur se post que j'ai mis en résolu).

    En fait j'ai une colonne "etat" dans la bdd ou je stocke une variable qui est soit 'res', soit 'oqp', soit elle n'existe pas, d'ou ma demande de code précédente.

    Donc pour résumer si y'a rien j'affiche 'green', si il y a quelques choses dans la colonne "emplacement" j'affiche 'red' et c'est parfaitement ce que je voulais par contre j'avais oublié de demander pour la colonne "etat" qui doit m'afficher 'orange' lorsque il y a la valeur 'res' dedans (avec le code que tu m'a donné ça fonctionne parfaitement sauf pour le orange vu que j'avais omis d'en faire mention).

    Pourrais tu me dire comment faire ?

    Merci d'avance.

  12. #12
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Tu ne trouves pas que tu pousses un peu là ?
    En gros, je code à ta place.

    Tu ne vas pas me dire que t'arrives pas à faire un simple if quand même !!
    Si c'est le cas, oriente-toi vers l'atelier poterie ou macramé.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Bonsoir,

    En fait je ne pensais pas que que c'était si simple (d'ou ma demande...)

    Je post la solution à ma dernière question au cas ou ça pourrait aider quelqu'un.

    Effectivement juste un petit IF...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while ($row = $sql_1->fetch(PDO::FETCH_ASSOC))
    {
    if ($row['etat']=='oqp'){$data[$row['emplacement']] = 'red';}
    if  ($row['etat']=='res'){$data[$row['emplacement']] = 'orange';}
    }
    Cordialement.

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

Discussions similaires

  1. action APRES chargement complet ...
    Par PinGuy dans le forum Delphi
    Réponses: 7
    Dernier message: 06/07/2006, 17h16
  2. [PROFILER][THREAD][java.prof] outil gratuit/complet?
    Par narmataru dans le forum Général Java
    Réponses: 11
    Dernier message: 16/11/2005, 12h28
  3. TStringList en array of string
    Par JediKerian dans le forum Langage
    Réponses: 2
    Dernier message: 20/03/2003, 15h37
  4. Réponses: 2
    Dernier message: 23/02/2003, 00h49
  5. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47

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