Autor Zpráva
Fefe
Profil *
neviem si uz rady s tymto

mam jeden input a jeden select.

HTML
<input name="kilometre"  type="text" size="30" />
<select name="pocet" size="0">
  <option value="">Vyberte množstvo</option>
  <option value="10">10</option>
  <option value="20">20</option>
</select>


PHP
 if (isset($_POST['odoslat'])){
if ($kilometre && $pocet){
	$f= $kilometre * $pocet;
	$a= "Celkom $f";
}}

Premennu $a potom zobrazim ako vysledok, ale vzdy mi to vyhodi cislo 1 nerozumiem preco to nevynasobi cisla medzi sebou ak zadam neico do inputu a vyberiem nieco zo selektu tak vzdy je vysledok 1.
V com robim chybu?

Dakujem
laijk
Profil
podla mňa to má byť takto:

 if (isset($_POST['odoslat'])){
if ($_POST['kilometre'] && $_POST['pocet']){
    $f= $_POST['kilometre'] * $_POST['pocet'];
    $a= "Celkom $f";
}}


a premenné $kilometre a $pocet bralo ako typ boolean, aspoň oskúšaj :)
Fefe
Profil *
laijk:
vyskusal som vysledok je 0
Taps
Profil
Fefe:
vlož sem celý kod formuláře
laijk
Profil
vlastne skôr takto, ale asi bude chyba v kode ktorý si tu nedal

 if (isset($_POST['odoslat'])){
if ((isset($_POST['kilometre'])) && (isset($_POST['pocet']))){
    $f= $_POST['kilometre'] * $_POST['pocet'];
    $a= "Celkom $f";
}}
Fefe
Profil *
Prikladam cely kod:

Jedna sa o taku kalkulacku autodopravy ma to vypocitat cenu ale nejde mi to vynasobit medzi tymi dvoma poliami neviem v com je chyba.

Neni to kompletne jedna sa len o predbezny navrh funkcnosti ale zlyhal som na takejto banalite a neviem si stym rady.
<?php
 
 if (isset($_POST['odoslat'])){
		 $i=NULL;
		  $a=NULL;
		  $f=NULL;
		if (isset($_POST['preprava']) > 0) {
		 $preprava=true;
		 }else{
		$preprava=false;	  
		$i .="<span>Vyberte jednu z moznosti prepravy!</span><br>";	  
		}
      if (strlen($_POST['kilometre']) > 0) {
		 $kilometre=true;
		 }else{
		$kilometre=false;	  
		$i .="<span>Vyplnte policko s poctom kilometrov!</span><br>";	  
		}
if (strlen($_POST['dlzka']) > 0) {
		 $dlzka=true;
		 }else{
		$dlzka=false;	  
		$i .="<span>Vyplnte prosim vsetky polia (Rozmer palety)!</span><br>";	  
		}
if (strlen($_POST['pocet']) > 0) {
		 $pocet=true;
		 }else{
		$pocet=false;	  
		$i .="<span>Vyberte prosim mnozstvo paliet! </span><br>";	  
		}

	
if ($kilometre&& $pocet&& $preprava&& $dlzka){
	 $f= $kilometre* $pocet;
	$a= "Cena celkom $f";
}
 }
?>
<form action="forms.php" method="post"  name="formular">
<div class="forms"><table>
<tr>
  <td colspan="2" style="text-align:center">
  <?php
	 if (isset($i)){
		echo '<p>', $i, '</p>';  
	  }else if (isset($a)){
		  echo '<p>', $a, '</p>';  
	  }
	
	   ?></td>
  </tr>
<tr>
<td>Druh prepravy:</td>
<td>Jednorázová:&nbsp;
  <input name="preprava" type="radio" value="jednorazova" />&nbsp;&nbsp;Pravidelná:&nbsp;<input name="preprava" type="radio" value="pravidelna" /></td>
</tr>

<tr>
<td>Preprava v (Km):</td>
<td><input name="kilometre"  type="text" size="30" /></td>
</tr>

<tr>
<td>Rozmer palety / prepravovanej zásielky(mm)</td>
<td><input name="dlzka" type="text" size="10" />&nbsp;&nbsp;<input name="dlzka" type="text" size="10" />&nbsp;&nbsp;<input name="dlzka" type="text" size="10" /></td>
</tr>

<tr>
<td>Počet paliet / zásielok:</td>
<td><select name="pocet" size="0">
  <option value="">Vyberte množstvo paliet</option>
  <option value="0,5">1-5</option>
  <option value="0,6">1-16</option>
</select></td>
</tr>
panther
Profil
Fefe:
když vyberu to podstatné z tvého kódu, tak:
$kilometre = true;
$pocet = true;
$kilometre * $pocet = true * true = ...

