ugrás a tartalomhoz

php-ban regisztráció

somogyie · 2010. Feb. 20. (Szo), 20.10
nem működik a programom. valamiért az adatbázisban nem jelenik meg az adat, amit beviszek az űrlapon. Nem tudok rájönni miért?
A teljes kód:

<?php

require_once '../pkt/rendszer.php';
require_once '../pkt/sql.php';
require_once '../pkt/megjelenites.php';


//---------------- inicializálás ------------------------------
$oldal=new Oldal;
$oldal->css('../css/aruhaz.css');
$oldal->cim('Felhasználó regisztráció');
$sql_kapcsolat=mysql_kapcsolodas('utf8');
$hibaszovegek=array('v_nev'=>"",'k_nev'=>"",'fh_nev'=>"",'email'=>"",'varos'=>"",'utca'=>"",'irsz'=>"",'tel_sz'=>"",'j1'=>"",'j2'=>"");

// ----------------- eseménykezelés ------------------------------
if (isset($_POST['bevitel']) or isset($_POST['modosit']) )
{
$_id=mysql_real_escape_string($_POST['fh_id']);
$v_nev=mysql_real_escape_string(trim($_POST['v_nev']));
$k_nev=mysql_real_escape_string(trim($_POST['k_nev']));
$fh_nev=mysql_real_escape_string($_POST['fh_nev']);
$varos=mysql_real_escape_string($_POST['varos']);
$email=mysql_real_escape_string($_POST['email']);
$utca=mysql_real_escape_string($_POST['utca']);
$irsz=mysql_real_escape_string($_POST['irsz']);
$tel_sz=mysql_real_escape_string($_POST['tel_sz']);

$j1=md5($_POST['jelszo']);
$j2=md5($_POST['jelszo2']);



if(!hibaellenorzes($v_nev,$k_nev,$fh_nev,$email,$varos,$utca,$irsz,$tel_sz,$j1,$j2,$_id))
{
if (isset($_POST['bevitel']))
{
$keres="INSERT INTO felhasznalo (v_nev,k_nev,fh_nev,email,varos,utca,irsz,tel_sz,jelszo) VALUES('$v_nev','$k_nev','$fh_nev','$email','$varos','$utca','$irsz','$tel_sz','$j1');";
$eredmeny=mysql_query($keres,$sql_kapcsolat);
if (!$eredmeny)
{
$oldal->szoveg( "Adatbázis hiba1: ".mysql_error());
$oldal->megjelenites();
exit(-1);
}


header("location:felhasznalo.php");
}

else
{
$keres="UPDATE felhasznalo SET v_nev='$v_nev',k_nev='$k_nev',fh_nev='$fh_nev',email='$email',varos='$varos',utca='$utca',irsz='$irsz',tel_sz='$tel_sz',jelszo='$j1' WHERE fh_id='$_id';";
$eredmeny=mysql_query($keres,$sql_kapcsolat);

if (!$eredmeny)
{
$oldal->szoveg( "Adatbázis hiba2: ".mysql_error());
$oldal->megjelenites();
exit(-1);
}

$keres="SELECT fh_id FROM felhasznalo WHERE fh_id='$_id';";
$eredmeny=mysql_query($keres,$sql_kapcsolat);

if (!$eredmeny)
{
$oldal->szoveg( "Adatbázis hiba2: ".mysql_error());
$oldal->megjelenites();
exit(-1);
}
if (mysql_num_rows ($eredmeny)>0)
{
if ($felt)
{
$utca=mysql_real_escape_string($_POST['utca']);
$keres="UPDATE felhasznalo SET utca='$utca' WHERE fh_id='$_id';";
$eredmeny=mysql_query($keres,$sql_kapcsolat);

if (!$eredmeny)
{
$oldal->szoveg( "Adatbázis hiba update felhasznalo: ".mysql_error());
$oldal->megjelenites();
exit(-1);
}
}
else
{
$keres="DELETE FROM felhasznalo WHERE fh_id='$_id';";
$eredmeny=mysql_query($keres,$sql_kapcsolat);

if (!$eredmeny)
{
$oldal->szoveg( "Adatbázis hiba delete felhasznalo: ".mysql_error());
$oldal->megjelenites();
exit(-1);
}
}
}
else

header("location:felhasznalo.php");
}
}
else
{
if (isset($_POST['bevitel'])) $gomb="<input type=\"submit\" name=\"bevitel\" value=\"Bevitel\" />";
else $gomb="<input type=\"submit\" name=\"modosit\" value=\"Módosítás\" />";
}
}
else
{
if (isset($_GET['fh_id']))
{
$_id=mysql_real_escape_string($_GET['fh_id']);
$keres="SELECT
fh_id,
v_nev,
k_nev,
fh_nev,
email,
varos,
utca,
irsz,
tel_sz
FROM felhasznalo WHERE fh_id='$_id';";

$eredmeny=mysql_query($keres,$sql_kapcsolat);

if (!$eredmeny)
{
$oldal->szoveg( "Adatbázis hiba3: ".mysql_error());
$oldal->megjelenites();
exit(-1);
}
$sor=mysql_fetch_assoc($eredmeny);

if (mysql_num_rows($eredmeny)!=1)
{
$oldal->szoveg("hibás beolvasás");
$oldal->megjelenites();
exit;
}

$v_nev=$sor['v_nev'];
$k_nev=$sor['k_nev'];
$fh_nev=$sor['fh_nev'];
$email=$sor['email'];
$varos=$sor['varos'];
$irsz=$sor['irsz'];
$utca=$sor['utca'];
$tel_sz=$sor['tel_sz'];
$felt=is_null ($sor ['fh_id']) ? false : true;
$utca=is_null ($sor ['fh_id']) ? "" : $sor['utca'];

$gomb="<input type=\"submit\" name=\"modosit\" value=\"Módosítás\" />";
}
else
{
$v_nev="";
$k_nev="";
$fh_nev="";
$email="";
$varos="";
$utca="";
$irsz="";
$tel_sz="";
$felt=false;
$_id=0;
$gomb="<input type=\"submit\" name=\"regisztracio\" value=\"Regisztrálok\" />";
}
}



