Jos mulla on
if (trim($_POST['nimi'] ==)
{
toiminta jatkuu
}
else
{
jotakin muta
}
niin miten saan tuon trim -funktion käänteiseksi?
eli jos nimi EI ole tyhjä, niin toiminta jatkuu?
if (trim($_POST['nimi'] ==)
{
toiminta jatkuu
}
else
{
jotakin muta
}
niin miten saan tuon trim -funktion käänteiseksi?
eli jos nimi EI ole tyhjä, niin toiminta jatkuu?
Vastaukset 15
Vanhimmat
kuuluu olla (huomaa lainausmerkit):
if (trim($_POST['nimi']) == "")
{
toiminta jatkuu jos nimi on tyhjä
}
else
{
jotakin muuta toimintaa
}
Näin (vaihdat toiminnot eri paikkaan):
if (trim($_POST['nimi']) == "")
{
toiminta jatkuu jos nimi _on_ tyhjä
}
else
{
toiminta jatkuu jos nimi _ei_ ole tyhjä
}
Tai sitten (erisuurikuin !=):
if(trim($_POST['nimi']) != "")
ei vieläkään toimi niin kuin haluaisin...
eli tein seuraavasti:
if (trim($_POST['nimi']) != "")
{
toiminta jatkuu, jos nimi _ei_ ole tyhjä
}
else
{
nimi on tyhjä
tulostetaan virheilmoitus
}
mutta tuo jatkoi vaan toimintaa vaikka nimi -kentät jätettiin tyhjäksi..
nimi -kentät? Tuossa viitataan vain yhteen.
eli tuohan oli esimerkki, todellisuudessa tuo jatkuu:
if (trim($_POST['nimi']) != "" OR trim($_POST['snimi']) != "")
{
toiminta jatkuu, jos nimi _ei_ ole tyhjä
}
else
{
nimi on tyhjä
tulostetaan virheilmoitus
}
käyttämällä strlen -funktiota.
Mutta ihmetyttää kyllä, miksei tuo trim() toimi...
if (!empty($_POST['nimi'])).... siis nimi ei ole tyhjä, ei tuossa mitään trimmeilyä kannata käyttää.
if(!empty($_POST['nimi']) OR !empty($_POST['snimi']))
{
tee jotain
}
ei siis toimi vaan tekee vaikka olisi tyhjä..
Sen sijaan strlen -funktio toimii esim. seuraavasti:
if (strlen($_POST['nimi']) >= 2 OR strlen($_POST['snimi']) >= 2)
Kyllä se toimii mutta sinulla on jotain häikkää.
"Sen sijaan strlen -funktio toimii esim. seuraavasti:
if (strlen($_POST['nimi']) >= 2 OR strlen($_POST['snimi']) >= 2)"
Aivan tuossa pitää olla nimi ja snimi kentässä vähintään 3 merkkiä. Ja kaks kirjainta sisältävä EI ole tyhjä, siksi esimerkkini ei toiminut.
empty = 0 ja null
ja jos tekstilootaan ei mitään laiteta niin se on null. Jolloin koodini toki toimii.
Ja muista, että 2 merkkiset etu ja sukunimet laillisia, joten suosittelen tuota emptyä.
en hae siis tuollaista että kirjaimia enemmän kuin 2, vaan että jos kenttä ei ole tyhjä toiminta jatkuu muutoin virheilmoitus.
emptyllä siis kokeilin, jätin kenttiä tyhjäksi mutta toiminta jatkui. jos sen sijaan kokeilen strlen -funktiolla esim. että merkkejä pitää olla vähintään 2, toiminta ei jatku jos on 1 merkki tai 0.
"vaan että jos kenttä ei ole tyhjä toiminta jatkuu muutoin virheilmoitus."
Juu tuollee toimii tuo !empty mikäli ei ole tyhjä niin suoritetaan if lauseen koodi.
Kokeileppas
Niin näät mitä lomakkeesi todella palauttaa ja pastea se tänne ellet sitä ymmärrä.
Kokeiles tällä
if (!empty($_POST['nimi']))
{
echo 'nimi ei ole tyhjä';
}
elseif (!empty($_POST['snimi']))
{
echo 'snimi ei ole tyhjä';
}
else
{
echo 'nimi ja snimi on tyhjä';
}
Jälkimmäinen esimerkki (if-elseif-else) ei käy,
vaan pitäisi tehdää juuri tyyliin if ja sitten or jne.
Täytyy vielä tarkistaa, mikä tuolla on. Mutta voisiko olla niin, ettei tuo toimi käytettäessä OR? mulla on tuossa useampi kenttä kuin nimi ja snimi eli tyyliin if (!empty($_POST['kentta1']) OR !empty($_POST['kentta2']) OR !empty($_POST['kentta3']))
"Mutta voisiko olla niin, ettei tuo toimi käytettäessä OR?"
Ei. Tuo toimii myös OR ja AND käytettäessä, ja myös || ja && jotka ovat sama asia.
Epäilen että olet typottanyt jotain, esim sul on lomakkeessa parikertaa sama kentän nimi jolloin vain jälkimmainen ylikirjoittaa aikasemman.
Suosittelen että kokeilet tuon var_dump jutun niin näät todella mitä lomake palauttaa, ja sitten lähe tekemään tuo if hässäkkä ihan alusta yksi kerrallaan, siis
if (!empty($_POST['kentta1'])) jos toimii niin sitten if (!empty($_POST['kentta1']) OR !empty($_POST['kentta2'])) jne.... niin selviää missä vika.
heti kun tulee mukaan toinen tekijä, ei toimi enää.
Eli:
if(!empty($_POST['kentta1']))
TOIMII
if(!empty($_POST['kentta1']) OR !empty($_POST['kentta2']))
EI TOIMI
Ahaa nyt selvisi missä vika.
if(!empty($_POST['kentta1']) OR !empty($_POST['kentta2']))
Tosi jos kentta1 TAI kentta2 ei ole tyhjä. Tätähän et halunnutkaan.
if(!empty($_POST['kentta1']) AND !empty($_POST['kentta2']))
Tosi jos kentta1 JA kentta2 ei ole tyhjiä.
nyttenhän se toimii kuin unelma, suuret kiitokset!:)