Avatar billede bryrup Nybegynder
26. maj 2004 - 18:55 Der er 14 kommentarer og
1 løsning

Fejl i script?

Hey.... Så nu prøver jeg lige her..!

Jeg har et script som skal hente en streng på en lidt avanceret måde..

Har også haft i gang med dette spm : http://www.eksperten.dk/spm/502612
Det er der mit problem er opstået...

Her er min kode :

<?PHP
include("config.php");
mysql_connect($host,$user,$pass);
mysql_select_db($db);
$bruger == "5";

$hp = mysql_query("SELECT *
FROM hot_hpdata AS hh
  LEFT JOIN hot_tjek AS ht
    ON ht.hp_id=hh.hp_id AND ht.bruger_id='$bruger'
WHERE ht.bruger_id IS NULL
ORDER BY RAND()
LIMIT 1
");
  while($r = mysql_fetch_array($hp)){
    $hp_id = $r[hp_id];
  }
print "".$hp_id."";

?>

Der sker ikke noget : www.bryrup.net/tjek.php

I tabellerne er der de data som der skal være for at den skulle virke... Hvad kan der være galdt??

/Bryrup
Avatar billede bryrup Nybegynder
27. maj 2004 - 09:23 #1
Ingen eksperter??
Avatar billede erikjacobsen Ekspert
27. maj 2004 - 09:24 #2
Du skal nok ændre
$bruger == "5";
til
$bruger = "5";
Avatar billede bryrup Nybegynder
27. maj 2004 - 10:39 #3
nej det er ikke det..... nu er der kommet
or die (mysql error();

www.bryrup.net/tjek.php
Nu siger den der er fejl på linie 15 :

15  while($r = mysql_fetch_array($hp)){
16    $hp_id = $r[hp_id];
17  }
Avatar billede erikjacobsen Ekspert
27. maj 2004 - 10:47 #4
Jo, det var da en fejl.
Du har ikke sat en "or die... " på din mysql_query. Prøv det, for nu er der en simpel syntaksfejl.
Avatar billede bryrup Nybegynder
27. maj 2004 - 10:55 #5
okay er det så ikke s¨ådan den skal se ud... :

<?PHP
include("config.php");
mysql_connect($host,$user,$pass);
mysql_select_db($db);
$bruger = "6";

$hp = mysql_query("SELECT *
FROM hot_hpdata AS hh
  LEFT JOIN hot_tjek AS ht
    ON ht.hp_id=hh.hp_id AND ht.bruger_id='$bruger'
WHERE ht.bruger_id IS NULL
ORDER BY RAND()
LIMIT 1
"or die(mysql_error()));
  while($r = mysql_fetch_array($hp)){
    $hp_id = $r[hp_id];
  }
print "".$hp_id."";

?>
Avatar billede erikjacobsen Ekspert
27. maj 2004 - 10:58 #6
$hp = mysql_query("SELECT *
FROM hot_hpdata AS hh
  LEFT JOIN hot_tjek AS ht
    ON ht.hp_id=hh.hp_id AND ht.bruger_id='$bruger'
WHERE ht.bruger_id IS NULL
ORDER BY RAND()
LIMIT 1") or die(mysql_error());
Avatar billede bryrup Nybegynder
27. maj 2004 - 11:05 #7
okay..... nu sker der bare slet ikke noget!!! :S
Avatar billede erikjacobsen Ekspert
27. maj 2004 - 11:05 #8
Så har du udvalgt 0 rækker.
Avatar billede bryrup Nybegynder
27. maj 2004 - 11:28 #9
så skal der lige tjekkes tabeller.... det kan være der er noget jeg overseer...

Mine tabeller ser således ud!! :

....hot_hpdata.....

                      hp_id
                        2
                        66

...................

.....hot_tjek......

                    bruger_id    hp_id
                    5              66
                    10              2
...................

har lavet $bruger = "5";

Burde den så ikke trække 2 fra hot_hpdata ud ?
Avatar billede erikjacobsen Ekspert
27. maj 2004 - 12:03 #10
mener du
WHERE ht.bruger_id IS NULL
Avatar billede bryrup Nybegynder
27. maj 2004 - 12:45 #11
Skal det ikke være sådan da... ? gør dette script ikke det som jeg gerne ville have det til...? link : http://www.eksperten.dk/spm/502612

eller hvad mener du med det??
Avatar billede erikjacobsen Ekspert
27. maj 2004 - 12:55 #12
Du har ingen bruger_id som er NULL, og så skal der vel heller ikke komme nogen ud, eller hvad?
Avatar billede Slettet bruger
27. maj 2004 - 13:45 #13
Det var mig der lavede den query baseret på http://dev.mysql.com/doc/mysql/en/JOIN.html.

If there is no matching record for the right table in the ON or USING part in a LEFT JOIN, a row with all columns set to NULL is used for the right table. You can use this fact to find records in a table that have no counterpart in another table:

mysql> SELECT table1.* FROM table1
    ->        LEFT JOIN table2 ON table1.id=table2.id
    ->        WHERE table2.id IS NULL;

This example finds all rows in table1 with an id value that is not present in table2 (that is, all rows in table1 with no corresponding row in table2). This assumes that table2.id is declared NOT NULL.

Det læser jeg sådan at ON-delen bør returnere alle rækker fra hot_hpdata kombineret med enten rækker, der har samme hp_id og det valgte bruger_id eller med en NULL-række, og WHERE-delen skal så nøjes med at vælge de resultater med NULL-rækker.

Men jeg var usikker på den, og det var derfor, jeg anbefalede at spørge i denne kategori.
Avatar billede bryrup Nybegynder
28. maj 2004 - 11:44 #14
kan i så se hvad der så skal være i stedet for

WHERE ht.bruger_id IS NULL......

Jeg er ikke selv en kæmpe haj til sql.....

Det query'en skal gøre kan ses på www.bryrup.net/eks.jpg og http://www.eksperten.dk/spm/502612
Avatar billede bryrup Nybegynder
30. januar 2006 - 10:13 #15
Nå lukker...
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