Avatar billede playr Nybegynder
25. juli 2005 - 00:25 Der er 15 kommentarer og
3 løsninger

Hvis ID ikke eksistere?

Hej allesammen.

Jeg vil gerne have den til at checke et id under det man trykker på:

$foresp = mysql_query("SELECT * FROM brugere where id = '$_GET[bruger]'");
while($data = mysql_fetch_array($foresp)){
if($data[id]-1) {
echo "ID findes";
} else {
echo "ID findes ikke";
}

det virker ikk - hvordan gør man det ?
Avatar billede erikjacobsen Ekspert
25. juli 2005 - 00:32 #1
$foresp = mysql_query("SELECT * FROM brugere where id = '$_GET[bruger]'");
if ($data = mysql_fetch_array($foresp)){
    echo "ID findes";
} else {
    echo "ID findes ikke";
}
Avatar billede jaw Nybegynder
25. juli 2005 - 01:36 #2
Vil du undersøge, om der er noget i det id der ligger lige før?

Så må det vel være a'la:
$foresp = mysql_query("SELECT * FROM brugere where id = ($_GET[bruger]-1)");
if ($data = mysql_fetch_array($foresp)){
    echo "ID findes";
} else {
    echo "ID findes ikke";
}

?
Avatar billede erikjacobsen Ekspert
25. juli 2005 - 08:55 #3
Nåh, det stod der vel også. Men det virker ikke som skrevet. Derimod:


$id= $_GET[bruger]-1;
$foresp = mysql_query("SELECT * FROM brugere where id =$id");
Avatar billede nielle Nybegynder
25. juli 2005 - 08:59 #4
Jeg vil til enhver tid argumentere for at man skal bruge count(*) til netop den slags opgaver. Det er hurtigere i databasen og det giver mere simpel PHP-kode (ingen while-løkke):

$foresp = mysql_query("SELECT count(*) AS antal FROM brugere WHERE id = '$_GET[bruger]'");
$data = mysql_fetch_assoc($foresp);
if ($data["antal"] > 0)
{
    echo "ID findes";
}
else
{
    echo "ID findes ikke";
}
Avatar billede erikjacobsen Ekspert
25. juli 2005 - 09:19 #5
Hvis id er en primær nøgle er der heller ingen while løkke. Og skal man alligevel bruge noget fra rækken

  echo "ID findes og han hedder $data[1]";

skal man ikke lave en count(*) først. Ellers kan man kigge på mysql_num_rows.

Og så virker jaws løsning selvfølgelig. Jeg fik "set" at der stod '....' omkring hans udregning i SQL ;)

Hvis feltet er noget med autonummerering skal man normalt undgå at lave aritmetik på det. Det giver kun bøvl på sigt.
Avatar billede mrgumble Nybegynder
25. juli 2005 - 14:34 #6
Jeg kan se, at den første fejl er, at der skal stå tuborg-klammer omkring arrays i strenge:
Avatar billede mrgumble Nybegynder
25. juli 2005 - 14:44 #7
Hov, kom til at trykke på knappen... Forsættelsen følger:
mysql_query("SELECT * FROM brugere where id = '{$_GET[bruger]}'"); // Stadig forkert!
Hvorfor? Det er en konsekvent fejl du laver med dine arrays. Du skriver
$data[id] og $_GET[bruger] - henviser du her til hhv. punktet "id" og "bruger" i arrayen, eller til en konstant du tidligere har oprettet? php vil tro det sidste, så den vil lede efter en konstant ved navn id og bruger, og benytte deres værdier som nøgle i arrayen. Læs om det her: http://dk2.php.net/manual/en/language.types.array.php

Uden tuborgklammer, plejer jeg at få fejl. Før du overhovedet gør det, er det relevant at kigge på om der overhovedet er sendt en 'bruger':
if (empty($_GET['bruger']) == true) {
  echo "NEJ! NEJ! DER MANGLER EN BRUGER!!!";
} else {
  mysql_query ...
}

Tilsidst har du yderligere en fejl i din hvis-syntakst, idet du skriver:
if ($data[id]-1) {
Dette giver bare ingen mening (set fra php's side). Det du sikkert leder efter (uden at omskrive din nøgle i arrayen):
if ($data[id] == -1) {

Derudover kan jeg højt anbefale at du kigger på kommentarerne fra nielle og erikjacobsen da de kommer med nogle gode forslag.
Tilsidst vil jeg anbefale dig at kigge på forskellene mellem mysql_fetch_array og mysql_fetch_assoc:
http://dk2.php.net/manual/en/function.mysql-fetch-array.php
http://dk2.php.net/manual/en/function.mysql-fetch-assoc.php
Avatar billede playr Nybegynder
25. juli 2005 - 18:54 #8
uha det startede jo en helt diskussion :D

Nå men i hjalp alle til og jeg fik mit svar så vær venlige at smide nogle svar erikjakobsen, jaw og nielle. mrgumble fik smidt sit hurtigt.

mvh. playr
Avatar billede nielle Nybegynder
25. juli 2005 - 18:58 #9
Svar :^)
Avatar billede jaw Nybegynder
25. juli 2005 - 20:15 #10
Svar herfra også !
Avatar billede ksoren Nybegynder
25. juli 2005 - 20:25 #11
Men mrgumble må ikke sige, at

if ($data['id']-1) {

ikke giver mening, for det gør det :o
Avatar billede erikjacobsen Ekspert
25. juli 2005 - 20:27 #12
Ingen point til mig, tak.
Avatar billede mrgumble Nybegynder
26. juli 2005 - 08:49 #13
ksoren, hvad sker der, når ($data['id']-1) bliver valideret? Eneste mulighed jeg kan se er, at man får sandt hvis man kan trække én fra $data['id'].
Avatar billede ksoren Nybegynder
26. juli 2005 - 08:54 #14
Udtrykket bliver evalueret til true, hvis tallet i $data['id'] er forskellig fra 1

Det var bare din påstand om, at det syntaxmæssigt ikke gav mening, at jeg undrede mig over
Avatar billede mrgumble Nybegynder
26. juli 2005 - 16:51 #15
Ja, den påstand må jeg vel bide i mig igen.
Men rent forståelsesmæssig er "if ($data['id']-1)" ikke ligefrem korrekt. I sådanne tilfælde vil det nok være mere korrekt at skrive "if ($data['id'] != 1)".
Men vi hjalp playr, og det er vel det der betyder. ;)
Avatar billede jaw Nybegynder
26. juli 2005 - 16:55 #16
Tror nu meningen i hans udtryk var lidt anderledes mrgumble, men måske ikke helt gav det han ville have. Jeg forstår det som at han vil se, om der findes en række med id'et der er 1 mindre end det id han lige har hentet ud...

Men du har da i hvert fald ret i, at det vigtigste er at han fik hjælp :)
Avatar billede nielle Nybegynder
08. august 2005 - 19:42 #17
Lukketid?
Avatar billede nielle Nybegynder
16. august 2005 - 18:47 #18
?
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