Avatar billede mpj_86 Nybegynder
02. august 2006 - 20:48 Der er 44 kommentarer og
2 løsninger

Vis prik hvis der er film?

Hej

Hvorfor kan jeg ikke få den til at vise prik_film.jpg ud for dem som indeholder en film?

Den viser prik_film.jpg ved alle $row[id]

$query_film = mysql_query("SELECT id FROM film WHERE heste_id = '$row[id]' LIMIT 1") or die (mysql_error());
$number_film = mysql_num_rows($query_film);
           
if ($number_film == '1') {
    $film = '<img border="0" src="/images/design/prik_film.jpg" alt="">';
}
Avatar billede kokoko Nybegynder
02. august 2006 - 21:02 #1
Svært at se ud fra den stump kode, men prøv evt:

echo '<img border="0" src="/images/design/prik_film.jpg" alt="">';
Avatar billede mpj_86 Nybegynder
02. august 2006 - 21:35 #2
Det virker ikke..
Avatar billede hmm10 Nybegynder
02. august 2006 - 21:37 #3
Henter du kun en film ud, eller flere?
Avatar billede mpj_86 Nybegynder
02. august 2006 - 21:38 #4
Ja, fordi der godt kan være flere film med samme heste_id
Avatar billede hmm10 Nybegynder
02. august 2006 - 21:39 #5
$query_film = mysql_query("SELECT `id` FROM `film` WHERE `heste_id` = '$row[id]' LIMIT 0,1") or die (mysql_error());
$number_film = mysql_num_rows($query_film);
           
if($number_film >= 1) $film = '<img border="0" src="images/design/prik_film.jpg" alt="" />';
Avatar billede mpj_86 Nybegynder
02. august 2006 - 21:41 #6
Det virker ikke, den viser prik_film.jpg ud for alle sammen.
Avatar billede hmm10 Nybegynder
02. august 2006 - 21:43 #7
Du siger "alle sammen", mener du så at du laver en listevisning eller er det mig der forstår det forkert?
Avatar billede mpj_86 Nybegynder
02. august 2006 - 21:46 #8
Ja jeg udskrive en liste med heste, den skal så tjekke om der er oprettet nogle film ved heste_id = $row[id] hvis der er det skal den vise: prik_film.jpg
Avatar billede hmm10 Nybegynder
02. august 2006 - 21:46 #9
dvs. at du laver et SQL udtræk ved hver hest i en listevisning?
Avatar billede mpj_86 Nybegynder
02. august 2006 - 21:47 #10
Ja
Avatar billede hmm10 Nybegynder
02. august 2006 - 21:48 #11
så ville jeg gør det anderleres, så du kun skal lave 2 udtræk - uanset hvormenge heste der er i visningen. Giv mig et par minutter :)
Avatar billede hmm10 Nybegynder
02. august 2006 - 21:49 #12
hvad hedder dit heste-SQL udtræk?
Avatar billede mpj_86 Nybegynder
02. august 2006 - 21:51 #13
$query=mysql_query("SELECT * FROM heste $where_order LIMIT $side, $pr_side") or die (mysql_error());
    while($row = mysql_fetch_array($query)) {

$where_order, $side og $pr_side skal du ikke tænke på, dem bruger jeg til at sortere..
Avatar billede hmm10 Nybegynder
02. august 2006 - 21:52 #14
hvilke felter benytter du i heste ?
Avatar billede mpj_86 Nybegynder
02. august 2006 - 21:54 #15
Alle sammen, hvofor?
Avatar billede hmm10 Nybegynder
02. august 2006 - 21:54 #16
skal bare kunen sætte noget id sammen med noget id ;)
Avatar billede hmm10 Nybegynder
02. august 2006 - 21:58 #17
Har ikke testet det, men teorien er der:

$all_films = mysql_query("SELECT `id` FROM `film`") or die (mysql_error());
$all_horses = mysql_query("SELECT `id`, `navn` FROM `heste`") or die (mysql_error());

$array_films = mysql_fetch_array($all_films);
$array_horses = mysql_fetch_array($all_horses);

foreach($array_films as $a => $b) $films[$b[0]] = true;

foreach($array_horses as $a => $b)
{
    if($films[$b[0]]) $img_film = '<img src="images/design/prik_film.jpg" border="none" alt="" />';
    else $img_film = false;
   
    print 'Hestenavn: '.$films[$b][1].' - Vi har, hvis du ser en prik her: '.$img_film.'<br />';
}
Avatar billede hmm10 Nybegynder
02. august 2006 - 21:59 #18
hmm, "$films" er så bare "$b" i printtet.
Avatar billede mpj_86 Nybegynder
02. august 2006 - 22:00 #19
Det virker ikke, den skriver dette ved alle sammen:

Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Avatar billede mpj_86 Nybegynder
02. august 2006 - 22:01 #20
Husk den skal tjekke sådan her: id fra heste skal være = heste_id i film.
Avatar billede hmm10 Nybegynder
02. august 2006 - 22:04 #21
Nu har jeg ikke oprettet tabeller i min DB, det er bare teoretisk. Du henter alle data ud. Sætter en variabel true i "films" og så tjekker du om den er sat i "horses"
Avatar billede mpj_86 Nybegynder
02. august 2006 - 22:09 #22
Jeg har lavet lidt om på koden men syntes ikke den virker:

$all_films = mysql_query("SELECT `heste_id` FROM `film`") or die (mysql_error());
$all_horses = mysql_query("SELECT `id` FROM `heste`") or die (mysql_error());

$array_films = mysql_fetch_array($all_films);
$array_horses = mysql_fetch_array($all_horses);

