ik wil graag user ids maken van de users die zich aanmelden.
dus een tabel in sql en daar dan 1, 2, 3 enz de tabel heb ik wel ik snap ook wel hoe je er info in krijgt maar kan hij ook de laatste user opzoeken in de data base en er dan +1 doen? iets met
UPDATE users SET user_id = user_id + 1;
maar dan heb ik niet de laatste dan doet die ze allemaal +1....

weet iemand een oplossing
Je kan ook gewoon de column een auto_increment column maken.

ander werkt
select max(user_id) from users
ook om het hoogste id uit de tabel users te halen.
Het gebruik van auto_increment is de enige oplossing voor MySQL. In andere databases kun je table- en rowlocking gebruiken om er voor te zorgen dat niemand anders wat met de data doet, al slaat dat in dit geval ook nergens op.

Kortom, gebruik auto_increment.

Andere 'oplossingen' zullen vroeg of laat verkeerd gaan, bv. wanneer meerdere personen zich min of meer geljiktijd aanmelden. Dan krijgen 2 gebruikers hetzelfde nummer omdat de insert-query van gebruiker 1 nog niet was verwerkt toen gebruiker 2 het laatste nummer opvroeg...
okj ik snap het een beetje maar ik snap neit hoe ik het dan in de database zet..BV

tabel:

CREATE TABLE users
(user_id int(10) NOT NULL auto_increment,
username varchar(15),
password varchar(10),
email varchar(30),
mysql_query( $sql )

Het vullen:
$sql = "INSERT INTO users ( ??? , username, password, email)
VALUES ('$username', '$pass', '$email')";

Wat moet ik daar dan invullen bij user_id ..... of daar dan
"select max(user_id) from users"
Dan heb je de hoogste en dan blabla +1...

Wanneer je ??? , weglaat (dus ook de komma) ben je klaar. De database zal het user_id zelf ophogen, deze hoef je dus helemaal nergens in jouw query op te nemen.

En waarom zou je nu dan weer een SELECT willen uitvoeren om weer overbodig te gaan rekenen met nummer? Dat snap ik even niet.

Met de php-functie mysql_insert_id() krijg je het laatst ingevoerde id.

Maar nogmaals, ga in vredesnaam geen conclusies verbinden aan dit nummer, dit is uitsluitend voor de database van belang. Jij doet daar helemaal niets mee!
nou mijn bedoeling was om dat id te gebruiken als je hebt ingelogd die ook in een sessie te zetten zodat je niet het password en username mee hoeft te nemen in de sessie .. lijkt mij veiliger
kima schreef op 10.10.2006 17:38
nou mijn bedoeling was om dat id te gebruiken als je hebt ingelogd die ook in een sessie te zetten zodat je niet het password en username mee hoeft te nemen in de sessie .. lijkt mij veiliger
Dan is mysql_insert_id() dé aangewezen functie om het juiste id op te vragen. Een SELECT-query is trouwens ook niet betrouwbaar, tussentijds kan iemand anders zich al hebben aangemaakt.

En inderdaad, een password zet je nooit en te nimmer in een sessie of cookie. Het is volkomen onzinnig en nog eens onveilig ook.
maar jah das ook de enige manier om dat op te zoeken in de sql database...
BV

SELECT username, password FROM users WHERE username = '$username' AND password = '$pass'

om de login te checken
Waarom wil je de username en het password weten? Nergens voor nodig. Je telt gewoon het aantal records dat aan de voorwaarde voldoen. En omdat username UNIQUE als eigenschap heeft, kan dit slechts 0 of 1 record zijn.

SELECT
  COUNT(1) AS login
FROM
  tabelnaam
WHERE 
  username = '$username' 
AND 
  password = '$pass'

De query geeft 'login' retour, met de waarde 0 of 1.

En ik zou niet weten waarom je de username en/of het password in een sessie of cookie zou moeten zetten. Dat heb je echt nooit nodig en is altijd een veiligheidsprobleem. Niet doen dus.
maar als ik dan naar een ander pagina ga moet het niet zo wezen dat je alles weer opnieuw moet invullen... daarom zou er toch wel iets in de sessie moeten zetten en daarom sla ik zijn ip en user_id op in een sesie en na de sessie voor 2uur laten werken .. daarna is degene automatische uitgelogd
Ja, en? De username heb je toch al? Die heeft de gebruiker net opgegeven, anders kun je de query niet eens uitvoeren. Waarom zou je een gegeven dat je al hebt, nog een keer opvragen? Nergens voor nodig, zodra de query aangeeft dat 'login' de waarde 1 heeft, maak jij een sessie aan waar je $username in zet. En klaar ben je.

Reageren