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 :

Fonction avec boucle "foreach"


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 253
    Par défaut Fonction avec boucle "foreach"
    bonjour, j'ai un petit souci, je genere un petit pavé HTML de 1 checkbox + texte + input type texte par ligne, et quand on envoi le formulaire j'affiche les resultats avec un foreach (que j'apprends à peine a utiliser), mais le programme me marque : Warning: Invalid argument supplied for foreach() in C:\Programmes\wampserver2.0c\www\intranet\popup_barebone.php on line 195
    (la ligne 195 est la ligne du foreach)

    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
    <table width="280" border="0" cellspacing="0" cellpadding="0" align='center'>    
      <?php  
      $Count = 0;
      for( $p = $Pas; $p <= $NbSLOT; $p += $Pas)
      {
        for( $tb = 1; $tb <= $MaxSizeBarrette; $tb *= 2 )
        {
          $TotRAMcalcule =  $p * $tb;
          //echo $TotRAMcalcule;
          if( $TotRAMcalcule <= $MaxRAM )
          {
            $Count++;
            $Check = "CHECK_".$p."_".$tb;
            $Val = "FSB".$Count;
            echo "<tr><td height='30' align='left' valign='bottom'><label><input type='checkbox' id='CHECK[]'  name='CHECK[]' value='".$Count."'>";
            echo "<font face='arial' size='2' color='#000000'><b>".$p."</b> barrettes de <b>".$tb."Go</b> (".$TotRAMcalcule."/".$MaxRAM."Go)</font> ";
            echo "</label></td><td width='45' valign='bottom'>";
            echo "<input type='text' id='FSB".$Count."' name='FSB".$Count."' size='3' value='";
     
            if( isset( $_POST[$Val] ) )
            {
              echo $_POST[$Val];
            }
            else
            {
              echo $FSB; 
            }
            echo "' onchange='ModificationFSB(this);'></td></tr>";
          }
     
          if( isset( $_POST['ok'] ) )
          {
            foreach( $_POST['CHECK'] as $CC )
            {
              $Value = "FSB".$CC;
              echo "$CC<br>\r\n";
              echo $_POST[$Value]."<br>\r\n";
            }
          }
        }
      }
      ?>
      <tr>
        <td colspan="2"><br /></font><center>
        <input type="submit" id="ok" name="ok" value="Envoyer"></center></td>
      </tr>
    </table>
    merci bcp !

  2. #2
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 852
    Par défaut
    var_dump est ton ami.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    print '<pre>';
    var_dump($_POST['CHECK']);
    exit();
    Dit nous ce que tu as

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 253
    Par défaut
    Oui OK merci j'ai pigé mon problème. C'est parce que mon tableau est vide je n'ai cliqué sur aucun input, il faut que je gère le traitement de l'erreur.

    Mais je bloque sur un truc :
    dans ma boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if( isset( $_POST['ok'] ) )
    {
      foreach($_POST['CHECK'] as $CC )
      {
          $Value = "FSB".$CC;
          echo "ligne N° <b>$CC</b><br>\r\n";
          echo "POST FSB = <b>".$_POST[$Value]."</b><br>\r\n<br>\r\n";
      }
    }
    Je voudrais n'afficher QUE els résultats où l'on a cliqué sur l'input. Actuellement, j'ai 8 résultats, si je clic sur 1 input ça me renvoi 8 fois la valeur d'un même input, si je clique sur les 8 inputs, ça me renvoi 8x8 résultats ! Comment faire dans mon cas pour n'afficher que ce que j'ai cliqué svp ?

    Merci.

  4. #4
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 852
    Par défaut
    var_dump(); est toujours ton ami
    Regarde la valeur d'un input checked et d'un input non checked.
    Tu comprendra donc la condition à ajouter dans ton code.

    Indice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
      foreach($_POST['CHECK'] as $CC )
      {
          if($CC == ?????){
               $Value = "FSB".$CC;
               echo "ligne N° <b>$CC</b><br>\r\n";
               echo "POST FSB = <b>".$_POST[$Value]."</b><br>\r\n<br>\r\n";
          }
      }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 253
    Par défaut
    je suis désolé mais je ne vois vraiment pas.
    var_dump() m'indique des valeurs uniquement quand elscase sont cochées mais pour toutes les cases il affiche les valeurs cochées.

    J'aurais mis if($CC != "" ) mais en fait non !

    je suis sur que c'est tout bête en + !!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 253
    Par défaut
    apres j'ai essayé de mettre le $Count++ dans ma boucle plus haut, à la fin au lieu du début, et comme condition j'ai fait :

    if($CC == $_POST['CHECK'][$CC])

    ça avait marché les 2 premiers tests. puis plus rien. Arf. ça devait être un coup de chance :'(



    En fait, je ne vois vraiment pas à quoi peut être égal $CC.
    Plz help me, je patauge.

    Merci bcp.

Discussions similaires

  1. Update dans fonction avec boucle
    Par YaNnTeB dans le forum Débuter
    Réponses: 1
    Dernier message: 21/03/2010, 17h35
  2. GENIO - Fonction avec Boucle
    Par Slyten dans le forum OTIC (ex-Genio)
    Réponses: 6
    Dernier message: 25/09/2009, 16h04

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