Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  PHP "if" ja "or" kasutamine märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
JOKKER666
HV veteran
JOKKER666

liitunud: 21.09.2002




sõnum 18.01.2010 18:16:04 PHP "if" ja "or" kasutamine vasta tsitaadiga

Tere!

Selline probleem, et oleks vaja kasutada 2 tingumust 1 if lauses.

if($_COOKIE["kysitlus"]!=$valitud_kysitlus || $_POST["kysitlus"]!="vasta")


Mõlemad argumendid eraldi töötavad. Koos, nagu näites, küpsist ei arvestata.
Kommentaarid: 47 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 42
tagasi üles
vaata kasutaja infot saada privaatsõnum
EvilOne
HV vaatleja
EvilOne

liitunud: 25.01.2004




sõnum 18.01.2010 18:28:34 vasta tsitaadiga

OR puhul on tingimuslause tõene kui üks nendest tingimustest on tõene. Et terve tingimuslause oleks tõene, siis tuleks kasutada AND-i.

Ehk siis
if(($_COOKIE["kysitlus"] != $valitud_kysitlus) && (isset($_POST["kysitlus"])))
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
Deadlock
Kreisi kasutaja

liitunud: 16.07.2004




sõnum 18.01.2010 18:36:53 vasta tsitaadiga

TRUE || TRUE = TRUE
TRUE || FALSE = TRUE
FALSE || TRUE = TRUE
FALSE || FALSE = FALSE

TRUE && TRUE = TRUE
TRUE && FALSE = FALSE
FALSE && TRUE = FALSE
FALSE && FALSE = FALSE

_________________
"Believe you can, believe you can't; either way, you're right." - Henry Ford
Kommentaarid: 8 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 8
tagasi üles
vaata kasutaja infot saada privaatsõnum
JOKKER666
HV veteran
JOKKER666

liitunud: 21.09.2002




sõnum 18.01.2010 19:14:17 vasta tsitaadiga

Ongi nii vaja, et kui vähemalt 1 tingimustest on täidetud, läheks if lause tööle. Praegu aga töötab ainult kui on täidetud teine argument. Kui täidetud on esimene tingimus, ei tööta.
Lühidalt käitub, nagu poleks esimest tingimust üldse if lauses sees.

Nt nii töötab asi:
tsitaat:

if($_COOKIE["kysitlus"]!=$valitud_kysitlus)
{
if($_POST["kysitlus"]!="vasta")
{
///funktsioon
}
}

Aga miks teha pikalt, kui peaks saama lühemalt.
Kommentaarid: 47 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 42
tagasi üles
vaata kasutaja infot saada privaatsõnum
EvilOne
HV vaatleja
EvilOne

liitunud: 25.01.2004




sõnum 18.01.2010 19:38:07 vasta tsitaadiga

sel juhul peaks ju siis toimima asi. Kontrolli väärtused üle ja kas küpsised üldse salvestatakse arvutisse. Isiklikult soovitaks sessioone kasutada. print_r() funktsiooniga hea väärtuseid vaadata.
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003




sõnum 18.01.2010 19:38:41 vasta tsitaadiga

See, mis sa selle töötava variandina siin välja tõid, on ju klassikaline AND, mitte OR tehe ikkagi. Ehk sa siiski kontrollid kõigepealt ühe tingimuse täidetust, siis ja ainult siis, kui see on täidetud, kontrollid sa teise tingimuse täidetust. Kui see on ka täidetud, siis teed midagi. See on ju kahe asja omavaheline sidumine sidesõnaga JA, mitte VÕI ehk siis AND, mitte OR ehk && mitte ||. icon_smile.gif
_________________
Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
JOKKER666
HV veteran
JOKKER666

liitunud: 21.09.2002




sõnum 18.01.2010 20:27:15 vasta tsitaadiga

Asi selles, et tegemist küsitlusega millele saab vastata 1 korra ja edasi kuvab vastused. Kui vastata siis esimese laadimisega peale vasta nuopu vajutamist ei laeta küpsist aga laetakse POST infos, et on vastatud. Ja edaspidised laadimised laetakse küpsis. OR operaatoriga peaks ju olema, nagu esimeses postis. Aga millegipärast, nagu varem ütlesin, poleksiki nagu küpsist. Samas proovisin 1kaupa neid tingimusi ja töötas. Kõige alguses echosin ka küpsise infot ja see töötab.
Kommentaarid: 47 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 42
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 18.01.2010 20:35:22 vasta tsitaadiga

JOKKER666, väljasta endale mõlema kontrollitava muutuja väärtused lehele ja võrdle siis käsitsi ka järgi, lisaks võid väljutada lehele ka võrdluste tulemused.
php:
  1. echo "<pre>";
  2. var_dump($_COOKIE["kysitlus"]);
  3. var_dump($_COOKIE["kysitlus"]!=$valitud_kysitlus);
  4. var_dump($_POST["kysitlus"]);
  5. var_dump($_POST["kysitlus"]!="vasta");
  6. echo "</pre>";
Kui teine või neljas rida true vastuse annab siis peaks see if rakenduma.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
EvilOne
HV vaatleja
EvilOne

liitunud: 25.01.2004