//-------megjelenítés--------

$felt_attr=$felt ? 'checked="checked"' : '';
$oldal->szoveg( <<< EOS

<body>
<form action="?" method="POST">
<input type="hidden" value="det" name="op"/>
<table cellspacing="0" cellpadding="0" border="0" align="center" width="750">
<tbody>
<tr>
<td>
<img border="0" alt="" src="../kep/atl.gif"/>
</td>
<td style="background-image: url(../kep/atc.gif);"/>
<td>
<img border="0" alt="" src="../kep/atr.gif"/>
</td>
</tr>
<tr>
<td style="background-image: url(../kep/alc.gif);"/>
<td width="100%" style="background-color: rgb(239, 239, 239);">
<table cellspacing="0" cellpadding="2" border="0" width="100%">

<tbody style="border-color: rgb(255, 255, 255); border-width: 1px; border-top: 1px solid rgb(255, 255, 255); border-bottom: 1px solid rgb(255, 255, 255);">


<td width="30%"> <label for="v_nev"> Vezetéknév* </label> </td>
<td width="70%"> <input type="text" name="v_nev" style="width: 240px;" value="$v_nev" id="v_nev"/> </td>
</tr>
<tr>
<td colspan="2"> <span class="hibaszoveg"> $hibaszovegek[v_nev] </span> </td>
</tr>

<tr>
<td> <label for="k_nev"> Keresztnév* </label> </td>
<td> <input type="text" name="k_nev" style="width: 240px;" value="$k_nev" id="k_nev"/> </td>
</tr>
<tr>
<td colspan="2"> <span class="hibaszoveg"> $hibaszovegek[k_nev] </span> </td>
</tr>

<tr>
<td> <label for="jelszo">Jelszó* </label> </td>
<td><input type="password" name="jelszo" style="width: 240px;" id="jelszo"/></td>
</tr>
<tr>
<td colspan="2"> <span class="hibaszoveg"> $hibaszovegek[j1] </span> </td>
</tr>
<tr>
<td> <label for="jelszo2">Jelszó megerősítése* </label> </td>
<td><input type="password" name="jelszo2" style="width: 240px;" id="jelszo2"/></td>
</tr>

<tr>
<td colspan="2"> <span class="hibaszoveg"> $hibaszovegek[j2] </span> </td>
</tr>

<tr>
<td valign="top" rowspan="2"> <label for="e-mail"> E-mail cím*</td>

<td><input type="text" name="email" style="width: 240px;" value="$email" id="email"/> </td>
</tr>
<tr>
<td colspan="2"> <span class="hibaszoveg"> $hibaszovegek[email] </span> </td>
</tr>

<tr>
<td class="kisbetu" colspan="2">kérem valós e-mail címet adjon meg!</td>

</tr>

<tr>
<td valign="top"> <label for="fh_nev"> Felhasználó név* </label> </td>
<td><input type="text" name="fh_nev" style="width: 240px;" value="$fh_nev" id="fh_nev"/></td>
</tr>
<tr>
<td colspan="2"> <span class="hibaszoveg"> $hibaszovegek[fh_nev] </span> </td>
</tr>

</tbody>
<tbody>
<tr bgcolor="#eeeeee">
<td class="kisbetu" colspan="2"> <b> Személyes adatok: </b> Harmadik személynek nem adjuk ki!</td>
</tr>

<tr>
<td valign="top"> <label for="varos"> Város* </label> </td>
<td><input type="text" name="varos" style="width: 240px;" value="$varos" id="varos"/></td>

</tr>
<tr>
<td colspan="2"> <span class="hibaszoveg"> $hibaszovegek[varos] </span> </td>
</tr>


<tr>

<td valign="top"> <label for="utca"> Utca* </label> </td>
<td><input type="text" name="utca" style="width: 240px;" value="$utca" id="utca"/></td>
</tr>
<tr>
<td colspan="2"> <span class="hibaszoveg"> $hibaszovegek[utca] </span> </td>
</tr>

<tr>
<td valign="top"> <label for="irsz"> Irányítószám* </label> </td>
<td><input type="text" name="irsz" style="width: 70px;" value="$irsz" id="irsz"/></td>
</tr>
<tr>
<td colspan="2"> <span class="hibaszoveg"> $hibaszovegek[irsz] </span> </td>
</tr>
<tr>
<td valign="top"> <label for="tel_sz"> Telefonszám** </label> </td>
<td><input type="text" name="tel_sz" style="width: 240px;" value="$tel_sz" id="tel_sz"/></td>
</tr>
<tr>
<td colspan="2"> <span class="hibaszoveg"> $hibaszovegek[tel_sz] </span> </td>
</tr>

<tr>
<td align="center" colspan="2">
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td>
<input type="checkbox" name="felt" id="felt" onclick="felt_katt(this);" $felt_attr/> </td>
<td>
<label for="felt" id="cimke"> A feltételeket megértettem és elfogadom </label> </td>
</tr>
</tbody>
</table>
</td>
</tr>

<tr>
<td class="gomb" align="center" colspan="2"> $gomb </td>
</tr>
<p>
<tr>

<td class="kisbetu 2" colspan="2"> <b>* - a megjelölt mezők kitöltése kötelező </b> <p>


</tr>

</tbody>
</table>
</td>
<td style="background-image: url(../kep/arc.gif);"/>
</tr>
<tr>
<td>
<img border="0" alt="" src="../kep/abl.gif"/>
</td>
<td style="background-image: url(../kep/abc.gif);"/>
<td>
<img border="0" alt="" src="../kep/abr.gif"/>
</td>
</tr>
</tbody>
</table>
<p>

</form>





</body>
</html>
EOS
);
function hibaellenorzes($h_v_nev,$h_k_nev,$h_j1,$h_j2,$h_email,$h_fh_nev,$h_varos,$h_utca,$h_irsz,$h_tel_sz,$_id)
{
global $hibaszovegek;
$v_nevhosz=strlen($h_v_nev,$h_k_nev);
$hiba=false;

if ($v_nevhosz==0)
{
$hibaszovegek['v_nev']="Nincs név megadva!";
$hiba=true;
}
If ($v_nevhosz>80)
{
$hibaszovegek['v_nev']="A név túl hossszú!";
$hiba=true;
}
if ($k_nevhosz==0)
{
$hibaszovegek['k_nev']="Nincs név megadva!";
$hiba=true;
}
If ($k_nevhosz>80)
{
$hibaszovegek['k_nev']="A név túl hossszú!";
$hiba=true;
}

if ($h_fh_nev=="")
{
$hibaszovegek['fh_nev']="Nincs felhasználói név megadva";
$hiba=true;
}
if ($h_email=="")
{
$hibaszovegek['email']="Nincs e-mail megadva";
$hiba=true;
}
if ($h_varos=="")
{
$hibaszovegek['varos']="Nincs ország megadva";
$hiba=true;
}
if ($h_utca=="")
{
$hibaszovegek['utca']="Nincs helység megadva";
$hiba=true;
}

if ($h_irsz=="")
{
$hibaszovegek['irsz']="Nincs irányítószám megadva";
$hiba=true;
}
if ($h_tel_sz=="")
{
$hibaszovegek['tel_sz']="Nincs vezetékes telefonszám megadva";
$hiba=true;
}

if ($h_j1!=$h_j2)
{
$hibaszovegek['j2']="A két jelszó nem azonos";
$hiba=true;
}
if ($_POST['jelszo']=="")
{
$hibaszovegek['j1']="A jelszó nező nincs kitöltve";
$hiba=true;
}
if ($_POST['jelszo2']=="")
{
$hibaszovegek['j2']="A jelszó megerősítése nező nincs kitöltve";
$hiba=true;
}
if (!is_null($_id))
{
$keres_kieg_sql="AND(fh_id!='$_id')";
}
else
$keres_kieg_sql="";

$keres= "SELECT count(*) from felhasznalo WHERE (fh_v_nev='$h_fh_nev') $keres_kieg_sql;" ;

return $hiba;
}
$oldal->megjelenites();

?>
 
1

...

csman007 · 2010. Feb. 20. (Szo), 22.38
Először is használj colorert légyszíves, másodszor az adatbázisodban van olyan hogy autoincrementtel növeled az értékét pl id és az automatikusan nő minden egyes felhasználó után?
2

közben

csman007 · 2010. Feb. 21. (V), 00.16
Közben sztem meglett a hibád:
a kódodban van egy autoincrementtel növő változó

$keres="INSERT INTO felhasznalo (v_nev,k_nev,fh_nev,email,varos,utca,irsz,tel_sz,jelszo)

VALUES('$v_nev','$k_nev','$fh_nev','$email','$varos','$utca','$irsz','$tel_sz','$j1');";
helyett

$keres="INSERT INTO felhasznalo (fh_id,v_nev,k_nev,fh_nev,email,varos,utca,irsz,tel_sz,jelszo)

VALUES('','$v_nev','$k_nev','$fh_nev','$email','$varos','$utca','$irsz','$tel_sz','$j1');";
3

Az adatbázisban

somogyie · 2010. Feb. 21. (V), 08.31
Az adatbázisban autoincrementre van téve az id-k.
Kijavítottam, amit ide leírtál. De, semmi változás nincs sajnos. Az űrlap nem viszi be az adatokat az adatbázisba. Üdv.
4

