Strom podmienok ktoré musia navzájom na seba naväzovať

Programovacie jazyky, rady, poradňa...
ATOMIC
Zablokovaný
Zablokovaný
Príspevky: 215
Registrovaný: 26 dec 2007, 19:04
Kontaktovať používateľa:

Strom podmienok ktoré musia navzájom na seba naväzovať

Príspevok od používateľa ATOMIC »

No tak mám takýto stromček podmienok ktorý však nefunguje, logické je prečo. lebo všetko je závislé len na poslednej podmienke. Ktorá ak je splnená, tak sa do databáze uložia veci. Čo je však zle pretože to odignoruje tie podmienky vyššie. Otázka je jasná, ako spraviť aby akceptovalo všetky podmienky? proste ak neplatí jedna z nich, tak sa dalej nepojde.

Kód: Vybrať všetko

if($pass == $pass2){
echo "heslá musia byť rovnaké!";
}
if(isset($_POST['send'])){
}
if(strlen($_POST['nick']) < 3){
echo "nick nesmie mať menej ako 3 znaky!";
}
if(empty($nick) || empty($pass) || empty($pass2)){
echo "nič nesmie ostať prázdne!";
}
else
{
$sql = 'INSERT INTO users (`nick`, `pass`, `ip`) VALUES ("'.$nick.'", "'.$pass.'", "'.$ip.'")';
$result = mysql_query($sql);
header('Location: http://localhost/');
}
Skúšal som ostatné podmienky riešiť cez Elseif. ale to je vlastne nezmysel lebo to je vlastne o tom že ked neplatí jedna tak vykoná druhú atd.

skúšal som to riešiť asi aj takto:

$dat = false;

if(podmienka){
$dat = true;
}
else
{
$dat = false;
}

ale po chvilke som sa v tom stratil a potom no...
neviem poradte mi prosim.
pheo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 212
Registrovaný: 20 sep 2005, 16:53
Bydlisko: moje hniezdo
Kontaktovať používateľa:

Príspevok od používateľa pheo »

no ja by som tvoj overovací blok dal do funkcie a do jednotlivých vetiev return true/false
nasledne po dokoncení sa podla tejto hodnoty rozhodneš
Pripadne ešte lepšie by som to vydel vo vyhodení výniky, v jednotlivých vetvávh pri zlých hodnotách vyhodíš výnimku , do nej napíšeš že prečo a následne ju o zachytíš , ako napr:

Kód: Vybrať všetko


...

try {
funkcia($heslo, $pass);
} catch( ...... ) {
 echo ..... ;
}
V php nerobim, ale myslim si že podporuje výnimky (, ked tak to najdeš v dokumentácií, ako napr:
jurko.info
Medium Expert
Medium Expert
Príspevky: 108
Registrovaný: 22 nov 2006, 0:16
Kontaktovať používateľa:

alebo triviálne

Príspevok od používateľa jurko.info »

Alebo to vyrieš triviálne vnorovaním podmienok, napr.:

Kód: Vybrať všetko

if(podmienka#1){
  if(podmienka#2){
    if(podmienka#3){
      /* samotné spracovanie nakoľko vyhoveli všetky tri podmienky */
    }
    else{
      echo "nevyhovela podmienka#3";
    }
  }
  else{
    echo "nevyhovela podmienka#2";
  }
}
else{
  echo "nevyhovela podmienka#1";
}
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

V prípade, že chceš vypísať viac chybových hlášok naraz (čo je podľa mňa rozumné), daj si pred kontrolami do nejakej premennej prázdny reťazec a pri každej nesplnenej podmienke tam pridaj tú chybovú hlášku.
Po poslednej kontrole zistíš, či je tá premenná stále prázdny reťazec. Ak je prázdna, tak žiadna chyba nenastala a môžeš to uložiť do DB, inak obsah tej premennej s chybami vypíšeš (a do DB nič ukladať nebudeš). ;)
Napísať odpoveď