sõnum 18.01.2010 20:39:55 vasta tsitaadiga

mina teeks sellise asja ikkagi sessioonidega. tekita sessioonis mingite väärtuste jada, lae sinna erinevad väärtused sisse ja siis saad ju kontrollida, kas teatud väärtus eksisteerib või mitte. Kui kõik on vastatud siis tekita alles küpsis.

vbla eksin, aga ise teeksin nii.
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 18.01.2010 21:00:20 vasta tsitaadiga

EvilOne, oleneb kuidas soov läheneda, ise teeksin üldse kogu asja JS'is ja lõpus saadaks alles vastuse serverile salvestamiseks.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
JOKKER666
HV veteran
JOKKER666

liitunud: 21.09.2002




sõnum 19.01.2010 17:48:44 vasta tsitaadiga

Mina olen võhik ja teen esimest korda.
Aga vaatasin mikk36 koodiga ja millegipärast arvabki, et küpsist pole. Samas kui panen ainult:

if($_COOKIE["kusitlus"]!=$valitud_kysitlus)

siis oleks nagu küpsis olemas ja töötab ka. icon_confused.gif
Ja echo $_COOKIE["kusitlus"]; näitab ka, et olemas.
Kommentaarid: 47 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 42
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 19.01.2010 17:50:24 vasta tsitaadiga

Mis sul siis need neli rida vastuseks andsid?
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
JOKKER666
HV veteran
JOKKER666

liitunud: 21.09.2002




sõnum 19.01.2010 19:39:27 vasta tsitaadiga

NULL
bool(true)
NULL
bool(true)

ja esimene kuva peale vastamist kui post info ka

NULL
bool(true)
string(5) "vasta"
bool(false)


Algul kusjuures tegin selle küsitluse ip listiga. Aga ühes serveris on mingi teema, et vist asub kast sisevõrgus vms, et näeb kõiki külastajaid sama ip ga.
Aga nüüd tahaks juba sportlikust huvist asja tööle saada.


EDIT
proovisin

var_dump(isset($_COOKIE["kysitlus"]));
echo $_COOKIE["kusitlus"];

var_dump annab false
aga echo näitab õiget asja.

Äkki salvestan küpsist valesti..

setcookie("kusitlus", $_POST["kysimus"], $aegumine);
Kommentaarid: 47 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 42
tagasi üles
vaata kasutaja infot saada privaatsõnum
inzinz
HV kasutaja

liitunud: 26.01.2005




sõnum 19.01.2010 20:24:07 vasta tsitaadiga

var_dump(isset($_COOKIE["kysitlus"]));
echo $_COOKIE["kusitlus"];

Vähem vaja üritada eesti keelest äõäöü tähti koodis emuleerida y jms tähtedega, ei teki huvitavaid segadusi icon_razz.gif
Sul on praegu täpselt nii, et kontrollid isset kysitlus ja siis teed echo kusitlus

u ja y on suht erinevad asjad icon_razz.gif Nagu ma saan sellest, et echo kusitlus peale kuvas õiget väärtust, siis vaheta igal pool koodis $_COOKIE['kysitlus'] ära $_COOKIE['kusitlus'] ja asi hakkab tööle icon_razz.gif

Ja pealegi koodis on ka ilusti näha et setcookie('kusitlus'..) teed.
Võta kasutusele ingliskeelne termin mis on kindlalt samas kirjastiilis vms, millel ei tekiks sul kahte kirjapilti kysitlus vs kusitlus icon_razz.gif

_________________
Upload.ee - eestimaine failiupload
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
JOKKER666
HV veteran
JOKKER666

liitunud: 21.09.2002




sõnum 19.01.2010 21:10:36 vasta tsitaadiga

Kurja, mul on tähed ikka õigesti. Aga mikk36 postist kopeerisin käsud ja seal olid segamini hoopis. Var_dump sellepärast ka valesti.

Asi oli mul natuke halvasti mõeldud. Lahendasin asja sellega, et tõstsin if ja else funktsioonid ringi. Sest enne millegipärast ei mõelnud seda, et 1 tingimus on koguaeg täidetud ja kõik töötab õigesti :/.

Sry.
Kommentaarid: 47 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 42
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 19.01.2010 21:13:00 vasta tsitaadiga

JOKKER666 kirjutas:
Kurja, mul on tähed ikka õigesti. Aga mikk36 postist kopeerisin käsud ja seal olid segamini hoopis. Var_dump sellepärast ka valesti.

Asi oli mul natuke halvasti mõeldud. Lahendasin asja sellega, et tõstsin if ja else funktsioonid ringi. Sest enne millegipärast ei mõelnud seda, et 1 tingimus on koguaeg täidetud ja kõik töötab õigesti :/.

Sry.
Minu postituses olid segamini järelikult seetõttu et teema esimeses postituses on juba valed siis.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
JOKKER666
HV veteran
JOKKER666

liitunud: 21.09.2002




sõnum 19.01.2010 22:58:17 vasta tsitaadiga

Õige jah, ma vahepeal proovides erinevaid asju, muutsin millegipärast.
Järgmise korrani. beer_yum.gif
Kommentaarid: 47 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 42
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  PHP "if" ja "or" kasutamine
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.