nem mindegy

a.d.a.m · 2010. Feb. 21. (V), 21.18
milyen idézőjelet használsz:
az '$v_nev' értéke $v_nev tartalmú string, míg a "$v_nev" értéke a $v_nev változó értékével egyezik meg.

Próbáltad a kódod soronként tesztelni? Működik a mysql kapcsolat? Ha kiiratod az sql lekérdezést és direktben futtatod az adatbázison, hiba nélkül lefut?

valamiért az adatbázisban nem jelenik meg az adat, amit beviszek az űrlapon.

Ez mit jelent? Üres sorok jelennek meg? Vagy egyáltalán semmi?
5

Azért ilyen idézőjeleket

somogyie · 2010. Feb. 22. (H), 10.01
Azért ilyen idézőjeleket használok, mert azt tanítják nekem.
Miért nem jól tanítják?
require_once sorok után tettem egy print_r($_POST);sort.
Kiírja a tömböt.
Az esemény kezelésnél van valami probléma szerintem, mert ott nem ír ki semmit.
Nem jelenik meg az egyáltalában semmi az adatbázisban, nem tesz üres sorokat.
Mintha nem lett volna bevitel.
6

kimásoltam

a.d.a.m · 2010. Feb. 22. (H), 19.48
és újraformáztam a kódodat és a következő szúrt szemet:

