Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

Php & mysql fråga

Skapad av SkalmanOnDrugs, 2011-06-11 16:21 i Webbutveckling & Programmering

1 351
9 inlägg
0 poäng
SkalmanOnDrugs
Visningsbild
P 35 Göteborg Hjälte 2 758 inlägg
0
Okej så här ligger det till, jag har gjort en sida som heter form.html där man fyller i en form för att regga sig på sidan. Informationen lagras i en MySQL databas. Nu vill jag att i namnet ska vara unikt, alltså ska man inte kunna regga sig flera gånger med samma namn, då sak ett felmeddelande komma upp.

Min fråga är då, hur kollar man om ett visst värde, t.ex. "Kalle" redan existerar i databasen under kolumnen "namn". Bara jag vet detta kan jag ju lösa resten ungefär såhär:

if( $namn finns i databasen 'members' under 'namn'){
echo "användare finns redan";
else{
//lägg till info i databsen
}

Har googlat men hitta inga bra svar som funkade för mig. En t.ex. föreslog att jag skulle använda if(mysql_num_rows($namn) > 0) men då fick jag error:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Någon som vet? :)

Du måste konstruera ytterligare pyloner

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

Heggan
Visningsbild
P Kakmonster Några osöta inlägg
0

Svar till SkalmanOnDrugs [Gå till post]:
1. sätt ett unique index på ditt användarnamns fält i db:en.

2. Gör något sånt här
Ett stycke php-kod:

$result = mysql_query('SELECT COUNT(*) FROM my_tbl WHERE username LIKE "' . $name . '"');
if (mysql_num_rows($result) > 0) {
echo 'It exists';
}


Nått sånt, fast tänk på att validera din input och så bara. Att du får fel beror på att du antagligen inte skickar in ett result-set till mysql_num_rows. Ett result-set får du efter en mysql_query.




Ingen status

Tvillingen
Visningsbild
P 31 Hjälte 3 117 inlägg
0
Du kan annars göra kolumnen unik och när du postar datan tillbaka tittar du något sånt här.

Ett stycke php-kod:
<?php
mysql_query('INSERT INTO tabel (`username`) VALUES ("foobar")');

if(mysql_errno() == 1062)
{
//Användarnamnet finns redan
}
?>

Jag är ond!

SkalmanOnDrugs
Visningsbild
P 35 Göteborg Hjälte 2 758 inlägg
Trådskapare
0

Svar till Heggan [Gå till post]:
Tackar! Det löste problemet :)

Du måste konstruera ytterligare pyloner

SkalmanOnDrugs
Visningsbild
P 35 Göteborg Hjälte 2 758 inlägg
Trådskapare
0

Svar till Heggan [Gå till post]:
Eller fan föressten nu blev det jättefel :/ Den kollar ju inte om det finns någon med samma namn utan bara om hur många det finns under namn över huvud taget. Nu går det bara att regga en enda person.

$result = mysql_query('SELECT COUNT(*) FROM members WHERE name LIKE "' . $name . '"');
if (mysql_num_rows($result) > 0) {
echo 'Username is taken! Pick a new one!';
}else{
// Lagra information i databas
}

members är namnet på tablen och name är namnet på kolumnen där alla användarnamn ska finnas.

Du måste konstruera ytterligare pyloner

SkalmanOnDrugs
Visningsbild
P 35 Göteborg Hjälte 2 758 inlägg
Trådskapare
0

Svar till Tvillingen [Gå till post]:
Tackar! Dock får jag inte följande o funka:

if(mysql_error() == 1062)
{
echo "hej på dig";
}

Jag får aldrig hej på dig att visas, istället visas "Duplicate entry 'mittusername' for key 'name'". Alltså kan jag inte ha mitt eget error meddelande vilket är lite störande. Förutom det så funkar det.

Du måste konstruera ytterligare pyloner

Tvillingen
Visningsbild
P 31 Hjälte 3 117 inlägg
0

Svar till SkalmanOnDrugs [Gå till post]:
Du kallar på mysql_error det ska vara mysql_errno (:

Jag är ond!

Heggan
Visningsbild
P Kakmonster Några osöta inlägg
0

Svar till SkalmanOnDrugs [Gå till post]:
Kanske jag som tänker fel, men testa att droppa counten och kör bara

$result = mysql_query('SELECT * FROM members WHERE name LIKE "' . $name . '"');
if (mysql_num_rows($result) > 0) {
echo 'Username is taken! Pick a new one!';
}else{
// Lagra information i databas
}

Ingen status

SkalmanOnDrugs
Visningsbild
P 35 Göteborg Hjälte 2 758 inlägg
Trådskapare
0

Svar till Tvillingen [Gå till post]:
lol. jag trodde det var en felstavning ^^ my bad...

Du måste konstruera ytterligare pyloner


Forum » Datorer & IT » Webbutveckling & Programmering » Php & mysql fråga

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons