Autor | Zpráva | ||
---|---|---|---|
Dieee Profil |
#1 · Zasláno: 25. 11. 2010, 21:00:10
Ahoj,
zase sem píšu je mi to trapný :( Potřeboval bych poradit. Nechápu čim by to mohlo být. Mám formulář, kde mám selecty a input. Chtěl bych udělat, že pokud v selectu bude value 1 a input(textový) bude prázdný tak mi to napíše chybovou hlášku. Jednoduchý! ANO!.. <?php if (!isset($_POST['submit'])) { include 'reg.php'; exit; } else { if(isset($_POST['select']['input'])){ if(($_POST['select'] == '1') || empty($_POST['input'])){ $reg_error = 'Nevybral jsi ani jednu vec!'; include 'reg.php'; exit; } } echo 'Vyplnil jste formulář dobře' } ?> Celý by mě to fungovalo, kdyby tam nebyl ten input :( Jak kdyby mi to nečetlo, že pokud Input(textový) bude prázdný tak to vyhodí chybu. Děkuji za rady |
||
Keeehi Profil |
#2 · Zasláno: 25. 11. 2010, 21:32:40
Dieee:
Asi takto: <?php if (!isset($_POST['submit'])) { include 'reg.php'; exit; } elseif($_POST['select'] == 1 and empty($_POST['input'])){ $reg_error = 'Nevybral jsi ani jednu vec!'; include 'reg.php'; exit; } else echo 'Vyplnil jste formulář dobře'; ?> Nějak nechápu význam tvého osmého řádku. |
||
Dieee Profil |
#3 · Zasláno: 25. 11. 2010, 21:54:17
Keeehi:
Vyhodilo mi to chybu Notice: Undefined index: select Řekl bych, že by to mělo být něco že nemám pojmenovaný selecty, ale to mám správě - každej name="select". Napadá tě něco? Jinak osmým řádkem jsem se domníval, že se zeptam jestli tam opravdu ten select a input je?! (Máš recht jak si to čtu tak je to nanic) =D |
||
panther Profil |
#4 · Zasláno: 25. 11. 2010, 21:55:41 · Upravil/a: panther
Dieee:
ukaž, jak vypadá to HTML. My to nevíme. Prvek s name="select" tam není, jinak bys neměl „Undefined index“.
|
||
Dieee Profil |
#5 · Zasláno: 25. 11. 2010, 22:03:42 · Upravil/a: Dieee
<b>Ovoce: </b><select name="select" id="select1"> <option value="1" disabled selected>Vyberte svoje ovoce</option> <?php include("ovoce.php"); ?> </select> <b>Zelenina: </b><select name="select" id="select2"> <option value="1" disabled selected>Vyberte svoji zeleninu</option> <?php include("zelenina.php"); ?> </select> <input name="vyber_uzivatele" type="radio" onclick="testRadio()" id="input3" ><input type="text" name="input" disabled> Inputy a selecty ovládaj ještě "radio" proto disabled. Když zmáčknu "radio" pak do inputu můžu zapisovat (je to psaný v JS), když mám označenej input tak se mi disabled ostatní selecty a naopak. ** Napadá mě, nemusím v php napsat, že to napřed musí zjistit jestli to je disabled nebo ne?? |
||
Keeehi Profil |
#6 · Zasláno: 25. 11. 2010, 22:20:09
panther:
Může tam být, jenom nebyl odeslán. Dieee: K scriptu se dostane jen jeden select, protože ten druhý přepíše ten první, jelikož mají stejná jména. Doporučil bych ti si zjistit, co že ti to vlastně všechno v proměnné $_POST přichází. Takto: print_r($_POST); |
||
Dieee Profil |
#7 · Zasláno: 25. 11. 2010, 22:28:04 · Upravil/a: Dieee
Keeehi:
Toto mi vypíše Array ( [vyber_uzivatele] => on [input] => [heslo1] => gaga [submit] => Odeslat ) Pokud mám "radio" který zapíná select vše je v pořádku hodí mi to error. Jakmile zmáčknu "radio" na input hned mi to vypíše tu hlášku a takhle vypadá výpis z $_POST. |
||
Anonym Profil * |
#8 · Zasláno: 25. 11. 2010, 22:34:03
Když není nic vybráno a zárověň prázdný text form:
<script> function kontrola() { var chyba = 0; if(document.form.select1.value!='nic' || document.form.text.value!='') { document.getElementById('alert1').innerHTML = ""; document.getElementById('label1').style.color='green'; document.getElementById('label1').style.color='green'; } if(document.form.select1.value=='nic' && document.form.text.value=='') { document.form.select1.focus(); document.getElementById('alert1').innerHTML = "Vyber ovoce"; document.getElementById('label1').style.color='red'; var chyba = 1; } if (chyba==0) return true; else return false; } </script> <form action="vyber.php" name="form" onsubmit="return kontrola()" method="post"> <span id="label1"><b>Ovoce: </b></span><span id="alert1"></span> <select name="select1" id="select1"> <option value="nic">Vyberte svoje ovoce</option> <option value="jablko">Jablko</option> </select> <input type="text" name="text" id="plocha" /> <input type="submit" value="Odeslat" /> </form> |
||
Dieee Profil |
#9 · Zasláno: 25. 11. 2010, 22:35:57
Anonym:
Díky, ale chtěl bych to vyřešit php :) |
||
Anonym Profil * |
#10 · Zasláno: 25. 11. 2010, 22:39:41
pomocí php je to ještě lehčí:
if ($_POST["select1"]=='nic' and $_POST["text"]=='') echo 'OK'; else echo 'KO'; |
||
Anonym Profil * |
#11 · Zasláno: 25. 11. 2010, 22:43:28
if(($_POST['select'] == '1') || empty($_POST['input'])) ... Jak kdyby mi to nečetlo, že pokud Input(textový) bude prázdný tak to vyhodí chybu.
zkus místo empty() to elseif($_POST['select'] == 1 and $_POST['input']=='') |
||
Dieee Profil |
#12 · Zasláno: 25. 11. 2010, 22:44:39
Anonym:
To jsme zkoušeli, ale vypíše mi to Chybu Notice: Undefined index: select1 |
||
Anonym Profil * |
#13 · Zasláno: 25. 11. 2010, 22:46:31
jo já jsem tam dal select1 místo toho select, protože tam bylo select 2x
tak přepiš select1 na select |
||
Dieee Profil |
#14 · Zasláno: 25. 11. 2010, 22:48:13
Anonym:
Pořád to samí jen Notice: Undefined index: select =D grrr nechápu to! |
||
Anonym Profil * |
#15 · Zasláno: 25. 11. 2010, 22:49:59
a je tam <select name="select... ?
|
||
Dieee Profil |
#16 · Zasláno: 25. 11. 2010, 22:52:09
je to tam dokonce 5x u 5 selektů samozřejmě a každý jsem zkontroloval tak 100x =D Nechápu, fakt ne!
|
||
Keeehi Profil |
#17 · Zasláno: 25. 11. 2010, 22:57:04
Ze [#7] je nejspíše vidět kde je problém. $_POST["select"] prostě neexistuje. Máš 2 možnosti.
1) Ignorovat tuto hlášku. Je to vlastně jen upozornění a funguje to i tak normálně. 2) Někam na začátek dát $select = (isset($_POST["select"])?$_POST["select"]:""); a potm dál ve scriptu místo $_POST["select"] používat $select.
|
||
Anonym Profil * |
#18 · Zasláno: 25. 11. 2010, 22:59:35
Schválně jsem si to zkusil a toto mi jde:
<?php if ($_POST["select1"]=='nic' and $_POST["text"]=='') echo 'Není nic vybráno a zároveň je nevyplněné textové pole'; else echo 'Něco je vybráno'; ?> <form action="vyber.php" name="form" onsubmit="return kontrola()" method="post"> <span id="label1"><b>Ovoce: </b></span><span id="alert1"></span> <select name="select1" id="select1"> <option value="nic">Vyberte svoje ovoce</option> <option value="jablko">Jablko</option> </select> <input type="text" name="text" id="plocha" /> <input type="submit" value="Odeslat" /> </form> |
||
Keeehi Profil |
#19 · Zasláno: 25. 11. 2010, 23:06:52
Anonym:
Protože takto se vždy odešle select s name select1, takže index select1 u pole $_POST existuje. Předpokládám, že prohlížeč Dieeeovi select kvůli disabled neodesílá, takže v POST se nevytvoří index select1, přes který se pokouší potom do pole dostat a proto dostává to upozornění, že takový index neexistuje. |
||
Dieee Profil |
#20 · Zasláno: 25. 11. 2010, 23:15:24 · Upravil/a: Dieee
Keeehi:
To je sice pěkný, ale když to udělám nevyplněný pole projde kontrolou a funguje to jako by se nic nestalo :-/ A to nechci proto se s tím tak seru! :( Anonym: Jo já vim, mám to stejně fakt že jo! Zkusil jsem to na nový stránce a tam mi to funguje (samozřejmě). Nevim v čem je error na tý co mám teď. *** Pokud použiju ten tvůj jednoduchý php script a dám ho do mého formuláře. Napíše to Notice: Undefined index: select + "Něco je vybráno" =DD |
||
Anonym Profil * |
#21 · Zasláno: 25. 11. 2010, 23:22:36
Aha v tom odeslaném není žádný select Array ( [vyber_uzivatele] => on [input] => [heslo1] => gaga [submit] => Odeslat ) - přitom tam vidím zapnutý radio.
Dieee: Takže bude mít pravdu Keeehi a chyba bude v tom disabled. Zkusil bych bádat v tom javascriptu, který má asi vypínat ten disabled. Dá se to taky udělat tak, že když se něco napíše do formu, tak javascript udělá ze selectu disabled- to by se ti nehodilo? |
||
Dieee Profil |
#22 · Zasláno: 25. 11. 2010, 23:37:35 · Upravil/a: Dieee
Anonym:
No bádat v tom js hmm nejsem žádnej profík =D nevim jestli najdu chybu... Klidně ho sem napíšu nevidím v něm nic extra. function testRadio(){ document.getElementById("select1").disabled = !(document.getElementById("input1").checked) document.getElementById("select2").disabled = !(document.getElementById("input2").checked) if(document.myForm.vyber_uzivatele('input3').checked){ document.myForm.input11.disabled=false; document.getElementById("select1").disabled } else{ document.myForm.input11.disabled=true; document.myForm.input11.value=''; } if (document.getElementById("select1").disabled) document.myForm.select1.selectedIndex='Vyberte svoje ovoce'; if (document.getElementById("select2").disabled) document.myForm.select2.selectedIndex='Vyberte svoji zeleninu'; if (document.getElementById("input11").disabled) document.myForm.input11.value=''; } Vidíš v tom něco? Kdyby to šlo udělat v php tak to udělám, jenomže jsem to chtěl mít dynamicky, né až po tom co zmáčknu submit :( |
||
Keeehi Profil |
#23 · Zasláno: 25. 11. 2010, 23:39:34
Dieee:
„To je sice pěkný, ale když to udělám nevyplněný pole projde kontrolou a funguje to jako by se nic nestalo :-/ A to nechci proto se s tím tak seru! :(“ Problém je v tom, že se ti neodesílá ten select, proto to tou podmínkou projde, protože se nerovná 1. Když se neodešle, nemůže se rovnat jedničce. |
||
Anonym Profil * |
#24 · Zasláno: 25. 11. 2010, 23:41:34
if(document.myForm.vyber_uzivatele('input3').checked){ document.myForm.input1.disabled=true; document.getElementById("select1").disabled } else{ ve zvýrazněném řádku bude určitě chyba - je celý? javascript nehlásí errory, takže ti to tam krachne a neoddisabluje se to slovo "neoddisabluje" nemá nic společného s žaludečními problémy |
||
Anonym Profil * |
#25 · Zasláno: 25. 11. 2010, 23:43:41
Když se neodešle, nemůže se rovnat jedničce. to je taky pravda. Teď zjistit, proč se to neodesílá.
|
||
Dieee Profil |
#26 · Zasláno: 25. 11. 2010, 23:49:33
Anonym:
Promiňte. Upravil jsem to newim proč takhle!(aby se tomu dalo líp porozumět a posral jsem to) Ten řádek jsem tam dal proto,že když se spustí formulář automaticky (checked) se dá input1 a select1(neni disabled) a pokud přepnu na input3 a bude check tak se disabluje select1 a zároveň se oddisabluje input11 aby se mohl napsat text. a naopak to funguje stejně (teda myslim) =D |
||
Dieee Profil |
#27 · Zasláno: 26. 11. 2010, 01:48:59
Takže po asi dalších 2h snažení jsem to udělal takhle: Řekl jsem si že JS mi ohlídá seleckty, aby najednou nemohlo být select i input a pak jsem jednoduše napsal
if(isset($_POST['select'])){ if($_POST['select'] == '1' ){ $reg_error = 'Musíš si vybrat'; include 'reg.php'; } } if(isset($_POST['jmeno'])){ if($_POST['jmeno'] == ''){ $reg_error = 'Jméno chlapče!'; include 'reg.php'; } } Ha, když je to úplně jednoduchý xD. Zapomněl jsem, že mi to ten JS může pohlídat, takže jsem měl nutkání tu chybu "Musíš zadat do textu něco a nebo vyber ze selektu" napsat do jednoho příkazu v php. Tak jsem to rozdělil a je to. Chvíli mi to trvalo. Teď si musím pohlídat aby ten kdo se bude reagovat měl zapnutý JS xD to se zmákne, až dodělám web, budu možná přemýšlet jak se vyhnout i tomu JS, teď po zabitým celým dnu už fakt ne =D Díky lidi za pomoc! |
||
Joker Profil |
#28 · Zasláno: 26. 11. 2010, 08:27:08
Dieee:
„Řekl jsem si že JS mi ohlídá seleckty, aby najednou nemohlo být select i input“ A když to bude vyplňovat někdo s vypnutým JS? |
||
Keeehi Profil |
#29 · Zasláno: 26. 11. 2010, 12:16:54
Dieee:
„Teď si musím pohlídat aby ten kdo se bude reagovat měl zapnutý JS“ To se ti nepovede. Schválně si vyzkoušej, jak to bude fungovat bez JS. |
||
Dieee Profil |
#30 · Zasláno: 26. 11. 2010, 14:12:37 · Upravil/a: Dieee
Neexistuje žádnej script v php na to aby zjistil jestli mám zapnutý/vypnutý JS?
Určitě jo..zkuste se logovat na Facebook bez JS Vypíše to chybu a tuhle potřebuju taky vyspat? Nějaký návrhy? =)) |
||
Téma pokračuje na další straně.
|
0