1. és így már látszik, hogy jól használod az idézőjeleket, csak az első hozzászólásodban nem tűnt fel (kérlek használd a colorer-t).
2. a $_POST feldolgozását a 'bevitel' és a 'modosit' mezők létezéséhez kötöd, ugyanakkor én nem találom, hol illeszted a 'bevitel' mezőt a formodba (csak regisztráció van), ezt a mezőt csak akkor alkalmazod, a a hibaellenorzes true értéket vesz fel.
7

Nem ismerem a colorer-t.

somogyie · 2010. Feb. 22. (H), 22.53
Nem ismerem a colorer-t. Legalábbis nem tanították még. Az a helyzet, hogy most tanulom a PHP-t. Én a tanultak alapján készítettem el. Nem vagyok profi benne sajnos. Van még egy PHP fájlom, ami erre a regisztrációra hivatkozik. Ahol lehet a felhasználót módosítani. Leírjam azt is?
8

Akkor...

a.d.a.m · 2010. Feb. 23. (K), 10.34
1. a colorer a weblabor egy formázási módja: részletesen ld. itt(, vagy a szerkesztődoboz mellett megjelenő gombok között).

2. először szerintem próbáld azt kibogozni amit írtam, hátha az a nyitja a dolgoknak. A vonatkozó kódrészlet:

if (isset($_GET['fh_id'])){ //ha létező felhasználóról van szó = módosítás
        
        .....
        
        $gomb="<input type=\"submit\" name=\"modosit\" value=\"Módosítás\" />";
}
else { //ha nem létező felhasználóról van szó = regisztráció
        $v_nev="";
        $k_nev="";
        $fh_nev="";
        $email="";
        $varos="";
        $utca="";
        $irsz="";
        $tel_sz="";
        $felt=false;
        $_id=0;
        $gomb="<input type=\"submit\" name=\"regisztracio\" value=\"Regisztrálok\" />";
}
A hiba szerintem a 18-as sorban van, módosítsd a name értékét bevitel-re.

Egyébként érdemes a kódodban, az áttekinthetőség miatt és hogy később is tudd hogy mi mit csinál, megjegyzéseket elhelyezni.
9

Szia! Igen igazad volt,

somogyie · 2010. Feb. 23. (K), 11.48
Szia!

Igen igazad volt, ettől már elkezdett működni. örülök, hogy segítettél!!!!
De most hibát ír ki:
Notice: Undefined index: id in C:\wamp\www\aruhaz\aruhaz\regisztracio.php on line 19

Notice: Undefined variable: felt in C:\wamp\www\aruhaz\aruhaz\regisztracio.php on line 192

Most ezek a hibák miatt nem viszi be az adatokat gondolom.
A megjegyzések nagyon jók. Most, amit leírtál az is nagyon jó, mert így már legalább tudom is mit csináltam azokban a részekben. Sajnos nem nagyon értem, hogy mit miért kell csinálnom. A tanárom elég rosszul adja le az anyagot, sajnos. Belőled jó tanár lenne!!!!!! Köszönöm, ezt a két megjegyzést!!!! Colorer-t pedig köszi mindjárt elolvasom!
11

mit csináltam?

a.d.a.m · 2010. Feb. 23. (K), 13.01
így már legalább tudom is mit csináltam azokban a részekben

Ez kissé aggasztó, ha komolyabban akarsz foglalkozni a php-val (vagy meg akarod érteni mit miért kell csinálni) érdemes befektetni egy-egy könyvbe. Érdemes nézegetni a manualt is. Ha nagyon nem boldogulsz az angollal a neten találhatsz magyar fordításokat is, de azok nem teljesek és nem naprakészek (viszont az alapok jól benne vannak).

Ami a hibaüzenetet illeti:
Notice: Undefined index: id in C:\wamp\www\aruhaz\aruhaz\regisztracio.php on line 19
1. Undefined index: id -- vagyis ismeretlen 'id' nevű tömbindex, pl. $_POST['id'], azonban a $_POST tömb nem tartalmaz 'id' elemet.
2. in C:\wamp\www\aruhaz\aruhaz\regisztracio.php on line 19 -- tehát ezt a hibát a feldolgozó a regisztracio.php 19. sorában találta.

A Notice jellegű hibaüzenet nem akadályozza, függeszti fel a kód futását, mint a Fatal error azonban érdemes őket kijavítani.

A továbbiakhoz írasd ki $keres változók értékeit és próbáld kézzel bevinni az adatbázisba, így ellenőrizni tudod a generált sql szintaktikáját.

Ellenőrizd, hogy minden index amire hivatkozol a post feldolgozásakor rendelkezésre áll-e, továbbá, hogy a mysql_real_escape_string()-gel létrehozott változók tartalmaznak-e adatot.

Utána nem ártana észszerűsíteni az if-eket, mert kissé kaotikusnak tűnik a dolog (vannak olyan létezésvizsgálatok, amiket egymásba ágyazottan is többször lefuttatsz).
12

Igen aggasztó, de remélem

somogyie · 2010. Feb. 23. (K), 15.51
Igen aggasztó, de remélem megfogom tanulni! Mert az a célom, hogy megtanuljam.
sql működik, most megnéztem.
tartalmaznak adatot, amit mysql_real_escape_string()-gel létrehoztam.
Most vettem ki if-et is. Valami olyan hiba lehet, amire nem jövök rá. próbálkozom továbbra is.
10

Megnéztem a colorer-t.

somogyie · 2010. Feb. 23. (K), 12.25
Megnéztem a colorer-t. A szintaktikája: [colorer=nyelvnév]forráskód[/colorer]
Ezt úgy kell érteni, hogy
a teljes php oldal
?
13

Pontosan!

S3RI0US · 2010. Feb. 23. (K), 15.52
Pontosan!
14

pár ötlet...

h31st · 2010. Feb. 25. (Cs), 18.45
pár ötlet...
irasd ki a a query-ket végrehajtás előtt ($keres) és próbáld kézzel lefuttatni SQL managerben (ha ilyen nincs, akkor pl nekem az sqlyog jött be mysql-hez)
ha minden $keres-t kiiratsz, akkor látni fogod, hogy hova jut el a program, és hova nem (pl el sem jut az sql-ig, amit végre kéne hajtania). de amúgy is jó ötlet lehet hibakereséshez echo-kat használni, így látod, merre jár a program...
ha a változóidat egy $_POST -hoz hasonló tömbbe rakod, akkor azokat is ki tudod iratni egyszerűen, egy lépésben, sőt az escape-elést is végezheted ciklussal.