Kom ihåg mig?
Home Menu

Menu


Visa liknande titlar

Ämnesverktyg Visningsalternativ
Oläst 2011-06-16, 01:58 #1
edgren edgren är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2010
Inlägg: 21
edgren edgren är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2010
Inlägg: 21
Standard Visa liknande titlar

Hej.

Jag försöker klura ut hur jag hämtar liknande titlar som har likadan genres som den titeln man är inne på för tillfället, men det går inte riktigt som jag vill. Min lösning visar inga liknande titlar alls, även att det finns 1 liknande.


PHP-kod:
$get_maybelike mysql_query("SELECT * FROM titles
                              WHERE id != '"
.$title['id']."'
                              AND post_genre_01 = '"
.(int)$genre1['id']."'

                              OR id != '"
.$title['id']."'
                              AND post_genre_02 = '"
.(int)$genre2['id']."'


                              ORDER BY post_name ASC
                             "
) or die(handle_sqlerror($filenamemysql_error()));


if(
mysql_num_rows($get_maybelike) == 0) {

    echo 
'<center>';
        echo 
'Inga liknande titlar kunde hittas';
    echo 
'</center>';

} else {

    
$fix 0;
    while(
$maybelike mysql_fetch_assoc($get_maybelike)) {
        
$fix++;

        
$get_maybelike_genre_01 mysql_query("SELECT * FROM title_genres
                                               WHERE id = '"
.(int)$maybelike['post_genre_01']."'
                                              "
) or die(handle_sqlerror($filenamemysql_error()));
        
$maybelike_genre1 mysql_fetch_assoc($get_maybelike_genre_01);

        
$get_maybelike_genre_02 mysql_query("SELECT * FROM title_genres
                                               WHERE id = '"
.(int)$maybelike['post_genre_02']."'
                                              "
) or die(handle_sqlerror($filenamemysql_error()));
        
$maybelike_genre2 mysql_fetch_assoc($get_maybelike_genre_02);


        if(
$title['post_genre_01'] == $maybelike_genre1['id']) {
            echo 
'<a href="'.url('sort/genre/'.strtolower($maybelike_genre1['post_name'])).'#showlist" class="tooltip" title="Sortera efter genren \'\'<b>'.$maybelike_genre1['post_name'].'</b>\'\'">';
                echo 
$maybelike_genre1['post_name'];
            echo 
'</a>';

            echo 
'<label>&nbsp;&&nbsp;</label>';
        }

        if(
$title['post_genre_02'] == $maybelike_genre2['id']) {
            echo 
'<a href="'.url('sort/genre/'.strtolower($maybelike_genre2['post_name'])).'#showlist" class="tooltip" title="Sortera efter genren \'\'<b>'.$maybelike_genre2['post_name'].'</b>\'\'">';
                echo 
$maybelike_genre2['post_name'];
            echo 
'</a>';
        }

        echo 
'<label>:&nbsp; &nbsp;</label>';

        echo 
'<a href="'.url('info/'.(int)$maybelike['id']).'" class="tooltip" title="">';
            echo 
$maybelike['post_name'];
        echo 
'</a>';


        echo 
mysql_num_rows($get_maybelike) != $fix '<br>' '';
    }



Kan ni se vad som är problemet måntro? Hade varit tacksam för ett snabbt svar.

Tack på förhand.
edgren är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-06-16, 08:17 #2
Reconsiders avatar
Reconsider Reconsider är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2010
Inlägg: 38
Reconsider Reconsider är inte uppkopplad
Nykomling
Reconsiders avatar
 
Reg.datum: Dec 2010
Inlägg: 38
Ganska svårt att avgöra utan att se data, en dump av titles & title_genres med de berörda raderna hade hjälpt.

Och vart landar du..? På "echo 'Inga liknande titlar kunde hittas';" eller?
Utan data är det inte lätt för en utomstående att avgöra.
Reconsider är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-06-21, 23:32 #3
edgren edgren är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2010
Inlägg: 21
edgren edgren är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2010
Inlägg: 21
Tack för ditt svar, Reconsider.

Japp, jag landar på "Inga liknande titlar kunde hittas". Om du menar hur SQL'n för titles och title_genres ser ut, så kommer den här:

Kod:
CREATE TABLE IF NOT EXISTS `titles` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Avser titelns ID-nummer',
  `id_user` int(11) NOT NULL DEFAULT '0' COMMENT 'Avser besökarens ID-nummer',
  `id_editor` int(11) NOT NULL DEFAULT '0' COMMENT 'Avser besökarens ID-nummer som ändrade titeln',
  `id_youtube` varchar(15) NOT NULL COMMENT 'Visar ID-numret till trailer på YouTube',
  `id_imdb` varchar(9) NOT NULL COMMENT 'Avser ID-numret från IMDb',
  `post_name` text NOT NULL COMMENT 'titelns namn',
  `post_url_review` text NOT NULL COMMENT 'Visar direktlänken till recensionen för filmen, TV, eller TV-serien',
  `post_category` int(11) DEFAULT NULL COMMENT 'Avser kategorins ID-nummer',
  `post_genre_01` int(11) DEFAULT NULL COMMENT 'Avser ID-numret för genre nr. 1',
  `post_genre_02` int(11) DEFAULT NULL COMMENT 'Avser ID-numret för genre nr. 2',
  `post_description` text NOT NULL COMMENT 'titeln beskrivning',
  `post_description_own` text NOT NULL COMMENT 'Besökarens egna beskrivning',
  `date_published` datetime NOT NULL COMMENT 'Visar när titeln lades till',
  `date_edited` datetime NOT NULL COMMENT 'Visar när titeln ändrades',
  `count_downloads` int(11) DEFAULT NULL COMMENT 'Räknar antalet nedladdningar',
  `info_ipaddress` text NOT NULL COMMENT 'Visar IP-adressen som tillhör den som la till titeln',
  `info_ipaddress_editor` text NOT NULL COMMENT 'Visar IP-adressen som tillhör den som ändrade titeln',
  `info_imdb_cover` text NOT NULL COMMENT 'IMDb - Visar omslagsbilden',
  `info_imdb_year` bigint(4) DEFAULT NULL COMMENT 'IMDb - Visar årtalet',
  `info_imdb_runtime` int(11) DEFAULT NULL COMMENT 'IMDb - Visar längden',
  `info_imdb_rating` decimal(10,1) NOT NULL COMMENT 'IMDb - Visar betygen',
  `people_writer_01` text NOT NULL COMMENT 'Författare #1',
  `people_writer_02` text NOT NULL COMMENT 'Författare #2',
  `people_actor_01` text NOT NULL COMMENT 'Skådespelare #1',
  `people_actor_02` text NOT NULL COMMENT 'Skådespelare #2',
  `people_actor_03` text NOT NULL COMMENT 'Skådespelare #3',
  `people_actor_04` text NOT NULL COMMENT 'Skådespelare #4',
  `people_actor_05` text NOT NULL COMMENT 'Skådespelare #5',
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`),
  FULLTEXT KEY `post_name` (`post_name`)
)



CREATE TABLE IF NOT EXISTS `title_genres` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Avser genrerns ID-nummer',
  `id_title` int(11) NOT NULL DEFAULT '0' COMMENT 'Avser titelns ID-nummer',
  `id_user` int(11) NOT NULL DEFAULT '0' COMMENT 'Avser besökarens ID-nummer',
  `id_editor` int(11) NOT NULL DEFAULT '0' COMMENT 'Avser besökarens ID-nummer som ändrade titeln',
  `post_name` text NOT NULL COMMENT 'Titelns namn',
  `date_published` datetime NOT NULL COMMENT 'Visar när titeln lades till',
  `date_edited` datetime NOT NULL COMMENT 'Visar när titeln ändrades',
  `info_ipaddress` text NOT NULL COMMENT 'Visar IP-adressen som tillhör den som la till titeln',
  `info_ipaddress_editor` text NOT NULL COMMENT 'Visar IP-adressen som tillhör den som ändrade titeln',
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
)
edgren är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-06-22, 00:50 #4
Reconsiders avatar
Reconsider Reconsider är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2010
Inlägg: 38
Reconsider Reconsider är inte uppkopplad
Nykomling
Reconsiders avatar
 
Reg.datum: Dec 2010
Inlägg: 38
Eftersom du använder dig av INT tror jag inte det är bra att placera '' runt datan..

Sen hade jag väl lagt upp det såhär istället..
PHP-kod:
$get_maybelike mysql_query("SELECT * FROM titles
                              WHERE id != "
.$title['id']."
                              AND (post_genre_01 = "
.(int)$genre1['id']."
                              OR post_genre_02 = "
.(int)$genre2['id'].")

                              ORDER BY post_name ASC
                             "
) or die(handle_sqlerror($filenamemysql_error())); 
Dvs. utnyttja () annars blir din case konstig. Samma sak som i PHP.

Du hade WHERE villkor1 AND villkor2 OR villkor1 AND villkor3
Genom att lägga in () delar du upp det till WHERE (villkor1 AND villkor2) OR (villkor1 AND villkor3)
Dock förkortade jag också ledet genom att eliminera andra placeringen av villkor1.

Senast redigerad av Reconsider den 2011-06-22 klockan 00:53
Reconsider är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-06-22, 02:37 #5
edgren edgren är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2010
Inlägg: 21
edgren edgren är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2010
Inlägg: 21
Tack för ditt snabba svar, Reconsider

Jag testade att lägga in din lösning, men jag får fortfarande samma "fel" som jag skrev i mitt förra inlägg. När jag valde att eka ut SQL-frågan, blev resultatet såhär: SELECT * FROM titles WHERE id != 1 AND (post_genre_01 = 17 OR post_genre_02 = 19) ORDER BY post_name ASC

Jag var då inne på informations-sidan om titeln som har ID-numret 1, som i sin tur har ID-numren 17 (drama) och 19 (romantik) för genren. Det finns en till titel inlagd i databasen, som stämmer överrens med genren drama, men denna vill inte visas.
edgren är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-06-22, 10:41 #6
Reconsiders avatar
Reconsider Reconsider är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2010
Inlägg: 38
Reconsider Reconsider är inte uppkopplad
Nykomling
Reconsiders avatar
 
Reg.datum: Dec 2010
Inlägg: 38
Inte så att du har genre_01 och genre_02 "tvärtom" mot hur du egentligen tänker?

Kanske menar du egentligen SELECT * FROM titles WHERE id != 1 AND (post_genre_01 = 17 OR post_genre_02 = 19 OR post_genre_01 = 19 or post_genre_02 = 17) ORDER BY post_name ASC

Senast redigerad av Reconsider den 2011-06-22 klockan 10:44
Reconsider är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-06-22, 12:55 #7
allstars allstars är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Apr 2006
Inlägg: 2 126
allstars allstars är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Apr 2006
Inlägg: 2 126
används "field != value " i SQL?

är det inte "field NOT IS value" eller "field<> value"
allstars är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-06-22, 13:16 #8
edgren edgren är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2010
Inlägg: 21
edgren edgren är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2010
Inlägg: 21
Citat:
Ursprungligen postat av Reconsider Visa inlägg
Inte så att du har genre_01 och genre_02 "tvärtom" mot hur du egentligen tänker?

Kanske menar du egentligen SELECT * FROM titles WHERE id != 1 AND (post_genre_01 = 17 OR post_genre_02 = 19 OR post_genre_01 = 19 or post_genre_02 = 17) ORDER BY post_name ASC
Underbart! Nu funkar det äntligen! Tusen tack! Var dock tvungen att modifiera din lösning lite, annars skulle den inte visa något alls typ.

Kod:
SELECT * FROM titles WHERE id != '".$title['id']."' AND post_genre_01 = '".(int)$genre1['id']."' OR id != '".$title['id']."' AND post_genre_02 = '".(int)$genre2['id']."' OR id != '".$title['id']."' AND post_genre_01 = '".(int)$genre2['id']."' OR id != '".$title['id']."' AND post_genre_02 = '".(int)$genre1['id']."' ORDER BY post_name ASC

Senast redigerad av edgren den 2011-06-22 klockan 13:18
edgren är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-06-23, 21:37 #9
dAEks avatar
dAEk dAEk är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2006
Inlägg: 678
dAEk dAEk är inte uppkopplad
Mycket flitig postare
dAEks avatar
 
Reg.datum: Dec 2006
Inlägg: 678
Citat:
Ursprungligen postat av allstars Visa inlägg
används "field != value " i SQL?

är det inte "field NOT IS value" eller "field<> value"
is not används för att jämföra med nullvärden.
!= är icke-ANSI-varianten av <> men en del databaser har stöd för den operatorn också.
dAEk är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 18:35.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017