ugrás a tartalomhoz

Regisztralt felhasznalo adatainak tarolasa

Anonymous · 2006. Okt. 17. (K), 20.33
Letezik egy urlap amely regisztraciora szolgal. Az lapon tobb input field talalhato. Ezek az input fieldek a kovetkezok :

- Vezeteknev
- Keresztnev
- Azonosito* (vagy angolul username)
- Email*
- Email ismetles*
- Jelszo*
- Jelszo ismetles*
- Telefonszam

A csillagal jelolt mezok (*) kotelezok. Ha ki van toltve az urlap es rakatintok a "regisztracio" gombra az adatok bekerulnek egy mySQL 4.x adatbazisba.

A kotelezo (*) adatokat bele szeretnem rakni egy "users" nevu tablaba. A nem kotelezo adatokat pedig egy profiles nevu tablaba.

A tablak felepitese igy kene kinezen:

users

id | azonosito | jelszo | email
-----------------------------------------
1  | peter     | pass   | peter##kukac##email.com
profiles

userid | vezeteknev | keresztnev | telefonszam 
------------------------------------------------
1      | Peter      | Peter      | 6546536778      
A users nevu tablaban ahogy latszik fontos (kotelezo) adatok vannak tarolva, azok amelyek loginra szuksegesek (azonosito es jelszo). Ezeket az adatokat a kovetkezo keppen viszem be a users tablaba :

<?php
$azonosito = $_POST['azonosito'];
$jelszo = $_POST['jelszo'];
$email = $_POST['email'];

mysql_query("INSERT INTO users (id,azonosito,jelszo,email) VALUES (0,'".$azonosito."','".$jelszo."', '".$email."')");
?>
Eddig minden rendben van, most jon a nehezebb resz.

Ugyanezt a usert amelynek az ID-je 1, be kell vigyem a masik tablaba is amelynek a neve profiles es ha ki vannak toltve a kovetkezo adatok : Vezeteknev, Keresztnev, Telefonszam akkor beirja oket. Ha nincsenek kitoltve akkor is bekerul a user azonositoja a profiles tablaba.

Peldaul igy kene kinezenek a tablak ha a Peter nevezetu felhasznalo csak a kotelezo adatokat tolti ki:

users

id | azonosito | jelszo | email
-----------------------------------------
1  | peter     | pass   | peter##kukac##email.com
profiles

userid | vezeteknev | keresztnev | telefonszam 
------------------------------------------------
1      |    NULL    |   NULL     |     NULL
Szuksegem lenne tanacsokra, szeretnem tudni ti ezt hogyan oldanatok meg ?

En gondoltam a mysql_insert_id hasznalatara, mert akkor megkapnam a users tablaba levo ID-t, de nem hiszem, hogy a legjobb megoldas.

Kerlek ha tudtok segiteni par tanacsal az jo lenne. Remelem szerencses leszek es kapok valaszt !

Koszonom !
 
1

Pedig de!

Szekeres Gergő · 2006. Okt. 17. (K), 21.19
"En gondoltam a mysql_insert_id hasznalatara, mert akkor megkapnam a users tablaba levo ID-t, de nem hiszem, hogy a legjobb megoldas."

Jól gondoltad, ennél egyszerübben nem tudod megoldani. Amúgy telefonszám tárolásának nem hiszem hogy sok értelme van. Nem valószínű, hogy bárki is megadja a valódi számát, mint ahogy a nevét sem... Ráadásul a név tényleg nem kell semmilyen statisztikához, inkább akkor már hasznosabb a nem, kor stb. ami behartárolja a célközönséget!
2

koszonom

Anonymous · 2006. Okt. 18. (Sze), 07.16
Igazabol egy dolgot nem ertek a mysql_insert_id hasznalataval.
Az igaz, hogy az utolso beirt ID-nek az erteket veszi es ha akarom beirja egy masik tablaba. De mi tortenik akkor ha az elso INSERT es a masodik INSERT kozti idoben valaki (egy masik felhasznalo) eppen beszur egy sort az elso tablaba. Akkor az o ID-jet veszi figyelembe a szkriptem? Gondolom ennek kicsi a valosiznusege, de megtortenhet.

A weboldal amit keszitek munkahelyeknek lesz, ezert fontos, hogy tudjak minnel tobb adatot a felhasznalorol.

Azert csinalom tobb tablaval, mert egy tablaban szeretnem tarolni a kozos login adatokat, egy masik tablaban a normal felhasznalok adatait, es vegul egy harmadik tablaban a munkahely kinalok adatait, pl. cegeket.

Egy cegnek a (profile) adatai biztos nem paszolnanak sehogy ossze egy felhasznalo adataival :) En ezt igy gondoltam el, de ha valakinek jobb otlete van meghalgatom, nagy segitseg lenne szamomra.

Koszonom !
3

mysql kapcsolatok

Anonymous · 2006. Okt. 18. (Sze), 11.05
Az igaz, hogy az utolso beirt ID-nek az erteket veszi es ha akarom beirja egy masik tablaba. De mi tortenik akkor ha az elso INSERT es a masodik INSERT kozti idoben valaki (egy masik felhasznalo) eppen beszur egy sort az elso tablaba. Akkor az o ID-jet veszi figyelembe a szkriptem? Gondolom ennek kicsi a valosiznusege, de megtortenhet.


Az oldal elején nyitsz egy mysql kapcsolatot, ami, ha le nem zárod, az oldalad végéig tart, és a mysql_insert_id erre a kapcsolatra vonatkozik.
Ha esetleg más is dolgozik ezen az oldalon, akkor az másik adatbázis kapcsolatot használ, nem fog a tiedbe bezavarni.

Nyugodtan használd a mysql_insert_id-t, pont erre való ;-)

Krisz
4

Ajjaj

Anonymous · 2006. Okt. 18. (Sze), 12.01
Hallod, itt valami erős képzavar van nálad. Nem a kapcsolat IDjéről van szó, hanem a mezőbe betett IDről.

Megoldás:
SELECT id FROM users WHERE azonosito="peter";
És ezt inserteled be. Viszont az azonosito mezőre illene egy UNIQUE kulcsot definiálni. Egyébként miért nem az azonosítót használod ID-nek? Ja, és a jelszót nem ártana kódolva eltárolni pl a PASSWORD() függvénnyel.
5

beszúrt sor id-je

Anonymous · 2006. Okt. 18. (Sze), 14.08
Lehet, félreérhető voltam, de azt próbáltam elmagyarázni, hogy a mysql_insert_id() függvény pont arra való, hogy megkapd a beszúrt sor id-jét, nem fogja bezavarni egy másik, konkurens lekérés.

Ezt egyébként a LAST_INSERT_ID() mysql fügvénnyel is meg lehet kapni.

Krisz
6

Koszonom

Anonymous · 2006. Okt. 18. (Sze), 15.52
Koszonom a tanacsokat !