Avatar billede compac Seniormester
06. juni 2005 - 12:26 Der er 19 kommentarer og
1 løsning

undersøg om data findes

Jeg vil undersøge om data findes i forvejen i forbindelse med indtastning.

Opdateringsdelen af min kode ser således ud:
$db = mysql_connect("localhost", "root","");
mysql_select_db("kartotek",$db);
$query = "SELECT * FROM $kartkort WHERE email = '$email'";
$result = mysql_query($query);
  if (mysql_num_rows($result) != 0) {
    $sql = "insert into kartkort(first,last,email) values '$fornavn', '$efternavn','$email')";
$result = mysql_query($sql) or die(mysql_error());
echo "Thank you! Information entered.\n"; }
}

- men der kommer følgende fejl:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in side1.php
Avatar billede erikjacobsen Ekspert
06. juni 2005 - 12:37 #1
Få at vide hvad fejlen er:

$result = mysql_query($query) or die(mysql_error());

Men mon $kartkort indeholder noget ??
Avatar billede arne_v Ekspert
06. juni 2005 - 12:38 #2
sæt en or die(mysql_error()) på din første mysql_query
Avatar billede arne_v Ekspert
06. juni 2005 - 12:38 #3
ideen er iøvrigt dårlig i en flerbruger sammenhæng

det er meget bedre at sætte et unique index på det som der ikke må eksistere
i forvejen
Avatar billede compac Seniormester
06. juni 2005 - 12:57 #4
Det giver følgende fejlkode:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE email = 'test'' at line 1

Hvis jeg i stedet sætter feltet til unique index-felt, hvordan tjekker jeg så feltet?
Avatar billede arne_v Ekspert
06. juni 2005 - 13:01 #5
hvis du har et unikt index på så får du en fejl ved insert som du så kan håndtere
Avatar billede erikjacobsen Ekspert
06. juni 2005 - 16:58 #6
Øhm, du kan ikke se at du skal ændre
    "SELECT * FROM $kartkort WHERE email = '$email'"
til
    "SELECT * FROM kartkort WHERE email = '$email'"

Og selvfølgelig har arne_v ret - men du kan jo få dette til at virke først ;)
Avatar billede compac Seniormester
06. juni 2005 - 18:25 #7
Jo, jeg fandt ud af, at fejlen lå i select-sætningen, da jeg tilføjede die(mysql_error()).
Efter at have sat email-feltet unikt i databasen får jeg fejlen/oplysningen: Duplicate entry 'test' for key 2.
Hvordan kommer jeg så videre?
Avatar billede arne_v Ekspert
06. juni 2005 - 18:47 #8
du dropper or die og laver en if på mysql_query som vil returnere trur hvis indsat
og false hvis ikke indsat
Avatar billede compac Seniormester
06. juni 2005 - 19:51 #9
Vil du give mig et eksempel?
Avatar billede arne_v Ekspert
07. juni 2005 - 23:10 #10
$sql = "insert into kartkort(first,last,email) values ('$fornavn', '$efternavn','$email')";
if(mysql_query($sql)) {
  echo "Du er oprettet";
} else {
  echo "Beklager brugernavnet eksisterer allerede";
}
Avatar billede arne_v Ekspert
13. juni 2005 - 22:05 #11
OK ?
Avatar billede compac Seniormester
20. juni 2005 - 15:02 #12
Ja OK
Avatar billede compac Seniormester
21. juni 2005 - 14:24 #13
Lige et tillægsspørgsmål:
Som det første felt i kartkort - tabellen ligger er en id (auto_increment).
Hvordan får jeg den med mig til senere brug (hvis brugernavnet allerede eksisterer)?
Jeg har prøvet: $sjov = "select id  from kartkort where email = $email";
- men det giver intet resultat.
Avatar billede arne_v Ekspert
21. juni 2005 - 14:28 #14
$sjov = "select id  from kartkort where email = '$email'";

tror jeg
Avatar billede compac Seniormester
21. juni 2005 - 14:54 #15
Nej Desværre giver det ikke noget resultat.
Avatar billede erikjacobsen Ekspert
23. juni 2005 - 09:39 #16
Du kan

$sql = "insert into kartkort(first,last,email) values ('$fornavn', '$efternavn','$email')";
if(mysql_query($sql)) {
  echo "Du er oprettet";
  $id = mysql_insert_id();
} else {
  echo "Beklager brugernavnet eksisterer allerede";
  $id = 0;
}

Så har du din id i $id hvis den er blevet oprettet.
Avatar billede compac Seniormester
23. juni 2005 - 12:09 #17
Ja, men det er i tilfæde af at "Brugernavnet eksisterer allerede", vil jeg gerne have at vide, hvilket $id det pågældende brugernavn har.
Avatar billede arne_v Ekspert
23. juni 2005 - 12:55 #18
en select skal kunne finde det
Avatar billede compac Seniormester
24. juni 2005 - 15:06 #19
Jeg tilføjer en select således:

$sjov = "select id  from kartkort where email = '$email'";
        $result1 = mysql_query($sjov);

echo "resultat $result1";
-bliver værdien af $result1:
Resource id #5

Kan man bruger denne opl. til noget? så den bliver en talværdi i et felt i en ny tabel?
Avatar billede erikjacobsen Ekspert
24. juni 2005 - 15:11 #20
Du skal som altid i opslag hente rækker og felter via mysql_fetch_row, mysql_fetch_array, eller tilsvarende ;)
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
Computerworld tilbyder specialiserede kurser i database-management

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