Avatar billede benjaboy Nybegynder
25. april 2009 - 16:58 Der er 34 kommentarer og
1 løsning

Problem med WHERE / title

Hej :)

Jeg har et problem med en WHERE i php.
Her er koden:

<?
$getAnn = mysql_query("SELECT titel FROM annoncer");
while($anoname = mysql_fetch_array($getAnn)){
$anonavn = $anoname[titel];

$getAnnoncer = mysql_query("SELECT id,title FROM euroadsannoncer WHERE behandlet = '0' AND title != '".$anonavn."' ORDER BY advert_image DESC");
while($fA = mysql_fetch_array($getAnnoncer)){
                    ?>
<div style="height:30px;cursor:pointer;text-align:left;" onclick="visAnnonceDiv(<? echo $fA[id]; ?>)" onmouseover="this.style.background='#e1e1e1'" onmouseout="this.style.background=''">
                                <p class="desc" style="text-align:left;"><? echo $fA['title']; ?></p>
</div>
<div id="annonceDesc<? echo $fA[id]; ?>" style="font:11px Arial;display:none;">
</div>
<?
}
}
?>

-------------------------
Problemet ligger i at den ikke vil sortere dem fra der har den samme title som $anonavn.

En der kan hjælpe lidt? :)

MVvh Benjamin
Avatar billede erikjacobsen Ekspert
25. april 2009 - 17:07 #1
Hvad er reglen for at frasortere? Skal du måske bruge en OR i stedet for en AND?

Som du skriver det nu, kan du få dem med den ikke ønskede titel, hvis deres "behandlet" ikke er 0.
Avatar billede benjaboy Nybegynder
25. april 2009 - 17:10 #2
Har du ret i og har rette det.
Men det var ikke nok :(
Avatar billede benjaboy Nybegynder
25. april 2009 - 17:22 #3
Tror at den skal laves med en JOIN?
Ved bare ikke hvilken og hvordan?

MVh Benjamin
Avatar billede erikjacobsen Ekspert
25. april 2009 - 17:25 #4
Hvad er reglen for at fravælge de poster du ikke vil vise? Kan du vise et eksempel?
Avatar billede benjaboy Nybegynder
25. april 2009 - 17:27 #5
Hvad mener du? :)
Avatar billede benjaboy Nybegynder
25. april 2009 - 18:11 #6
Har prøvet med denne:

48. $getAnnoncer = mysql_query("SELECT id,title FROM euroadsannoncer LEFT JOIN annoncer ON euroadsannoncer.title!=annoncer.titel ORDER BY advert_image DESC");
49. while($fA = mysql_fetch_array($getAnnoncer)){

---------------
Men så kommer denne fejl:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/home/web/web335179/getpen.dk/admin-annoncer.php on line 49
Avatar billede erikjacobsen Ekspert
25. april 2009 - 18:52 #7
Så er der nok en fejl i din sql-sætning. Prøv

$getAnnoncer = mysql_query("SELECT id,title FROM euroadsannoncer LEFT JOIN annoncer ON euroadsannoncer.title!=annoncer.titel ORDER BY advert_image DESC") or die(mysql_error());

Men hvad er det du skal have trukket ud? Kan du give et eksempel?
Avatar billede benjaboy Nybegynder
26. april 2009 - 10:41 #8
Fejl:

Column 'id' in field list is ambiguous

Og hvad betyder det så? :)
Avatar billede erikjacobsen Ekspert
26. april 2009 - 10:51 #9
At "id" findes både i euroadsannoncer og i annoncer, og at du derfor skal vælge hvilken du vil have. Enten euroadsannoncer.id eller annoncer.id
Avatar billede benjaboy Nybegynder
26. april 2009 - 11:01 #10
Sådan her ser koden ud nu:

$getAnnoncer = mysql_query("SELECT euroadsannoncer.id,euroadsannoncer.title FROM euroadsannoncer LEFT JOIN annoncer ON euroadsannoncer.title!=annoncer.titel ORDER BY advert_image DESC") or die(mysql_error());
while($fA = mysql_fetch_array($getAnnoncer)){
?>
<div style="height:30px;cursor:pointer;text-align:left;" onclick="visAnnonceDiv(<? echo $fA['euroadsannoncer.id']; ?>)" onmouseover="this.style.background='#e1e1e1'" onmouseout="this.style.background=''">
                                <p class="desc" style="text-align:left;"><? echo $fA['euroadsannoncer.title']; ?></p>
</div>
                           
<div id="annonceDesc<? echo $fA['euroadsannoncer.id']; ?>" style="font:11px Arial;display:none;">
                           
</div>
<?
}
----------------------------

MEn den virer hellere ikke og den kommer ikke med nogle fejl?
Avatar billede erikjacobsen Ekspert
26. april 2009 - 11:46 #11
Du skal bare bruge $fA['title'] og $fA['id']

