Avatar billede sux Nybegynder
02. marts 2002 - 10:25 Der er 37 kommentarer og
2 løsninger

Det må kunne gøres nemmere

Er der ikke en smartere måde, at hive noget ud fra een tabel samtidig med, at en kolonne derfra stemmer overens med en kolonne fra een anden tabel?

Jeg synes, at denne måde er ret uoverskuelig, når man vil rette i den:

$result = mysql_query("SELECT * FROM artikler ORDER BY dato DESC LIMIT 0, 4");
$number = mysql_num_rows($result);

$kat = mysql_query("SELECT id,image_small FROM kategorier");
$i=0;
while ($raekke = mysql_fetch_array($kat)) { 
  extract($raekke);               
  $templist[$i]=$id;
  $i++;
  $templist[$i]=$image_small;
  $i++;
  }

if ($number > 0) {
  while($row = mysql_fetch_array($result)) {

for ($j=0;j<sizeof($templist);$j=$j+2){       
    if ($row[kategori]==$templist[$j]){
        $tempkat=$templist[$j+1];   
        break;                     
}                                   
}
print "$tempkat";
";
}
Avatar billede Slettet bruger
02. marts 2002 - 11:12 #1
SELECT kategori.image_small FROM artikler, kategorier WHERE artikler.kategori = kategorier.id ORDER BY artikler.dato DESC LIMIT 0,4

- hvis det er det, du prøver på.
Avatar billede sux Nybegynder
02. marts 2002 - 11:13 #2
Okay - du vil ikke lige kommentere din kode?
Avatar billede Slettet bruger
02. marts 2002 - 11:15 #3
# Henter image_small fra "kategori" for hver artikel i "artikler".
Avatar billede sux Nybegynder
02. marts 2002 - 11:39 #4
Hvordan viser man så images small?
$row[image_small] ???
Avatar billede Slettet bruger
02. marts 2002 - 11:41 #5
$result = mysql_query("SELECT kategori.image_small AS image FROM artikler, kategorier WHERE artikler.kategori = kategorier.id ORDER BY artikler.dato DESC LIMIT 0,4");

while ($array = mysql_fetch_array($result))
  echo $array['image'];
Avatar billede sux Nybegynder
02. marts 2002 - 11:43 #6
Er det forresten ikke nærmere sådan at koden skal se ud:

SELECT kategorier.image_small FROM artikler, kategorier WHERE artikler.kategorier = kategorier.id ORDER BY artikler.dato DESC LIMIT 0,4

?
Avatar billede Slettet bruger
02. marts 2002 - 11:45 #7
Der havde indsneget sig en fejl, jow:

$result = mysql_query("SELECT kategorier.image_small AS image FROM artikler, kategorier WHERE artikler.kategori = kategorier.id ORDER BY artikler.dato DESC LIMIT 0,4");

while ($array = mysql_fetch_array($result))
  echo $array['image'];
Avatar billede sux Nybegynder
02. marts 2002 - 11:55 #8
Arggg jeg kan f.. ikke få det til at funke...
Her er det som jeg egentlig skal bruge det til

if ($area == "d"){
$pentagon1= "$id = disciplin";
}
if ($area == "v"){
$pentagon1= "$id = vindretning";
}
SELECT spots.navn AS navn FROM spots_kommentar, spots WHERE spots_kommentar.spot = spots.id, $pentagon1
Avatar billede Slettet bruger
02. marts 2002 - 11:57 #9
Nu er jeg stået af. Aner ikke, hvad du prøver på.
Avatar billede sux Nybegynder
02. marts 2002 - 12:00 #10
Det er det her jeg prøver på:

$sql = mysql_query("SELECT spots.navn AS navn FROM spots_kommentar, spots WHERE spots_kommentar.spot = spots.id");
$result = mysql_query("$sql");
$number = mysql_num_rows($result);
if ($number > 0) {
while($row = mysql_fetch_array($result)) {
print "&nbsp;&nbsp;<a href=\"view.php?id=$row[id]\">$row[navn]</a><br><br>";
}
}
}
Avatar billede Slettet bruger
02. marts 2002 - 12:01 #11
Hvordan ser henholdsvis din spots og din spots_kommentar tabel ud?
Avatar billede sux Nybegynder
02. marts 2002 - 12:05 #12
spots:
id, kategori, navn, beskrivelse

