Autor Zpráva
David1256
Profil
Dobrý den, potřeboval bych poradit, jak dělat checkbox formuláře v php, aby mi to pak vypsalo zaškrtnutá pole. Zatím mám kód nějak takto, ale je to pořád nějaký nedokonalý, protože mi to háže následující chyby a nevim, jak to opravit.

Warning: Variable passed to each() is not an array or object in c:\inet_srv\http\doc_root\formulare.php on line 51 zde 20
Notice: Undefined offset: 1 in c:\inet_srv\http\doc_root\formulare.php on line 44 zde 13

<form method="post">
<input type=checkbox name="penize[]" value="dolary" 
<?php
 if (isset($_POST["penize"])){
if ($penize[0]=="dolary" || $penize[1]=="dolary") echo "checked";} 
 ?>
 >Dolary

<input type=checkbox name="penize[]" value="libry"

<?php
 if (isset($_POST["penize"])) {
if ($penize[0]=="libry" || $penize[1]=="libry") echo "checked";  }
 ?>      > Libry

 <input type=submit value=Potvrď>
 <?php
 if (isset($_POST["penize"]))
 echo "Provdený výběr:";
 while(List($h1,$h2)=Each($penize))
 {if($h1>0) echo ", ";
 echo $h2;}
 
 
  ?>
  </form>
AM_
Profil
- kde se vezme proměnná $penize? zřejmě bys do ní nejdřív měl přiřadit $_POST['penize'] nebo používat přímo $_POST['penize'].
- each() se používá jinak, tipuji, že tenhle cyklus jsi odkudsi zkopíroval bez potuchy, jak each() funguje. Nevím ani, co to má dělat.
- „($penize[0]=="libry" || $penize[1]=="libry")“ bych upravil na
(in_array('libry', $penize))
David1256
Profil
Když to změním na
(in_array('libry', $penize))
je to úplně to samé, jen to šetří délku kódu. Proměnná $penize se vezme z tech checkboxů
<form method="post">
<input type=checkbox name="penize[]" value="dolary" >
<input type=checkbox name="penize[]" value="libry">

Ten each sem vzal z knihy, ale nějak to tam není vysvětlené nebo jsem to asi nepochopil ale spíše ta první varianta. Jak byste teda řešili tento script? Zkrátka potřebuju, aby mi to po zaškrtnutí vypsalo to, co jsem zaškrtl.
David1256
Profil
Tak mi to pořád leželo v hlavě, proč to nefunguje a už jsem to vymyslel i pochopil.

<form method="post">

          <input type=checkbox name="Penize[]" value="Dolary"
           <? if (isset($_POST["Penize"])) {if(in_array('Dolary', $Penize)) echo "checked";} ?>>Dolary<br>
          <input type=checkbox name="Penize[]" value="Libry"
           <?if (isset($_POST["Penize"])) { if(in_array('Libry', $Penize)) echo "checked"; }?>>Libry<br>
          <input type=checkbox name="Penize[]" value="Eura"
           <?if (isset($_POST["Penize"])) {if(in_array('Eura', $Penize)) echo "checked";} ?>>Eura<br>
          <input type=submit value="Vyberte"><br>
        </form>
        <? if (isset($_POST["Penize"])) {
             echo "Provedený výběr: ";
             while(List($h1,$h2)=Each($Penize)){ 
          
               echo $h2.  ' ';
             }  
            
           }
        ?>
        </form>


Díky AM_ za
(in_array('libry', $penize))
ušetří to dost kódu

A jinak, jak ses ptal, jak to má fungovat, tak vysvětlím. Popřípadě mě opravte, jestli to říkám špatně.
Zkrátka po zaškrtnutí políčka dolar je tvar pole Penize něco jako $Penize[0]=('Dolar')
Takhle to funguje u všech checkboxů, když chci ke konci vypsat prvky pole tzn. dolary libry atd. musím funkcí List() převést prvky do proměnných $h1 a $h2 něco jako hodnota 1 a hodnota 2, hodnota 1 je je [0] hodnota 2 je ('Dolar), chci tedy vypsat $h2, ale aby se mi vypsaly všechny hodnoty tzn. [0][1][2] musím si vypomoct funkcí each, která vypíše všechny hodnoty tzn libry atd.. Snad to dobře chápu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0