Avatar billede oonofearoo Nybegynder
25. juni 2004 - 15:14 Der er 8 kommentarer

PHP og MySQL - 2 felter må ikke være ens.

Jeg har et bruger system der skriver til en tabel, blandt andet brugerens login og password, problemet er at man godt kan signe op med det samme bruger navn 10 gange, og det vil forvirre login scriptet.

Har prøvet lidt frem og tilbage med at få det til at virke men den skriver lige gyldig hvad.

Håber der er en der har en nem løsning.

Martin
Avatar billede erikjacobsen Ekspert
25. juni 2004 - 15:18 #1
Gør brugernavnet til primærnøgle, eller sæt index på feltet uden dubletter.
Så får du en fejl ved indsættelse, så du kan give en tilbagemelding.
Avatar billede oonofearoo Nybegynder
25. juni 2004 - 15:24 #2
den skriver stadig bare. printer ikke nogen fejl i php, ved ikke om der kommer noget i phpmyadmin.

Er rimelig ny til mysql og ikke alt for stærk i php så i skal nok skrive i et alle kan forstå sprog.
Avatar billede erikjacobsen Ekspert
25. juni 2004 - 15:33 #3
...og hvad så... har du flere oplysninger om hvad du gjort?
Avatar billede oonofearoo Nybegynder
25. juni 2004 - 15:36 #4
include("globalevariable.php");
include("faellesfunktioner.php");

$link = tilslutTilDB();           
$stmt = "insert into users (fornavn, efternavn, alder, sex, email, brugernavn, adgangskode, hvordan, profil)  values ('$fornavn', '$efternavn', '$alder', '$sex', '$email', '$brugernavn', '$adgangskode', '$hvordan', '$profil')";
$resultat = udfoerOrdre ($stmt, $link);
while($raekke = mysql_fetch_array($resultat))
{
Echo ("$raekke[0] er idet på brugeren $raekke[1]<br>");
}
     
} else {
  echo    ("De felter med * skal udfyldes.");
}

indtil videre har jeg bare fået den til at skrive til databasen. og det gør den også fint, problemet er nå jeg nu engang sætter mit script i brug så kan de forskellige brugere godt signe op med det samme brugernavn eller den samme email, og det vil jeg helst ikke have. Jeg har ikke gjort noget ved det da jeg ikke aner hvordan jeg skal gribe det an til at starte med.
Avatar billede erikjacobsen Ekspert
25. juni 2004 - 15:39 #5
Så forstår jeg ikke din kommentar fra 15:24:24, der lyder som om du har lavet ændringer.

Men hvad så med at gøre brugernavn til primær nøgle i tabellen? Hvilke(t)
program(mer) bruger du til MySql?
Avatar billede oonofearoo Nybegynder
25. juni 2004 - 15:49 #6
Jeg tror løsningen ligger i scriptet, at man skal skrive et eller andet der og så checker den om den email er brugt før. Det må da kunne lade sig gøre.

Og jeg satte brugernavn til primærnøgle, men der skete ingen forandringer, eller også ved jeg bare ikke hvor jeg skal lede. Som sagt så er jeg rimelig ny, altså det er min første gang jeg roder med MySQL.

Jeg bruger PHPMyAdmin til at browse min sql database.
Avatar billede erikjacobsen Ekspert
25. juni 2004 - 17:40 #7
Prøv at kigge på http://php.net/mysql_rows_affected.
Er der indsat en række giver den een, og 0 hvis der ikke er indsat noget.
Og har du en primærnøgle uden dubletter, kan der ikke indsættes hvis værdien
allerede er der.
Avatar billede jaw Nybegynder
25. juni 2004 - 18:01 #8
Heysa...
Det er nok en lidt mere "kluntet" måde end Erik's - han plejer at have de bedste løsninger :) Men en anden løsning, vil også være at checke databasens indhold for brugernavn inden du indsætter. Altså noget lignende:

$antal = mysql_num_rows(mysql_query("SELECT brugernavn FROM users WHERE brugernavn = '$brugernavn'"));
if($antal == 0) {
  $stmt = "insert into users (fornavn, efternavn, alder, sex, email, brugernavn, adgangskode, hvordan, profil)  values ('$fornavn', '$efternavn', '$alder', '$sex', '$email', '$brugernavn', '$adgangskode', '$hvordan', '$profil')";
  $resultat = udfoerOrdre ($stmt, $link);
} else {
  echo "Brugernavnet er optaget, vælg venligst et andet...";
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester