Autor Zpráva
slovacik
Profil *
ahojte.. dufam že mi budete vedieť poradiť :).. Môj problém znie: Vytvoril som si pole do ktoreho som uložil mena klubov. Prvá hodnota v poli je false.takže mi pri pohlade na list neukazuje nič. Pomocou funkcie foreach som si vytvoril list ktorý mi kluby ukáže.. Teda vyberem si kluby. ale keď ich chcem porovnať či sú rovnké (pritom su rozlicne alebo nezadal som ich vobec) vypíše mi že sú rozdielne. Nechapem ako ich mam teda porovnať ak nie takto . Ď

 
<?php
	echo '<select name="klub_1">';
    foreach ($kluby as $kluc => $hodnota){
		echo "<option value=\"$kluc_1\">$hodnota</option>\n";
	} 
		echo'</select>'; ?>
		
  <?php
	echo '<select name="klub_2">';
    foreach ($kluby as $kluc => $hodnota){
		echo "<option value=\"$kluc_2\">$hodnota</option>\n";
	} 
		echo'</select>'; ?>
		
<? $kluby=array(0=>True, 'jeden_klub', 'druhy_klub'); ?>

if(isset($_POST['klub_1'])!==($_POST['klub_2'])) { //ked kluby nie su rovnka
		echo'klub_1 a klub_2 su rozlicne';
		}else{ echo'kluby nie su rozlicne';}
		





Ďakujem za reakcie
AM_
Profil
<?php $kluby=array(0=>True, 'jeden_klub', 'druhy_klub'); ?>


Jinak se podívej na tu podmínku, jakou jsi napsal:
Pokud "existuje proměnná $_POST['klub_1']" se rovná $_POST['klub_2'].
Výsledek funkce isset() je boolean (true, false), takže samozřejmě výsledek isset() nemá smysl porovnávat s druhým klubem.

Myslel jsi zřejmě toto:
if(isset($_POST['klub_1'])){
  if ($_POST['klub_1']!==$_POST['klub_2']){
    echo 'jsou rozdilne';
  } else {
    echo ' jsoou stejne';
  }
}
mattyZEM
Profil
AM:
if(isset($_POST['klub_1'])){
if ($_POST['klub_1']!==$_POST['klub_2']){
nebo spíš
if(isset($_POST['klub_1']) and $_POST['klub_1']!==$_POST['klub_2']){}

aby neměl zbytečně moc podmínek ve scriptu :P
Majkl578
Profil
mattyZEM:
Tvoje úprava by při nahrazení citované části kódu nedávala smysl. Konkrétně to else v [#2] se nemá vypsat, když $_POST['klub_1'] neexistuje, ale když je splněno $_POST['klub_1'] === $_POST['klub_2'].
slovacik
Profil *
diky.. ale prišiel som na daľší úraz a to : vytvoril som textove polia dve
keď zadám NULU buď v jednom alebo druhom políčku skript skolabuje .. Skript ma vlastne najprv zistit ci su to cisla
takže som pouzil is_numeric. Ale is_numeric() mi pri zadaní nuly vyhodí hlásene že to nie je číslo.. takže som vyskušal použiť niečo takéto ..

<?php if(eregi("^[:alnum:] [0-9][0-9] {1,2}$" , stripslashes(trim($_POST['doma'])))) ?> 
a táto úprava mi vlastne zasa zožerie i písmena i čislice .Takže napríklad keď vytvorím dva take textove polička.. zadám do nich hodnoty . Tie hodnoty môžu byť iba čisto čísla a chcem ich porovnávať skript porovná i písmena .vedeli by ste poradiť ako ošetrím zadaný reťazec aby : Reťazec nebol prázdny, aby reťazec boli len čísla ale nie pismena ?

Dúfam že to nie je tak hrozne zle položená otázka.
Ďakujem ..

Ďakujem
AM_
Profil
slovacik:
Ale is_numeric() mi pri zadaní nuly vyhodí hlásene že to nie je číslo..
Není pravda. 0 i "0" podle is_numeric() číslo je. Leda jestli tam cpeš NULL, ale 1) to nevím, jak se ti povedlo z formuláře dostat 2) to pochopitelně číslo není.

skript skolabuje
srdeční zástava? chybová hláška by bodla. Pochybuju, že to spadne, když předáš 0.

if(eregi
funkce ereg* jsou zastaralé, používej místo nich preg_*, zde preg_match. Výrazy se pouze musí umístit do delimiterů (často se používá /, já raději ~), viz http://php.net/preg_match .

vedeli by ste poradiť ako ošetrím zadaný reťazec aby : Reťazec nebol prázdny, aby reťazec boli len čísla ale nie pismena ?
is_numeric() prostě funguje. Až tedy na výjimky, 1e4 bere jako 1*10^4, ale to zas tolik nevadí. Nebo můžeš naopak použít funkci intval(), která řetězec na číslo převede (v nejhorším to bude nula, jako ochrana proti chybám to stačí).

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: