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 :

en tableau array [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut en tableau array
    Bonjour.

    On m'a suggéré de mettre en tableau mon code que j'ai résumé à 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
    37
    38
    39
    <?php 
     
    $vop_a = "item 1";  // sera affiché dans le formulaire et affiché si sélectionné             
    $vop_b = "item 2"; //...
    $vop_c = "item 3"; //...
     
    // traitement
    $op_z  = (isset($_POST['op_a'])) ? $_POST['op_a']."\r\n" : null;
    $op_z .= (isset($_POST['op_b'])) ? $_POST['op_b']."\r\n" : null;
    $op_z .= (isset($_POST['op_c'])) ? $_POST['op_c']."\r\n" : null;
     
    echo $op_z.'<br>';
     
    ?>
     
    <form action="tab.php" method="POST">
        <fieldset>
        <legend><strong>Nous contacter</strong></legend><p>
     
            <table border="0">
            <tr>
            <td colspan="4">
              <div class="opz">
                <input type="checkbox" name="op_a" id="op_a" value="<?php echo $vop_a; ?>" /> <label for="op_a"><?php echo $vop_a; ?></label><br><br>
                <input type="checkbox" name="op_b" id="op_b" value="<?php echo $vop_b; ?>" /> <label for="op_b"><?php echo $vop_b; ?></label><br>
                <input type="checkbox" name="op_c" id="op_c" value="<?php echo $vop_c; ?>" /> <label for="op_c"><?php echo $vop_c; ?></label><br>
              </div>
            </td>
            </tr>
            <tr>
            <td width="30%" align="center">
                <input style="width:66px" type="submit" name="envoye" value="Envoyer" />
                <input style="width:66px" type="reset" name="annuler" value="Annuler" />
            </td>
            </tr>
            </table>
     
        </fieldset>
    </form>
    Les options (items) doivent être affiché dans un courriel, mais pour les fins de test, en affichage écran.

    items doit être cumulatif, c'est pour cela les ".=".

    J'ai une base simple des tableaux.
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par dancom5 Voir le message
    On m'a suggéré de mettre en tableau mon code que j'ai résumé à ceci :
    Tu as mal résumé
    Tu aurais du mettre en tableau ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <td colspan="4">
       <div class="opz">
          <input type="checkbox" name="opz[]" id="op_a" value="<?php echo $vop_a; ?>" /> <label for="op_a"><?php echo $vop_a; ?></label><br><br>
          <input type="checkbox" name="opz[]" id="op_b" value="<?php echo $vop_b; ?>" /> <label for="op_b"><?php echo $vop_b; ?></label><br>
          <input type="checkbox" name="opz[]" id="op_c" value="<?php echo $vop_c; ?>" /> <label for="op_c"><?php echo $vop_c; ?></label><br>
       </div>
    </td>
    Et du coup ton traitement se résume à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // traitement
    $opz = implode("\r\n", $_POST['opz']);

  3. #3
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Merci.

    Je croyais que je devais aussi transformer en array mes variables et les input.

    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
     
    <?php
    $vop_a = "item 1";
    $vop_b = "item 2";
    $vop_c = "item 3";
     
    $opz = implode("\r\n", $_POST['opz']);
     
    print_r($opz);
    ?>
     
    <form action="tab.php" method="POST">
    	<input type="checkbox" name="opz[]" id="op_a" value="<?php echo $vop_a; ?>" /> <label for="op_a"><?php echo $vop_a; ?></label><br><br>
    	<input type="checkbox" name="opz[]" id="op_b" value="<?php echo $vop_b; ?>" /> <label for="op_b"><?php echo $vop_b; ?></label><br>
    	<input type="checkbox" name="opz[]" id="op_c" value="<?php echo $vop_c; ?>" /> <label for="op_c"><?php echo $vop_c; ?></label><br>
     
    	<input style="width:66px" type="submit" name="envoye" value="Envoyer" />
    	<input style="width:66px" type="reset" name="annuler" value="Annuler" />
    </form>
    Je me demande s'il y aurait pas moyen de faire en sorte qu'il ait le nombre de INPUT en fonction du nombre de variable et ce automatiquement.

    Exemple : $var1, $var2 va générer input1 et input2

  4. #4
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Je pense avoir compris quelque chose.

    Si j'ai défini mes variables au début, c'est que je ne voulais pas les définir directement dans value="" du formulaire. Autrement, j'aurais moins de code.

    C'est apprécié, merci pour l'aide

  5. #5
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par dancom5 Voir le message
    Je me demande s'il y aurait pas moyen de faire en sorte qu'il ait le nombre de INPUT en fonction du nombre de variable et ce automatiquement.

    Exemple : $var1, $var2 va générer input1 et input2
    Bah si un tableau et foreach() : un court exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $data = array('Item 1', 'Item 2');
    $inputs = array();
    foreach($data as $item) {
       $inputs[] = '<input type="checkbox" name="opz[]" value="'.$item.'" />';
    }
    T'arrêtes pas à la présentation, ce n'est qu'une piste.

  6. #6
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Je l'ai pas correct. Ça m'affiche pas le contenu à cocher.

    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
    <?php
     
    $data = array('Item 1', 'Item 2');
     
    if(isset($_POST['opz'])){
    $opz = implode("<br>", $_POST['opz']);
     
    echo $opz;
    }
    ?>
     
    <form action="tab.php" method="POST">
    <?php
    $inputs = array();
     
    foreach($data as $item) {
       $inputs[] = '<input type="checkbox" name="opz[]" value="'.$item.'" />';
    }
    ?>
     
    	<input style="width:66px" type="submit" name="envoye" value="Envoyer" />
    	<input style="width:66px" type="reset" name="annuler" value="Annuler" />
    </form>

  7. #7
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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
    Billets dans le blog
    12
    Par défaut
    Euh, il faut quand même faire echo() à un moment.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo implode("\n", $inputs)
    ou tu présentes différemment ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form action="tab.php" method="POST">
       <?php foreach($data as $item): ?>
       <input type="checkbox" name="opz[]" value="<?php echo $item; ?>" />
       <?php endforeach; ?>
       <input style="width:66px" type="submit" name="envoye" value="Envoyer" />
       <input style="width:66px" type="reset" name="annuler" value="Annuler" />
    </form>
    Faut quand même phosphorer un peu

  8. #8
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Tien, j'ai réussi :
    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
     
    <?php
     
    $data = array('Item 1', 'Item 2');
     
    if(isset($_POST['opz'])){
    $opz = implode("<br>", $_POST['opz']);
     
    echo $opz;
    }
    ?>
     
    <form action="tab.php" method="POST">
    <?php
    $inputs = array();
     
    foreach($data as $item) {
       $inputs[] = $item.' <input type="checkbox" name="opz[]" value="'.$item.'" />';
    }
    echo implode("<br>", $inputs);
     
    ?>
    	<input type="submit" name="envoye" value="Envoyer" />
    	<input type="reset" name="annuler" value="Annuler" />
    </form>
    merci.

  9. #9
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Oui, celui-la fait bien ce que je veux.
    Je vais l'adapter à mon code dans ma page.

    Avec ce bout de code, c'est faisable aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $couleur = array("yellow","green","blue","red","gray","pink","black");
    	$color = $couleur[rand(0,5)];
    	if($color == "yellow") $code = "jaune";
    	if($color == "green")  $code = "vert";
    	if($color == "blue")   $code = "bleu";
    	if($color == "red")    $code = "rouge";
    	if($color == "gray")   $code = "gris";
    	if($color == "pink")   $code = "rose";
    	if($color == "black")  $code = "noir";
      $captcha = '<div style="width:20px;"><div style="float:right;width:20px;height:20px;background-color:'.$color.'"></div></div>';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    												<input class="form" style="width:75px" type="text" id="color" name="color" value="" size="10" />
    C'est mon captcha. Quand blue apparait, je vais écire bleu. Et ça va passer.
    C'est minimal mais c'est un plus.

  10. #10
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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
    Billets dans le blog
    12
    Par défaut
    Ton code avec les couleurs n'est pas terrible.
    Tu peux faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $colors   = array('yellow', 'green', 'blue', 'red', 'gray', 'pink', 'black');
    $couleurs = array('jaune', 'vert', 'bleu', 'rouge', 'gris', 'rose', 'noir');
    $i = mt_rand(0, count($colors)) - 1;
    $color = $colors[$i];
    $code  = $couleurs[$i];
    ?>

  11. #11
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    C'est cool.
    Le raisonnement, c'est quoi?

    Comment il fait le array pour connaitre le correspondant?

  12. #12
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Mon captcha complet :
    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
    <?php 
    session_start();
     
    $colors   = array('yellow', 'green', 'blue', 'red', 'gray', 'pink', 'black');
    $couleurs = array('jaune', 'vert', 'bleu', 'rouge', 'gris', 'rose', 'noir');
    $i = mt_rand(0, count($colors)) - 1;
    $color = $colors[$i];
    $code  = $couleurs[$i];
     
      $captcha = '<div style="width:20px;"><div style="float:right;width:20px;height:20px;background-color:'.$color.'"></div></div>';
     
    if (isset($_POST['color'], $_SESSION['color'])) {
        if ($_POST['color'] == $_SESSION['color']) {
            echo 'OK';
        }
        else {
            echo 'Error<br><br>';
            echo 'post: '.$_POST['color'].'<br>';
            echo 'sess: '.$_SESSION['color'];
        }
    }
     
    unset($_SESSION['color']);
    $_SESSION['color'] = $code;          
    ?>
     
    <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST">
                <input style="width:66px" type="submit" name="envoye" value="Envoyer" />
                <input style="width:66px" type="reset" name="annuler" value="Annuler" />
     
                    Quelle est cette couleur?
                    <?php	 echo $captcha; ?>								
                <input class="form" style="width:75px" type="text" id="color" name="color" value="" size="10" />
    </form>
    Si je fais juste cliquer, j'obtiens cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined offset: -1 in D:\wamp\www\cchat\captcha.php on line 7 Notice: Undefined offset: -1 in D:\wamp\www\cchat\captcha.php on line 8 Error

  13. #13
    Membre extrêmement actif

    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Par défaut
    Ton code mélange 2 types de scripts. perso, j'aime bien séparer le code client du code serveur.

    J'ai jamais compris comment on arrivait à maintenir une appli en développant comme ça.

    C'est mon avis. Chacun ces méthodes

  14. #14
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Les commandes HTML séparées du PHP

    genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<input ... value="'.$test.'">';
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input ... value="<?php echo $test; ?>">
    que vous voulez dire?

    Il semble que c'est préférable.

  15. #15
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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
    Billets dans le blog
    12
    Par défaut
    Oui j'ai fait une petite erreur (j'ai mal placé le -1):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $i = mt_rand(0, count($colors) - 1);

  16. #16
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Oui j'ai fait une petite erreur (j'ai mal placé le -1):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $i = mt_rand(0, count($colors) - 1);
    Il fait quoi le -1?

    ok.. ça fonctionne.

  17. #17
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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
    Billets dans le blog
    12
    Par défaut
    Les tableaux sont indexés par défaut de [0] à [nombre elements - 1]
    Le -1 te permet de ne pas dépasser la limite supérieure de l'index.

  18. #18
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    si j'ai array("1","2","3","4","5");

    Le -1 fera que ça serait 12345
    ou bie 01234?

    Citation Envoyé par rawsrc Voir le message
    Les tableaux sont indexés par défaut de [0] à [nombre elements - 1]
    Le -1 te permet de ne pas dépasser la limite supérieure de l'index.

  19. #19
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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
    Billets dans le blog
    12
    Par défaut
    Ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $a = array('1', '2', '3', '4', '5');
    // est équivalent à : 
    $a = array(0 => '1', 1 => '2', 2 => '3', 3 => '4', 4 => '5');
    Le tableau contient 5 éléments "numérotés" de 0 à 4 : 0 1 2 3 4
    Le -1 ne concerne pas les valeurs mais les clés
    si tu fait un mt_rand(0, count($a)) count($a) = 5 or les clés du tableau vont de 0 à 4 d'où le -1.
    Tu suis ?

  20. #20
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $a = array('1', '2', '3', '4', '5');
    // est équivalent à : 
    $a = array(0 => '1', 1 => '2', 2 => '3', 3 => '4', 4 => '5');
    Le tableau contient 5 éléments "numérotés" de 0 à 4 : 0 1 2 3 4
    C'est bon ?
    Alors le moins -1, va reporter la valeur correspondante à la clé.

    1 à 1

    je pense comprendre le principe.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 10
    Dernier message: 26/04/2016, 00h52
  2. [Tableaux] Trier un tableau [array]
    Par clemsouz dans le forum Langage
    Réponses: 2
    Dernier message: 15/05/2006, 13h33
  3. [Tableaux] Problème de valeur dans un tableau (array)
    Par Flushovsky dans le forum Langage
    Réponses: 15
    Dernier message: 24/03/2006, 13h56
  4. Tableau(Array) sans taill
    Par krfa1 dans le forum ASP
    Réponses: 4
    Dernier message: 21/09/2005, 22h31
  5. tableau array
    Par laclac dans le forum Langage
    Réponses: 8
    Dernier message: 01/09/2005, 11h04

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