Men kan du ikke komme med et eksempel på hvad du skal have ud af din forespørgsel?
Avatar billede benjaboy Nybegynder
26. april 2009 - 19:43 #12
Det virker heller ikke.

Jo alt vil du have et eksempel på hvad der er i de 2 tabeller? :)
Avatar billede erikjacobsen Ekspert
26. april 2009 - 21:16 #13
Ja, det var da en mulighed. Jeg kan ikke gennemskue hvad du skal have regnet ud, ud fra dine beskrivelser.
Avatar billede benjaboy Nybegynder
26. april 2009 - 21:50 #14
Her er der et uddrag af det der er i annoncer:

(`id`, `titel`, `beskrivelse`, `point`, `url`, `bannerurl`, `140x350`, `300x250`, `udbyder`, `adid`, `cpid`, `kategori`) VALUES
(124, 'Få Mamma Mia på DVD for 0 kr.', '', 60, 'http://tracking.euroads.dk/system/tracking.php?sid=1&cpid=994&adid=137396&acid=1881', 'http://banner.euroads.dk/banner/1/994/banner_8853.jpg', 'http://banner.euroads.dk/banner/1/994/banner_8847.jpg', 'http://banner.euroads.dk/banner/1/994/banner_8849.jpg', 1, 994, 137396, '5'),
(123, 'Survey: Tag sundhedstesten - Hvor sund er DU?', 'Sommeren og bikinisæsonen nærmer sig - derfor har brugeren nu mulighed for at vinde en fed bikini og 2 måneders fri træning! Tag sundhedstesten og test, hvor sund du er? Samtidig får brugeren gode sundhedsråd! Surveyen indeholder 15 coreg og 17. leadkampagner. Alle som deltager får et gratis gavekort på 150 kr. Desuden er der mulighed for at få et gavekort på 50 kr. ved aktivt at sige ja til dette. ', 35, 'http://tracking.euroads.dk/system/tracking.php?sid=1&cpid=1512&adid=253841&acid=1881', 'http://banner.euroads.dk/banner/1/1512/banner_13303.jpg', 'http://banner.euroads.dk/banner/1/1512/banner_13299.jpg', 'http://banner.euroads.dk/banner/1/1512/banner_13301.jpg', 1, 1512, 253841, '1')

Og her fra euroadsannoncer:

INSERT INTO `euroadsannoncer` (`id`, `campaignid`, `advertid`, `title`, `startdate`, `enddate`, `amountleft`, `price`, `percent`, `campaigntype`, `targetage`, `targetsex`, `category`, `cpc`, `advert_type`, `adverttitle`, `bannerwidth`, `bannerheight`, `textlink_length`, `textlink_text`, `advert_url`, `advert_image`, `advert_code`, `behandlet`, `oprettet`, `cat`) VALUES
(5136, 1105, 170355, 'Danske Spil ', '2009-03-30', '2009-12-31', 998890, 240.0000, 0.0000, 'Lead kampagne', 'Over 18', 'Alle', 'Konkurrencer & quiz', 6.7200, 'Flash banner', 'Oddset', '468', '60', '0', '', '', '', '', 0, '', 1),

----------------
Og meningen er så at hvis den samme titel/title er i begge databaser skal den ikke udskrive noget om det. Men hvis det kun er en af euroadsannoncer der har titlen skal den udskrive den.

Håber det giver lidt mere meningen :)

Mvh Benjamin
Avatar billede erikjacobsen Ekspert
26. april 2009 - 23:26 #15
Jeg kan stadigvæk ikke se noget eksempel - og du har ikke forklaret hvordan feltet "behandlet" skal behandles ;)


Hvad vil du have af udtræk fra disse to tabeller:

annoncer
id  titel
001 Gratis_øl
002 Store_lus
003 Billigt_X

euroadsannoncer
id titel          behandlet
101 Gratis_øl    0
102 Store_lus    1
104 Skrammel_    1
Avatar billede benjaboy Nybegynder
27. april 2009 - 14:14 #16
Der kommer intet udtræk af dem du skriver der.

Men hvis 102 Store_lus hvad "0" i behandlet så skulle den udskrives.

Håber du forstår.
Avatar billede erikjacobsen Ekspert
27. april 2009 - 14:24 #17
Næh - hvorfor kommer Gratis_øl så ikke ud?
Avatar billede benjaboy Nybegynder
27. april 2009 - 14:32 #18
Fordi at det skal den ikke.