spots_kommentar
id, spot, nruger_navn, bruger_email, kommentar, billede, godkendt, disciplin, vindretning
Avatar billede sux Nybegynder
02. marts 2002 - 12:07 #13
Og det jeg skal have er:
spots.navn
spots_kommentar.spot
Avatar billede Slettet bruger
02. marts 2002 - 12:07 #14
Og spot i spots_kommentar indeholder et id fra tabellen spots ik?
Avatar billede sux Nybegynder
02. marts 2002 - 12:11 #15
yep:
spots_kommentar.spot = spots.id
Avatar billede tipsen Nybegynder
02. marts 2002 - 12:12 #16
Hvad med:

"SELECT spots.navn AS navn FROM spots_kommentar, spots WHERE spots_kommentar.spot = spots.id AND $pentagon1"
Avatar billede Slettet bruger
02. marts 2002 - 12:13 #17
$result = mysql_query("SELECT spots.navn AS navn, spots_kommentar.spot AS id FROM spots, spots_kommentar WHERE spots.id = spots_kommentar.spot");
if (mysql_num_rows($result) > 0) {
  while($array = mysql_fetch_array($result))
    echo "&nbsp;&nbsp;<a href='view.php?id='".$array['id']."'>".$array['navn']."</a><br><br>";
}
Avatar billede sux Nybegynder
02. marts 2002 - 12:14 #18
den er ikke helt tilfreds
Avatar billede tipsen Nybegynder
02. marts 2002 - 12:15 #19
Eller en lidt pænere (vist også mere rigtig) udgave:

if ($area == "d"){
$pentagon1= "'disciplin'";
}
else if ($area == "v"){
$pentagon1= "'vindretning'";
}

SELECT spots.navn AS navn FROM spots_kommentar, spots WHERE spots_kommentar.spot = spots.id AND spots_kommentar.id = $pentagon1;
Avatar billede sux Nybegynder
02. marts 2002 - 12:16 #20
Yeahhaa !!!

tester lige igen...
Avatar billede sux Nybegynder
02. marts 2002 - 12:17 #21
den viser ikke id med din version mercur8
Avatar billede Slettet bruger
02. marts 2002 - 12:19 #22
Prøv evt. AS thisID .. og så $array['thisID'] i stedet.
Avatar billede sux Nybegynder
02. marts 2002 - 12:25 #23
Den her viser de rigtige navne, men inden id:

$result = mysql_query("SELECT spots.navn AS navn FROM spots_kommentar, spots WHERE spots_kommentar.spot = spots.id AND $pentagon1");
if (mysql_num_rows($result) > 0) {
  while($array = mysql_fetch_array($result))
    echo "&nbsp;&nbsp;<a href='view.php?id='".$array['thisID']."'>".$array['navn']."</a><br><br>";
}
Avatar billede Slettet bruger
02. marts 2002 - 12:26 #24
$result = mysql_query("SELECT spots.navn AS navn, spots.id AS thisID FROM spots_kommentar, spots WHERE spots_kommentar.spot = spots.id AND $pentagon1");
if (mysql_num_rows($result) > 0) {
  while($array = mysql_fetch_array($result))
    echo "&nbsp;&nbsp;<a href='view.php?id='".$array['thisID']."'>".$array['navn']."</a><br><br>";
}
Avatar billede sux Nybegynder
02. marts 2002 - 12:28 #25
nopes
Avatar billede Slettet bruger
02. marts 2002 - 12:29 #26
Det kan ikke passe. Du ved godt at den ID bliver skrevet i et link ik?
Avatar billede Slettet bruger
02. marts 2002 - 12:29 #27
"nopes" er iøvrigt en genial beskrivelse af problemet.
Avatar billede sux Nybegynder
02. marts 2002 - 12:30 #28
hehe; ja...

ja, jeg ved godt at id skal ses i linket
Avatar billede sux Nybegynder
02. marts 2002 - 12:31 #29
Jeg fatter ikke hvor det ikke virker:

