Avatar billede kren1000 Nybegynder
29. marts 2008 - 19:46 Der er 6 kommentarer og
1 løsning

Sammenligning fra 2 tabeller

Hej eksperter

Jeg har et website hvor jeg har produkter liggende i mange forskellige kategorier. Jeg har et problem med en tabel der hedder produktikat, hvor der er tomme felter, efter at have slettet nogle produkter.

Nu vil jeg så ind og se hvilke produktikat rows, der ikke hører til produkter, men ligger og fylder, så det er en sammenligning jeg vil lave af de 2 tabeller, men funker ikke, kan nogen spotte hvad jeg kan gøre/mangler, jeg har forsøgt mig med nedenstående?

//Vælger alt fra produktikat
$sql = "SELECT * FROM produkt";
$result = mysql_query($sql);
$arr = mysql_fetch_array($result);

echo "<br><br>";

//Vælger alt fra produkter
$sql2 = "SELECT * FROM produktikat WHERE produktId = ".$arr['produktId']."";
$result2 = mysql_query($sql2);
$arr2 = mysql_fetch_array($result2);

//produktId
while ($arr2 = mysql_fetch_array($result2)){
            print "<table><tr>\n";
            print "<td width='250'>";
            print "$arr2[produktId]";
            print "</td>";       
            print "</tr></table>\n\n";
        }       


Ovenstående kode, giver det resultat at den skriver 196 tre gange... Det kunne godt passe med nummeret af ens rows.
Avatar billede themaster Nybegynder
30. marts 2008 - 20:50 #1
Den her skulle gerne gøre det hele på en gang:

<?php

$sql = "SELECT p.produktId FROM produkt p LEFT JOIN produktikat pk ON (p.produktId != pk.produktId)";
$result = mysql_query($sql);
$arr = mysql_fetch_array($result);

//dumper resultatet
var_dump($arr);

?>
Avatar billede kren1000 Nybegynder
31. marts 2008 - 09:42 #2
Hej, det ser spændende ud, har forsøgt mig med koden, men for udskrevet følgende:

array(2) { [0]=> string(2) "79" ["produktId"]=> string(2) "79" }

De 79 går jeg ud fra er nummeret på rækker hvor der ikke er sammenhæng mellem produktId, men kan man få vist de enkelte?
Avatar billede themaster Nybegynder
31. marts 2008 - 21:37 #3
de "enkelte"?

prøv udskifte:

//dumper resultatet
var_dump($arr);

med:

print("<li>".$arr['produktId']."</li>");

tror det skulle give dig det du søger.. prøv evt at indsætte ny tuple i produktikat og så skriv et produktId der ikke findes.. go måde at teste på ;-)
Avatar billede themaster Nybegynder
31. marts 2008 - 21:38 #4
ups.. skulle være:

while ($arr = mysql_fetch_array($result)) {
    print("<li>".$arr['produktId']."</li>");
}

så får du alle rækkerne med ;-)
Avatar billede kren1000 Nybegynder
31. marts 2008 - 22:30 #5
Ja ok, nu nærmer det sig, den skriver rigtigt nok en masse rækker ud, dog skriver den utallige numre ud af de samme i en lang køre, prøv evt. at se linket selv http://www.gaveplaneten.dk/testafprodukter.php.

Det er sikkert de rigtige numre, men svært at se da jeg bliver nødt til at stoppe den så den ikke for det hele til at kollapse:).

Jeg kan ikke lige lure hvorfor den skriver det ud så mange gange. Det kører ret langsomt hvis du kigger på linket:).
Avatar billede kren1000 Nybegynder
02. april 2008 - 09:27 #6
Hej igen

Det kan godt passe med de mange rækker, det er mig der vrøvler:)

Smid gerne et svar, så takker jeg mange gange for hjælpen!
Avatar billede kren1000 Nybegynder
27. maj 2008 - 08:53 #7
svar...
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