Když jsme u toho, zkoušel jsi, co se stane, když někdo do uvedených polí zadá nečíselné hodnoty?
Fefe
Profil *
viem ze to neni v podstate niako ochranene to teraz nie je podstatne pretoze stranky sa zacnu robit az ked vyriesim tento formular preto je to len taky "nacrt" funkcnosti aby som to mohol odprezentovat ale stojim na tomto nasobeni ako nerozumiem preco to nechce nasobit!
panther
Profil
Fefe:
čti pořádně, co píšu. Odpověď na tvou otázku (byť s vykřičníkem na konci) „preco to nechce nasobit!“ jsi dostal.

Ale jestli ani tak nevíš, tak se na ten kšeft raději vykašli a uč se.
Taps
Profil
Fefe:
zkus níže uvedené, změny jsem ti vyznačil. V případě desetinných míst se v php používá tečka!
<?php

 if (isset($_POST['odoslat'])){
      
        if (isset($_POST['preprava']) > 0) {
         $preprava=$_POST['preprava'];
         }else{
        $preprava=false;      
        $i .="<span>Vyberte jednu z moznosti prepravy!</span><br>";      
        }
      if (strlen($_POST['kilometre']) > 0) {
         $kilometre=$_POST['kilometre'];
         }else{
        $kilometre=false;      
        $i .="<span>Vyplnte policko s poctom kilometrov!</span><br>";      
        }
if (strlen($_POST['dlzka']) > 0) {
         $dlzka=$_POST['dlzka'];
         }else{
        $dlzka=false;      
        $i.="<span>Vyplnte prosim vsetky polia (Rozmer palety)!</span><br>";      
        }
if (strlen($_POST['pocet']) > 0) {
         $pocet=$_POST['pocet'];
         }else{
        $pocet=false;      
        $i.="<span>Vyberte prosim mnozstvo paliet! </span><br>";      
        }
if ($kilometre && $pocet && $preprava && $dlzka){
        $a="Cena celkom: ".($kilometre*$pocet);
}
 }

 
?>
<form action="forms.php" method="post"  name="formular">
<div class="forms"><table>
<tr>
  <td colspan="2" style="text-align:center">

  <?php
     if (isset($i)){
        echo '<p>'.$i. '</p>';  
      }elseif (isset($a)){
          echo '<p>'.$a. '</p>';  
      }
    
       ?>
      </td>
  </tr>
<tr>
<td>Druh prepravy:</td>
<td>Jednorázová:&nbsp;
  <input name="preprava" type="radio" value="jednorazova" />&nbsp;&nbsp;Pravidelná:&nbsp;<input name="preprava" type="radio" value="pravidelna" /></td>
</tr>

<tr>
<td>Preprava v (Km):</td>
<td><input name="kilometre"  type="text" size="30" /></td>
</tr>

<tr>
<td>Rozmer palety / prepravovanej zásielky(mm)</td>
<td><input name="dlzka" type="text" size="10" />&nbsp;&nbsp;<input name="dlzka" type="text" size="10" />&nbsp;&nbsp;<input name="dlzka" type="text" size="10" /></td>
</tr>

<tr>
<td>Počet paliet / zásielok:</td>
<td><select name="pocet" size="0">
  <option value="">Vyberte množstvo paliet</option>
  <option value="0.5">1-5</option>
  <option value="0.6">1-16</option>
</select></td>
</tr></table>
<input type="submit" name="odoslat" value="odoslat">
</form>


Fefe
Profil *
Taps:
Dakujem za pekne rozpisane funguje to :)
Len nerozumiem tomu
$pocet=$_POST['pocet'];
mam to chapat tak ze ak je pole vyplnene tak sa zapise do prememnnej v mojom pripade to nemalo hodnotu len
true
ako mi pisal panther No z jeho popisu som to neako nepochopil :/
laijk
Profil
áno, $_POST['pocet'] je hodnota, ktorá sa priradí do premennej $pocet a s tou potom pracuješ,čiže to nebude true, ale to čo ti prišlo formulárom.
panther
Profil
Fefe:
hodnota políčka (třeba 5) je v proměnné $_POST['pocet']. Žádné přiřazení do $pocet provádět nepotřebuješ, můžeš pracovat rovnou s tímto.

Tys s tou hodnotou v $_POST['pocet'] nikde nepracoval, do matematiky jsi posílal dvě proměnné, obě s hodnotou true. Možná jsi nabyl mylného předpokladu, že proměnné $pocet a $_POST['pocet'] spolu mají něco společného. Nemají nic, jsou to dvě různé, jen se jmenují podobně (resp. proměnná se jmenuje stejně jako klíč pole _POST).

Ten výpočet lze provést nejsnáze takto:
$a="Cena celkom: ".($_POST['kilometre']*$_POST['pocet']);

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