Det er fordi det der skal komme ud er en liste over ting der kan gemmes i annoncer. Så derfor skal den ikke ud. Den er der jo allerede.
Avatar billede erikjacobsen Ekspert
27. april 2009 - 16:11 #19
Det forstår jeg ikke. Sætter du "behandlet" til 0 for Store_lus, så er der ingen forskel på Gratis_øl og Store_lus, og hvordan skal nogen så vide hvad der skal med og hvad der ikke skal?
Avatar billede benjaboy Nybegynder
27. april 2009 - 16:21 #20
Jeg laver et ny eksempel.

annoncer:

id  titel
001 Gratis_øl
002 Store_lus
003 Billigt_X

euroadsannoncer:

id titel          behandlet
101 Gratis_øl    0  // skal ikke vises fordi den er i annoncer
102 Store_lus    0  // skal ikke vises fordi den er i annoncer
104 Skrammel_    1  // Skal ikke vises fordi den har 1 i behandlet
105 bil          0  // skal vise fordi den har 0 og dens navn ikke findes i annoncer.
Avatar billede erikjacobsen Ekspert
27. april 2009 - 16:48 #21
Så "Men hvis 102 Store_lus hvad "0" i behandlet så skulle den udskrives." var ikke helt korrekt.... ;)

Dvs. du skal udskrive fra euroadsannoncer, men kun for de poster i euroadsannoncer hvor begge disse betingelser er opfyldt:

    1) behandlet = 0
    2) Ikke findes med samme titel i annoncer.

Er forstået korrekt?
Avatar billede benjaboy Nybegynder
27. april 2009 - 16:52 #22
Ups min fejl.

Du har 100% ret! :)

Kan det lade sig gøre? :)

Mvh Benjamin
Avatar billede erikjacobsen Ekspert
28. april 2009 - 10:05 #23
Mon ikke vi kan. Du laver en fundamental fejl i din kode i spørgsmålet, for hvis problemet er at udskrive poster fra euroadsannoncer, med visse betingelser, så er det den tabel du først om fremmest skal løbe igennem. For hver post undersøger du så "behandlet", og slår op i tabellen annoncer. Derefter vælger du om den skal udskrives eller ej. Du skal altså groft sagt bytte om på dine 2 sql sætninger.

Men vi kan nok også gøre det i een SQL-sætning. Det er utestet, og du skal nok lige prøve den først i fx phpmyadmin:

  SELECT * FROM euroadsannoncer WHERE behandlet=0 AND NOT titel IN (SELECT titel FROM annoncer)
Avatar billede benjaboy Nybegynder
28. april 2009 - 16:11 #24
Der er en lille fejl
SELECT * FROM euroadsannoncer WHERE behandlet=0 AND NOT title IN (SELECT titel FROM annoncer)

Det skal være title efter AND NOT.

koden udskriver godt nok noget. Men desværre også det den ikke skulle.
Avatar billede erikjacobsen Ekspert
28. april 2009 - 16:42 #25
Og hvordan ytrer det sig, at den skriver noget ud, den ikke skulle?
Avatar billede benjaboy Nybegynder
28. april 2009 - 16:46 #26
Hvad mener du :)?
Avatar billede erikjacobsen Ekspert
28. april 2009 - 22:31 #27
Hvis du kan fortælle præcist hvad der ikke virker, så kan jeg måske finde fejlen.
Avatar billede benjaboy Nybegynder
28. april 2009 - 22:51 #28
Det er den del med title/titel der ikke virker. Den er "ligeglad" med det.
Avatar billede benjaboy Nybegynder
04. maj 2009 - 17:43 #29
Tror du det kan laves :)?
Avatar billede erikjacobsen Ekspert
04. maj 2009 - 18:56 #30
Hvis du kan fortælle præcist hvad der ikke virker, så kan jeg måske finde fejlen.
Avatar billede benjaboy Nybegynder
04. maj 2009 - 19:02 #31
Altså selv om vi har sagt at den ikke må udskrive rækken hvis de 2 har samme title/titel. Så gør den det afligevel.
Så det er den her del den er gal med:
AND NOT title IN (SELECT titel FROM annoncer)

Mvh Benjamin
Avatar billede erikjacobsen Ekspert
04. maj 2009 - 20:31 #32
Nej, den del virker som den skal

Hvis euroadsannoncer indholder "titlerne":

    ugle
    igle
    wombat
    bil

og annoncer indeholder "titlerne":

    hund
    kat
    bil

så vil

    select * from euroadsannoncer where not title in (select title from annoncer)

udskrive

  ugle
  igle
  wombat

Det er derfor jeg efterlyser flere oplysninger fra dig.
Avatar billede benjaboy Nybegynder
04. maj 2009 - 20:42 #33
Oka.

Hvilke flere oplysninger vil du have?
Avatar billede erikjacobsen Ekspert
04. maj 2009 - 21:25 #34
Fx alle oplysninger du har - jeg ved jo ikke hvor problemet er.
Avatar billede benjaboy Nybegynder
29. juni 2009 - 19:18 #35
Dropper denne. :)
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