Autor | Zpráva | ||
---|---|---|---|
Legáček Profil |
#1 · Zasláno: 27. 11. 2010, 17:32:49
Zdravím vás šikovné programátory,
měl bych tu jeden dotaz. Mám stránku, kde jsou selecty a <option> jsou výpisi z db, kde jsou uloženy i jiný informace o tom jménu ze selectu. Na stránce jsou i inputy, kde uživatel vyplní rok,měsíc,den narození + pohlaví. Chtěl bych kontrolovat, jestli to je opravdu ten uživatel co si vybrat ze selectu jméno a kdyby vybral jméno a špatný rok narození napíše to chybu. Mám to nějak takhle: <?php if (!isset($_POST['submit'])){ include 'register-z.php'; exit; } else { if ... ....spousta if (pro kontrolu celého formůláře)... if($_POST['submit']){ $connect = mysql_connect("127.0.0.1","root","")or die("Nemůžu načíst mysql."); $db = mysql_select_db("vyber") or die("Nemůžu načíst db."); $jzk = mysql_query("SET NAMES 'cp1250'"); $select1_jmeno = $_POST['select1']; $select1_denn1 = $_POST['d1']; $select1_mn2 = $_POST['d2']; $select1_rokn3 = $_POST['d3']; $input_pohlavi = $_POST['pohlavi']; $extract = mysql_query("SELECT * FROM blazinec WHERE rokn='$select1_rokn3' and denn='$select1_denn1' and mn='$select1_mn2' and pohlavi='$input_pohlavi'"); $sql_result = ($extract) or die("Neco mi tam nehraje!"); $nr = mysql_num_rows($extract); while($row = mysql_fetch_assoc($extract)){ $jmeno = $row ['jmenoapr']; $rokn = $row ['rokn']; $mn = $row ['mn']; $denn = $row ['denn']; $pohlavi = $row ['pohlavi']; } } if($row['denn'] != $select1_denn1 || $row['mn'] != $select1_mn2 || $row['rokn'] != $select1_rokn3){ $reg_error = 'Nevíš kdy jsi se narodil?'; include 'reg-z.php'; exit; } if($row['pohlavi'] != $input_pohlavi){ $reg_error = 'Nejsi si jist svým pohlavím'; include 'reg-z.php'; exit; } } include 'reg-d.php'; ?> Vidíte tam nějakou moc velkou chybu? Možná by mi to šlo, ale když člověk zadá dobře všchny informace, tak ho to nehodí na 'reg-d.php' což nechápu :( Prosím o pomoc. Děkuji |
||
xmark Profil |
#2 · Zasláno: 27. 11. 2010, 17:38:49
Jak přesně vypadá ten dotaz na ř. 20? Seskládej si to do jedné proměnné a vypiš. Doporučuju dělat to vždycky, hodí se to.
|
||
Legáček Profil |
#3 · Zasláno: 27. 11. 2010, 20:10:19 · Upravil/a: Legáček
xmark:
Jak si to můžu dát do jedný proměný, když potřebuju kontrolovat každej input zvlášt (rok,měsíc a den) a k tomu pohlavi? :p Mám to tam hlavně proto aby se kontrovalo v tabulce přesně to co jsem vybral ze selektu, protože kdyby to tam nebylo kontrolovalo by se třeba jiný jméno ze selectu(myslim, že hned 1.) |
||
Legáček Profil |
#4 · Zasláno: 28. 11. 2010, 15:55:02
Prosim, ještě nějaký nápady?! Pořád na to nemůžu přijít ať dělám co dělám!
|
||
Legáček Profil |
#5 · Zasláno: 28. 11. 2010, 18:56:01
Vyřešno! =)) po pár hodinách mučení, jsem zjistil, že mi to šlo hned od začátku...no to je fuk hl. že to teď jde!
|
||
Legáček Profil |
#6 · Zasláno: 29. 11. 2010, 20:24:04
No tak mi to teda moc nevyšlo, teď mám ještě horší problém :(
if ($_POST['submit']) { $connect = mysql_connect("127.0.0.1","root","")or die("Nemůžu načíst mysql."); $db = mysql_select_db("vyber") or die("Nemůžu načíst db."); $jzk = mysql_query("SET NAMES 'cp1250'"); $select1_denn = $_POST['d1']; $select1_mn = $_POST['d2']; $select1_rokn = $_POST['d3']; $input_pohlavi = $_POST['pohlavi']; $input_email = $_POST['email']; $input_heslo = $_POST['heslo1']; if (isset($_POST['select1'])){ $select1_jmeno = $_POST['select1']; $extract = mysql_query("SELECT * FROM blazni WHERE jmenoapr='$select1_jmeno'"); } else { if (isset($_POST['select2'])){ $select1_jmeno = $_POST['select2']; $extract = mysql_query("SELECT * FROM grazlove WHERE jmenoapr='$select1_jmeno'"); } } function jepr(){ $select1_jmeno = $_POST['select1']; $extract2 = mysql_query("SELECT * FROM vsichni_r WHERE jmenoapr='$select1_jmeno'"); return (boolean) mysql_num_rows($extract2); } $sql_result = ($extract) or die("Neco mi tam nehraje!"); $nr = mysql_num_rows($extract); $row = mysql_fetch_assoc($extract); $jmeno = $row ['jmenoapr']; $rokn = $row ['rokn']; $mn = $row ['mn']; $denn = $row ['denn']; $pohlavi = $row ['pohlavi']; echo "$jmeno --->$select1_jmeno"; if($row['denn'] != $select1_denn || $row['mn'] != $select1_mn || $row['rokn'] != $select1_rokn){ $reg_error = 'Nevíš kdy jsi se narodil'; include 'reg-z.php'; exit; } if($row['pohlavi'] != $input_pohlavi){ $reg_error = 'Nejsi si jist svým pohlavím'; include 'reg-z.php'; exit; } if (jepr($input_email)){ $reg_error = 'Tento uživatel je již zaregistrován'; include 'reg-z.php'; exit; } } Jak mám udělat, aby mi to kontrolovalo třeba ze 3. tabulek najednou (Všechny tabulky jsou stejný)? podle toho co jsem zadal do selectu? :( Zkoušel jsem jsem JOIN atd.. vůbec mi to nejde! Fakt už netušim :( To co jsem jsem dal jako kód co jsem napsal už smolim z toho co by mohlo jít :(( fakt už nemám nápady jak to udělat ... Budu rád za každou radu! |
||
xmark Profil |
#7 · Zasláno: 29. 11. 2010, 20:57:29
A myslíš, že když se v tom nevyznáš ty, vyzná se v tom někdo, kdo ani neví, co od toho chceš?
Rozmysli si, co z té logiky můžeš řešit v dotazu a co potom v php. Píšeš sem tři sql dotazy, které jsou principielně v pořádku a pár ifů. K čemu je if / else, předpokládám že víš. A to Seskládej si to do jedné proměnné znamená: nedávej dotaz přímo do mysql_query, udělej si proměnnou, v ní to slož dohromady a pak to dej do mysql_query. Když si to pak potřebuješ vypsat, tak je to otázka jednoho echa. |
||
Legáček Profil |
#8 · Zasláno: 29. 11. 2010, 21:47:03
xmark
Snažim se tě pochopit, ale nějak to nende. Já se v tom vyznám. Jenomže nechápu, proč mi to nejde. Když mi říkáš abych si to dal do jedné proměnné ? Snažil jsem se dát do jedné promňěné jedinou podle mě významnou věc kterou pak vložím do mysql_query a to je z jakýho selectu vybírám jméno (Od toho by se měla vyvíjet celý řádek v db od jména ne?). Proto if (isset($_POST['select1'])). Zkoušel jsem dát i $vsselecty = $_POST['select1'] and $_POST['select2']) ; , ale to už mí vůbec neukáže co jsem vybral. Ještě když to vložim do ("SELECT * FROM 1tabulka 2tabulka WHERE jmenoapr="$vsselecty"). Trochu ještě trknout prosim =D Neměl jsem zatim moc problémy s programováním, ale tohle mě nějak drží na dně :( |
||
xmark Profil |
#9 · Zasláno: 29. 11. 2010, 22:11:16 · Upravil/a: xmark
Legáček:
Napiš tři SQL dotazy pod sebe, pod každým dej podmínku, kde vyhodnotíš jestli ten krok byl splněn. Když byl, jdeš na další dotaz, když nebyl, vypíšeš, že nesouhlasí jméno, heslo nebo datum. Ta moje rada neřeší konkrétně nic, jen ti umožní ten SQL dotaz si VYPSAT, abys ho VIDĚL. Pak ho můžeš zkusit dát do phpmyadmina, který ti prozradí případnou syntaktickou chybu, když tam bude. Víš aspoň, kudy ten program projde? On to není 50řádkový blackbox, ty si tam můžeš nastrkat echo "1"; echo "2"; atd a zjistit, co se provedlo a co ne. Zaber trochu. |
||
Legáček Profil |
#10 · Zasláno: 29. 11. 2010, 23:19:42
No tak po hodně hodinách snažení se a díky tvý pomoci, jsem to nějak dokázal, ale nejsem na sebe moc hrdej, vypadá to strašně a určitě by to z vás nikdo takhle neudělal xD
$jeto = false; if ($jeto != true){ $extract = mysql_query("SELECT * FROM grazlove WHERE jmenoapr='$select1_jmeno'"); $jeto = true; if ($select1_jmeno == '1'){ $jeto = false; } } Takhle jsem vyřešil aby to zjistilo co jsem zadal za select. Pěkně všechno do IF xDD Je to strašný, ale přesto stokrát moc dík za ty rady ;) |
||
Časová prodleva: 15 let
|
0