Avatar billede evilfish Nybegynder
26. juni 2006 - 23:06 Der er 7 kommentarer og
1 løsning

Script der henter forkert fra en database

Hey Eksperter

Dette spørgsmål er om PHP og mysql, men jeg mener det er php koderne der er forkerte. Jeg har en database tabel, med 3 entries i. I en af de tabel kolloner har jeg en værdi jeg kontrollere ved et 0 og et 1 tal. Alle er pt 0, og scriptet skal hente alle dem med 0, dvs 3. Problemet er bare den kun henter den første. Og jeg kan ikke se problemet. Her er koderne der gør dette.

Først PHP koden til henter fra databasen:
include 'Common/checkacces.php';
$result_waitingchars = mysql_query("
SELECT    dov_classes.nameofclass, dov_chars.ID, dov_chars.Charname, dov_users.User
FROM      dov_chars INNER JOIN
          dov_users ON dov_chars.ID = dov_users.ID INNER JOIN
          dov_classes ON dov_chars.Class = dov_classes.class
WHERE      dov_chars.Approved = '0'
") or die(mysql_error());
?>

Og her er stedet hvor jeg udnytter det:
<?
        while($row = mysql_fetch_array($result_waitingchars))
        { ?>
        <tr>
          <td><div align="left"><? echo $row['User']; ?> </div></td>
          <td><? echo $row['Charname']; ?></td>
          <td><? echo $row['nameofclass']; ?></td>
          <td>Aprove :: Decline </td>
        </tr>
        <? } ?>


Nogen der har en ide hvorfor den reagere sådan som den gør?
Avatar billede erikjacobsen Ekspert
26. juni 2006 - 23:45 #1
Det kommer an på om du har tilsvarende rækker i dov_chars og dov_classes, med matchende id og class. Du får kun rækker, der matcher alle dine join-betingelser.
Avatar billede evilfish Nybegynder
26. juni 2006 - 23:49 #2
Mine join forbindelser er 1 til mange forbindelsr, så det kan ikke have noget med det a gøre
Avatar billede erikjacobsen Ekspert
26. juni 2006 - 23:50 #3
Det har ikke noget med sagen at gøre. Det betyder noget, med en INNER JOIN, hvad der rent faktisk står i de andre tabeller.

Måske du så ikke mener INNER JOIN, men LEFT JOIN. Jeg forsøger blot at forklare hvorfor.
Avatar billede evilfish Nybegynder
26. juni 2006 - 23:57 #4
Kan du forklare forskellen mellem LEFT og INNER join hurtgit?
Avatar billede erikjacobsen Ekspert
27. juni 2006 - 00:08 #5
TabelA LEFT JOIN TabelB  tager altid alle rækker med fra TabelA. Er der ikke noget der matcher join-betingelserne i TabelB bliver felterne fra TabelB fyldt ud med NULL.  INNER JOIN har jeg så'n set forklaret allerede.
Avatar billede evilfish Nybegynder
27. juni 2006 - 08:29 #6
Jeg har fundet fejlen - Efter nøje gennemgang fandt jeg frem til at det var en join der sad forkert. Ellers var koderne i orden. Erik, hvis du lige smider et svar, for den indsat og læring du har givet :)
Avatar billede erikjacobsen Ekspert
27. juni 2006 - 08:54 #7
Tak, men jeg samler slet ikke på point. Svar selv, accepter eget svar.
Avatar billede evilfish Nybegynder
27. juni 2006 - 14:12 #8
Fair nok
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