if ($area == "d"){
$pentagon1= "$id = disciplin";
}
if ($area == "v"){
$pentagon1= "$id = vindretning";
}

$result = mysql_query("SELECT spots.navn AS navn, spots_kommentar.id AS thisID FROM spots_kommentar, spots WHERE spots_kommentar.spot = spots.id AND $pentagon1");
if (mysql_num_rows($result) > 0) {
  while($array = mysql_fetch_array($result))
    echo "&nbsp;&nbsp;<a href='view.php?id='".$array['thisID']."'>".$array['navn']."</a><br><br>";
}
Avatar billede Slettet bruger
02. marts 2002 - 12:32 #30
echo "&nbsp;&nbsp;<a href='view.php?id=".$array['thisID']."'>".$array['navn']."</a><br><br>";
Avatar billede sux Nybegynder
02. marts 2002 - 12:33 #31
TABEL: spots_kommentar
id spot bruger_navn bruger_email kommentar billede godkendt disciplin vindretning

TABEL: spots
id kategori navn beskrivelse
Avatar billede sux Nybegynder
02. marts 2002 - 12:35 #32
"Links": TABEL: spots(id)  =  TABEL: spots_kommentar(spot)
Avatar billede Slettet bruger
02. marts 2002 - 12:36 #33
Fjern "AND $pentagon1" fra den query.
Det du laver med $pentagon1 variablen er noget vrøvl.

Jeg giver op, dine forklaringer er for dårlige.
Avatar billede sux Nybegynder
02. marts 2002 - 12:37 #34
Nu viser den id, men bare det forkerte
Avatar billede sux Nybegynder
02. marts 2002 - 12:37 #35
altså efter at jeg rettede:

echo "&nbsp;&nbsp;<a href='view.php?id=".$array['thisID']."'>".$array['navn']."</a><br><br>";
Avatar billede Slettet bruger
02. marts 2002 - 12:38 #36
Det er ikke underligt. Du skal have "spots.id AS thisID" istedet for
"spots_kommentar.id AS thisID" - som jeg har skrevet 4 gange tidligere.
Avatar billede sux Nybegynder
02. marts 2002 - 12:42 #37
Jeg tror at den er der:

if ($area == "d"){
$pentagon1= "$id = disciplin";
}
if ($area == "v"){
$pentagon1= "$id = vindretning";
}
$result = mysql_query("SELECT spots.navn AS navn, spots_kommentar.spot AS thisID FROM spots_kommentar, spots WHERE spots_kommentar.spot = spots.id AND $pentagon1");
if (mysql_num_rows($result) > 0) {
  while($array = mysql_fetch_array($result))
    echo "&nbsp;&nbsp;<a href='view.php?id=".$array['thisID']."'>".$array['navn']."</a><br><br>";
}
Avatar billede sux Nybegynder
02. marts 2002 - 12:46 #38
Tak for tålmodigheden!!!
Avatar billede tipsen Nybegynder
02. marts 2002 - 13:15 #39
Tak for pointene - jeg vil lige foreslå følgende:

if ($area == "d"){
$pentagon1= "$id = 'disciplin'";
}
else if ($area == "v"){
$pentagon1= "$id = 'vindretning'";
}
$result = mysql_query("SELECT spots.navn, spots_kommentar.spot FROM spots_kommentar, spots WHERE spots_kommentar.spot = spots.id AND $pentagon1");
if (mysql_num_rows($result) > 0) {
  while(list($navn, $thisid) = mysql_fetch_row($result)) {
    echo "&nbsp;&nbsp;<a href=\"view.php?id=$thisid\">$navn</a><br><br>";
  }
}

at bruge "else if" i stedet for "if" betyder, at hvis den første if-betingelse er sand, vil else-if ikke blive undersøgt - dvs. mindre tidskrævende!

Desuden er disciplin og vindretning sat i enkelt anførselstegn, hvilket jeg mener er mere korrekt i tekstsammenligninger i mysql!

til sidst er der lavet lidt om på loopet, så det (synes jeg) er lidt nemmere at overskue!

--tipsen--
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