foreach($array_films as $a => $b) $films[$b[0]] = true;

foreach($array_horses as $a => $b)
{
    if($films[$b[0]]) $img_film = '<img src="images/design/prik_film.jpg" border="none" alt="" />';
    else $img_film = false;
    print $img_film;
}
Avatar billede hmm10 Nybegynder
02. august 2006 - 22:20 #23
Vi skal nok over i noget while kan jeg se. (sidder til dagligt med en "SQL konverter", hvilket vil sige at den automatisk laver det om til et array)

while($film = mysql_fetch_array($all_films))
{
    $array_films[$film[0]] = true;
}

while($horses = mysql_fetch_array($all_horses))
{
    if($array_films[$horses[0]]) $img_film = '<img src="images/design/prik_film.jpg" border="none" alt="" />';
    else $img_film = false;
    print 'Hestenavn: '.$horses[1].' - Vi har, hvis du ser en prik her: '.$img_film.'<br />';   
}
Avatar billede mpj_86 Nybegynder
02. august 2006 - 22:22 #24
Det virker ikke, den skriver dette ved være hest:

Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Hestenavn: - Vi har, hvis du ser en prik her:
Avatar billede hmm10 Nybegynder
02. august 2006 - 22:25 #25
Kig det igennem, som jeg har lavet herover 22:20:39. Udskift alle "celle tal" så de passer til dine.
Avatar billede mpj_86 Nybegynder
02. august 2006 - 22:25 #26
Jeg tror ikke vi får det til at virker på den måde, da jeg skal bruge koden inden i denne:

$query=mysql_query("SELECT * FROM heste $where_order LIMIT $side, $pr_side") or die (mysql_error());
    while($row = mysql_fetch_array($query)) {
    //Altså her.
    }
Avatar billede Slettet bruger
02. august 2006 - 22:28 #27
Prøv at skifte tilbage til din opreindelige kode, og så bare lave den if om til:

if ($number_film == '1') {
    $film = '<img border="0" src="/images/design/prik_film.jpg" alt="">';
} else {
    $film='';
}
Avatar billede hmm10 Nybegynder
02. august 2006 - 22:28 #28
Det er blot et forslag til at undgå alle de mange SQL-udtræk.
Avatar billede Slettet bruger
02. august 2006 - 22:28 #29
Eller måske:

if ($number_film >= '1') {
    $film = '<img border="0" src="/images/design/prik_film.jpg" alt="">';
} else {
    $film='';
}
Avatar billede mpj_86 Nybegynder
02. august 2006 - 22:29 #30
HeHe, sandbox det virker :)
Avatar billede hmm10 Nybegynder
02. august 2006 - 22:30 #31
sandbox -> korrekt, som jeg også gør i bla. 21:58:11 og 22:20:39. Men jeg ville blot udgå alle de udtræk ;)
Avatar billede Slettet bruger
02. august 2006 - 22:30 #32
Ok, men det er stadig smartere at lave det om, så der kun bruges en query.
Avatar billede mpj_86 Nybegynder
02. august 2006 - 22:31 #33
Ligemeget..

Hvem skal have points?
Avatar billede mpj_86 Nybegynder
02. august 2006 - 22:32 #34
Er det ikke bedere at gøre sådan?

if ($number_film == '1') {
    $film = '&nbsp;<img border="0" src="/images/design/prik_film.jpg" alt="">';
} else {
    $film= false;
}
Avatar billede hmm10 Nybegynder
02. august 2006 - 22:33 #35
Jeg skal ingen points have, hvis du laver alle de udtræk (Jeg har ikke lært dig noget ved denne tråd så) ;)
Avatar billede mpj_86 Nybegynder
02. august 2006 - 22:34 #36
Hvad er fordelen ved kun at lave et udtræk?
Avatar billede Slettet bruger
02. august 2006 - 22:34 #37
Så får du ikke ballade med din udbyder for at tæske vildt meget på databaseserveren ;-)
Avatar billede hmm10 Nybegynder
02. august 2006 - 22:36 #38
tja, hvis du har 30 udtræk fx. skal du bruge 31 udtræk på noget så enkelt. Og det er jo en del mere end de 2 udtræk. Det virker ja. men din server ville blive mere glad for dig, hvis du minimerer dine udtræk ;)
Avatar billede mpj_86 Nybegynder
02. august 2006 - 22:40 #39
Oki, hvem skulle have points?
Avatar billede Slettet bruger
02. august 2006 - 22:45 #40
Hvis du sammensætter en query i stil med dette, skulle det kunne lade sig gøre at nøjes med en enkelt query:

SELECT heste.*, IF(x.antal > 0, 1, 0) AS film
  FROM heste, (SELECT COUNT(*) AS ANTAL FROM film WHERE heste.id = film.heste_id) AS x
$where_order LIMIT $side, $pr_side

Og så skal du bare se om $row['film'] er == 0 eller 1
Avatar billede Slettet bruger
02. august 2006 - 22:45 #41
Det kræver dog en ny nok MySQL
Avatar billede mpj_86 Nybegynder
02. august 2006 - 23:03 #42
Smid et svar sandbox.
Avatar billede Slettet bruger
02. august 2006 - 23:12 #43
Ok, men jeg synes hmm10 skal have del også.
Avatar billede Slettet bruger
02. august 2006 - 23:12 #44
Og så var det meningen at lægge som et svar
Avatar billede Slettet bruger
02. august 2006 - 23:12 #45
Argh!
Avatar billede hmm10 Nybegynder
02. august 2006 - 23:46 #46
Så kun lidt - og lov mig at optimer dine udtræk fremover (noget for noget)
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