Avatar billede gil-galad Nybegynder
30. juni 2004 - 17:55 Der er 30 kommentarer og
1 løsning

Hjælp med en SQL sætning

hej


Jeg har nogt kode her:

if ($id){
if(isset($_GET['id']) && $_GET['id'] != "" && $_GET['subid'] == "") {
  $result = mysql_query("SELECT subid,overskrift,billede1,billede2,billede3,alt1,alt2,alt3,tekst FROM solsystemet WHERE id = '$id' AND `subid` IS NULL") or die(mysql_error());
} elseif(isset($_GET['id']) && $_GET['id'] != "" && isset($_GET['subid']) && $_GET['subid'] != "") {
  $result = mysql_query("SELECT subid,overskrift,billede1,billede2,billede3,alt1,alt2,alt3,tekst FROM solsystemet WHERE id = '$id' AND subid = '$subid'") or die(mysql_error());
}
if (mysql_num_rows($result)>0) {
  while($row = mysql_fetch_array($result) ) {
    echo "<h3>".$row['overskrift']."</h3>" . " ";
    for($i = 1; $i <= 3; $i++) {
        $alt = $row{"alt" . $i};
        $img = $row{"billede" . $i};
        if($img != "") {
            $size = getimagesize($img);
          echo "<img src=\"$img\" width=\"$size[0]px\" height=\"$size[1]px\" alt=\"$alt\" class=\"floatbillede\">";
        }
      }
    echo "<div align=\"justify\">".$row['tekst']."</div>";
  }
}
}else.............


Min tabelstruktur er således:
CREATE TABLE solsystemet (
  id varchar(50),          -Bestemmer indholdet af $row['tekst']
  subid varchar(50),      -Bestemmer også indholdet af $row['tekst']
  overskrift varchar(50),  -Overskrift på pågældende side
  billede1 varchar(50),    -bare en url
  billede2 varchar(50),    -bare en url
  billede3 varchar(50),    -bare en url
  alt1 varchar(50),        -bare en kort tekst
  alt2 varchar(50),        -bare en kort tekst
  alt3 varchar(50),        -bare en kort tekst
  tekst text
);

lad os sige der er en hovedside med nogle undersider. (ikke alle har undersider, og dem der har, har ikke lige mange) Denne hovedside ligger i feltet 'id' Men hvis der sammen med id'et også ligger et subid, er det indholdet af den række der skal vises. fx:

side1 (id="1") subid=NULL    -  Viser siden hvor id=1
side1 (id="1") subid="1"      -  Viser siden hvor id=1 og subid=1
side1 (id="1") subid="2"      -  Viser siden hvor id=1 og subid=2
side1 (id="1") subid="3"      -  Viser siden hvor id=1 og subid=3
side1 (id="1") subid="4"      -  Viser siden hvor id=1 og subid=4

side2 (id="2") subid=NULL    -  Viser siden hvor id=2
side2 (id="2") subid="1"      -  Viser siden hvor id=2 og subid=1
side2 (id="2") subid="2"      -  Viser siden hvor id=2 og subid=2
side2 (id="2") subid="3"      -  Viser siden hvor id=2 og subid=3
side2 (id="2") subid="4"      -  Viser siden hvor id=2 og subid=4
osv...
I tabellen ligger så mange sider og undersider...

Det jeg så vil have, er at fra hver side og underside, ligger et link til de andre sider og hovedsider der har det samme id.

et link til  side2 (id="2") subid="4"  vil se ca. sådan ud: index.php?id=1&subid=4  og det virker fint. Men det er bare humlen at den skal printe linksne til de andre sider, der har det samme id ud.

****
bemærk: at hverken id eller subid indeholder tal ligessom mit eksempel... subid kan være: NULL, moon, fakta, moonfakta
****

Skriv hvis i ikke forstår :-)
Avatar billede jaw Nybegynder
30. juni 2004 - 17:58 #1
Andre hovedsider:

mysql_query("SELECT * FROM solsystemet WHERE id = '$id' AND subid IS NULL");

andre undersider:

mysql_query("SELECT * FROM solsystemet WHERE id = '$id' AND subid IS NOT NULL");

måske? :)
Avatar billede gil-galad Nybegynder
30. juni 2004 - 17:59 #2
måske, men hvordan får jeg det printet ud lige over linien  echo "<div align=\"justify\">".$row['tekst']."</div>";

? :-)
Avatar billede jaw Nybegynder
30. juni 2004 - 18:12 #3
Prøv lige det med hovedsider først, for kan være jeg misforstår igen...

$q_hovedlinks = mysql_query("SELECT * FROM solsystemet WHERE id = '$id' AND subid IS NULL");
echo"Hovedsider:";
while($hovedlinks = mysql_fetch_array($q_hovedlinks)) {
  echo"<a href='side.php?id=$hovedlinks[id]'>en anden hovedside</a>";
}
Avatar billede gil-galad Nybegynder
30. juni 2004 - 18:21 #4
fra hovedsiderne skal der ikke være links til andre hovedsider, men til hovedsidens undersider, og fra hovedsidens undersider skal der være links til de andre undersider(med samme id) og undersiden egen hovedside..

altså fra fra en side med id=saturn skal der være links til alle de andre sider med det samme id, men med et andet subid...

du kan se hvad jeg mener her på den manuelt lavede side:
http://spiff.users.whitehat.dk/index.php?action=saturn  hvis du så klikker på en af knapperne øverst kommer du "dybere" ind på siden, men ikke ind på sider der omhandler andre planeter :-)

OBS den eneste forskel på den side jeg linkede til er at der ikke står 4 links, men kun 2 øverst...
Avatar billede jaw Nybegynder
30. juni 2004 - 18:53 #5
Ahh... Ja, selvf.

$q = mysql_query("SELECT * FROM solsystemet WHERE id = '$id' AND subid != '$subid'");
while($row = mysql_fetch_array($q)) {
echo"$row[feltet-med-navn];
}

Og så skal $id og $subid selvf. være sat på den ene eller anden måde... :)
Avatar billede gil-galad Nybegynder
30. juni 2004 - 19:02 #6
det må jeg indrømme jeg ikike forstår det der?

Hvad mener du med feltet-med-navn?
Avatar billede jaw Nybegynder
30. juni 2004 - 19:03 #7
Det felt der indeholder "Fakta om månen", altså det der nu skal stå i knappen... Det hedder nok overskrift tror jeg...
Avatar billede gil-galad Nybegynder
30. juni 2004 - 19:06 #8
hvordan skrives url'en så ud?
Avatar billede jaw Nybegynder
30. juni 2004 - 19:08 #9
Kommer jo lidt an på... Du har action der er = ID fra databasen og så har du hvad til subid?
Avatar billede gil-galad Nybegynder
30. juni 2004 - 19:12 #10
?  subid kan være: NULL, moon, fakta, moonfakta

se her: det er databasen, uden de links:
hovedside: http://spiff.users.whitehat.dk/sql/index.php?action=solsystemet&id=saturn

underside1: http://spiff.users.whitehat.dk/sql/index.php?action=solsystemet&id=saturn&subid=fakta

underside2: http://spiff.users.whitehat.dk/sql/index.php?action=solsystemet&id=saturn&subid=moon

underside3: http://spiff.users.whitehat.
dk/sql/index.php?action=solsystemet&id=saturn&subid=moonfakta
Avatar billede gil-galad Nybegynder
30. juni 2004 - 19:13 #11
Avatar billede jaw Nybegynder
30. juni 2004 - 19:17 #12
Ah, ok... Prøv:

$q = mysql_query("SELECT * FROM solsystemet WHERE id = '$id' AND subid != '$subid'");
while($row = mysql_fetch_array($q)) {
echo"<a href='" . $_SERVER['PHP_SELF'] . "?action=solsystemet&id=$id&subid=$subid'>$row[overskrift]</a>";
}
Avatar billede gil-galad Nybegynder
30. juni 2004 - 19:33 #13
ikke helt. Den ved jo ikke hvad $subid er når man ikke er på siden med subid i headeren. Og så hjælper det ikke så meget.

Se her: http://spiff.users.whitehat.dk/sql/index.php?action=solsystemet&id=uranus
Avatar billede jaw Nybegynder
30. juni 2004 - 19:37 #14
Jeg har også lige lært noget nyt :) Så prøv:

echo"<a href='" . $_SERVER['PHP_SELF'] . "?action=solsystemet&id={$id}&subid={$row['subid']}'>$row[overskrift]</a>";
Avatar billede gil-galad Nybegynder
30. juni 2004 - 19:51 #15
Det virker næsten :-) men når man er på en af undersiderne, kommer der ikke et link til hovedsiden. Har prøvet at sætte dette ind, men det virker ikke så godt ;-)

if(!$subid){echo "<a href=\"index.php?action=solsystemet&id=".$id."\">".$row['id']."</a> "; }
Avatar billede jaw Nybegynder
30. juni 2004 - 19:53 #16
Tror du skal fjerne din ! i if(!$subid)
Avatar billede gil-galad Nybegynder
30. juni 2004 - 19:54 #17
nej, for det skal være    hvis subid IKKE er tilstede echo"


men hvad hedder det?
Avatar billede jaw Nybegynder
30. juni 2004 - 20:13 #18
Jow det er sådan, men du har jo subid tilstede?
Avatar billede gil-galad Nybegynder
30. juni 2004 - 20:14 #19
ja det fandt jeg også ud af :-)
Avatar billede jaw Nybegynder
30. juni 2004 - 20:15 #20
hehe, vil det så sige at det er løst det hele? :)
Avatar billede gil-galad Nybegynder
30. juni 2004 - 20:18 #21
ikke helt ;-)

Det ser sådan ud nu.
//***************************
echo "<div align=\"center\">";
if($subid){
  echo "<a href=\"index.php?action=solsystemet&id=".$id."\">".$id."</a> ";
}
$q = mysql_query("SELECT * FROM solsystemet WHERE id = '$id' AND subid != '$subid'");
while($row = mysql_fetch_array($q)) {
echo "<a href=\"".$_SERVER['PHP_SELF']."?action=solsystemet&id=".$id."&subid=".$row['subid']."\">".$row['overskrift']."</a> ";
}
echo "</div>";
//***************************

Men linket skal jo have id'ets navn. Men det er jo ikke stavet med stort? Kan man stave det med stort og bruge det som link? (så hellere en anden måde)
Avatar billede jaw Nybegynder
30. juni 2004 - 20:22 #22
Den forstår jeg ikke... Kan du vise det med et link?
Avatar billede gil-galad Nybegynder
30. juni 2004 - 20:25 #23
linket helt ude til venstre, uranus, http://spiff.users.whitehat.dk/sql/index.php?action=solsystemet&id=uranus&subid=fakta

det ville være rart hvis det kunne staves med stort...


Men jeg bliver nød til at gå nu, men jeg kommer herind igen i morgen... Hej!
Avatar billede jaw Nybegynder
30. juni 2004 - 21:14 #24
Du kan jo bare ændre det i din database, mener bestemt den er ligeglad med store og små bogstaver...
Avatar billede gil-galad Nybegynder
02. juli 2004 - 00:07 #25
ok det er løst nu.

Så er der bare et sidste lille problem:

Koden ser sådan ud nu:

<?
$id = ($_GET["id"]);
$subid = ($_GET["subid"]);

if ($id){

echo "<div align=\"center\">";
//**************************
if ($subid){
$tilbage = ucwords(strtolower($id));
echo "&nbsp;&nbsp;&nbsp;<a href=\"index.php?action=solsystemet&id=".$id."\"><b>".$tilbage."</b></a>&nbsp;&nbsp;&nbsp;";
}
//****************************
$navigation = mysql_query("SELECT * FROM solsystemet WHERE id = '$id' AND subid != '$subid'");
while($row = mysql_fetch_array($navigation)) {
echo "<a href=\"index.php?action=solsystemet&id=".$id."&subid=".$row['subid']."\">".$row['overskrift']."</a>&nbsp;&nbsp;&nbsp;";
}
echo "</div>";

if(isset($_GET['id']) && $_GET['id'] != "" && $_GET['subid'] == "") {
  $result = mysql_query("SELECT subid,overskrift,billede1,billede2,billede3,alt1,alt2,alt3,tekst FROM solsystemet WHERE id = '$id' AND `subid` IS NULL") or die(mysql_error());
} elseif(isset($_GET['id']) && $_GET['id'] != "" && isset($_GET['subid']) && $_GET['subid'] != "") {
  $result = mysql_query("SELECT subid,overskrift,billede1,billede2,billede3,alt1,alt2,alt3,tekst FROM solsystemet WHERE id = '$id' AND subid = '$subid'") or die(mysql_error());
}
if (mysql_num_rows($result)>0) {
  while($row = mysql_fetch_array($result) ) {
    echo "<h3>".$row['overskrift']."</h3>" . " ";   
    for($i = 1; $i <= 3; $i++) {
        $alt = $row{"alt" . $i};
        $img = $row{"billede" . $i};
        if($img != "") {
            $size = getimagesize($img);
          echo "<img src=\"$img\" width=\"$size[0]px\" height=\"$size[1]px\" alt=\"$alt\" class=\"floatbillede\">";
        }
      }
    echo "<div align=\"justify\">".$row['tekst']."</div>";
  }
}
}else{
$index = mysql_query("SELECT overskrift,tekst FROM standart WHERE id = 'solsystemet'") or die(mysql_error());
if( $row = mysql_fetch_array($index) ) {
  echo "<h3>".$row['overskrift']."</h3>".$row['tekst']."";
}
else{echo "En fejl er opstået. Kontakt Webmaster.";}
}
?>

men jeg vil gerne have det mellem stjernerne til at blive skrevet ud efter overskriften, men over billederne og teksten. Problenet er så at det skal være midt inde i en masse {}'er så jeg kan ikke få det til at virke uden at teksten ikke bliver skrevet ud. Kan du hjælpe med det?
Avatar billede jaw Nybegynder
02. juli 2004 - 02:13 #26
Nu har jeg læst dit "problem" et par gange :) - og hvis jeg forstår det rigtigt, så burde det her virke:

<?
$id = ($_GET["id"]);
$subid = ($_GET["subid"]);

if ($id){

echo "<div align=\"center\">";

$navigation = mysql_query("SELECT * FROM solsystemet WHERE id = '$id' AND subid != '$subid'");
while($row = mysql_fetch_array($navigation)) {
echo "<a href=\"index.php?action=solsystemet&id=".$id."&subid=".$row['subid']."\">".$row['overskrift']."</a>&nbsp;&nbsp;&nbsp;";
}
echo "</div>";
//****************************
if ($subid){
$tilbage = ucwords(strtolower($id));
echo "&nbsp;&nbsp;&nbsp;<a href=\"index.php?action=solsystemet&id=".$id."\"><b>".$tilbage."</b></a>&nbsp;&nbsp;&nbsp;";
}
//****************************
if(isset($_GET['id']) && $_GET['id'] != "" && $_GET['subid'] == "") {
  $result = mysql_query("SELECT subid,overskrift,billede1,billede2,billede3,alt1,alt2,alt3,tekst FROM solsystemet WHERE id = '$id' AND `subid` IS NULL") or die(mysql_error());
} elseif(isset($_GET['id']) && $_GET['id'] != "" && isset($_GET['subid']) && $_GET['subid'] != "") {
  $result = mysql_query("SELECT subid,overskrift,billede1,billede2,billede3,alt1,alt2,alt3,tekst FROM solsystemet WHERE id = '$id' AND subid = '$subid'") or die(mysql_error());
}
if (mysql_num_rows($result)>0) {
  while($row = mysql_fetch_array($result) ) {
    echo "<h3>".$row['overskrift']."</h3>" . " ";   
    for($i = 1; $i <= 3; $i++) {
        $alt = $row{"alt" . $i};
        $img = $row{"billede" . $i};
        if($img != "") {
            $size = getimagesize($img);
          echo "<img src=\"$img\" width=\"$size[0]px\" height=\"$size[1]px\" alt=\"$alt\" class=\"floatbillede\">";
        }
      }
    echo "<div align=\"justify\">".$row['tekst']."</div>";
  }
}
}else{
$index = mysql_query("SELECT overskrift,tekst FROM standart WHERE id = 'solsystemet'") or die(mysql_error());
if( $row = mysql_fetch_array($index) ) {
  echo "<h3>".$row['overskrift']."</h3>".$row['tekst']."";
}
else{echo "En fejl er opstået. Kontakt Webmaster.";}
}
?>
Avatar billede gil-galad Nybegynder
02. juli 2004 - 17:27 #27
det ser ikke ud til at virke. Jeg har løst det med de store bogstaver, men det nye problem er at linksne kommer over overskriften... se her:

http://spiff.users.whitehat.dk/123.jpg
Avatar billede jaw Nybegynder
02. juli 2004 - 17:37 #28
Ahh, så snakkede vi vist lidt forbi hinanden, prøv:

<?
$id = ($_GET["id"]);
$subid = ($_GET["subid"]);

if ($id){

//****************************
if ($subid){
$tilbage = ucwords(strtolower($id));
echo "&nbsp;&nbsp;&nbsp;<a href=\"index.php?action=solsystemet&id=".$id."\"><b>".$tilbage."</b></a>&nbsp;&nbsp;&nbsp;";
}
//****************************
if(isset($_GET['id']) && $_GET['id'] != "" && $_GET['subid'] == "") {
  $result = mysql_query("SELECT subid,overskrift,billede1,billede2,billede3,alt1,alt2,alt3,tekst FROM solsystemet WHERE id = '$id' AND `subid` IS NULL") or die(mysql_error());
} elseif(isset($_GET['id']) && $_GET['id'] != "" && isset($_GET['subid']) && $_GET['subid'] != "") {
  $result = mysql_query("SELECT subid,overskrift,billede1,billede2,billede3,alt1,alt2,alt3,tekst FROM solsystemet WHERE id = '$id' AND subid = '$subid'") or die(mysql_error());
}
if (mysql_num_rows($result)>0) {
  while($row = mysql_fetch_array($result) ) {
    echo "<h3>".$row['overskrift']."</h3>" . " "; 

// navigation start
echo "<div align=\"center\">";
$navigation = mysql_query("SELECT * FROM solsystemet WHERE id = '$id' AND subid != '$subid'");
while($data = mysql_fetch_array($navigation)) {
echo "<a href=\"index.php?action=solsystemet&id=".$id."&subid=".$data['subid']."\">".$data['overskrift']."</a>&nbsp;&nbsp;&nbsp;";
}
echo "</div>";
//navigation slut

    for($i = 1; $i <= 3; $i++) {
        $alt = $row{"alt" . $i};
        $img = $row{"billede" . $i};
        if($img != "") {
            $size = getimagesize($img);
          echo "<img src=\"$img\" width=\"$size[0]px\" height=\"$size[1]px\" alt=\"$alt\" class=\"floatbillede\">";
        }
      }
    echo "<div align=\"justify\">".$row['tekst']."</div>";
  }
}
}else{
$index = mysql_query("SELECT overskrift,tekst FROM standart WHERE id = 'solsystemet'") or die(mysql_error());
if( $row = mysql_fetch_array($index) ) {
  echo "<h3>".$row['overskrift']."</h3>".$row['tekst']."";
}
else{echo "En fejl er opstået. Kontakt Webmaster.";}
}
?>

(koden er ikke den smukkeste lige nu, det kan vi evt. kigge på hvis det kommer til at funke, og du vil !)
Avatar billede gil-galad Nybegynder
02. juli 2004 - 19:14 #29
ok, nu virker koden som den skal, hvorfor er den ikke "den smukkeste"?

Her er den:

<?
$id = ($_GET["id"]);
$subid = ($_GET["subid"]);

if ($id){

if(isset($_GET['id']) && $_GET['id'] != "" && $_GET['subid'] == "") {
  $result = mysql_query("SELECT subid,overskrift,billede1,billede2,billede3,alt1,alt2,alt3,tekst FROM solsystemet WHERE id = '$id' AND `subid` IS NULL") or die(mysql_error());
} elseif(isset($_GET['id']) && $_GET['id'] != "" && isset($_GET['subid']) && $_GET['subid'] != "") {
  $result = mysql_query("SELECT subid,overskrift,billede1,billede2,billede3,alt1,alt2,alt3,tekst FROM solsystemet WHERE id = '$id' AND subid = '$subid'") or die(mysql_error());
}
if (mysql_num_rows($result)>0) {
  while($row = mysql_fetch_array($result) ) {
    echo "<h3>".$row['overskrift']."</h3>" . " ";

// navigation start
echo "<div align=\"center\">";
if ($subid){
$tilbage = ucwords(strtolower($id));
echo "&nbsp;<a href=\"index.php?action=solsystemet&id=".$id."\"><b>".$tilbage."</b></a>&nbsp;";
}
$navigation = mysql_query("SELECT * FROM solsystemet WHERE id = '$id' AND subid != '$subid'");
while($data = mysql_fetch_array($navigation)) {
echo "&nbsp;<a href=\"index.php?action=solsystemet&id=".$id."&subid=".$data['subid']."\">".$data['overskrift']."</a>&nbsp;";
}
echo "</div>";
//navigation slut

//billeder start
    for($i = 1; $i <= 3; $i++) {
        $alt = $row{"alt" . $i};
        $img = $row{"billede" . $i};
        if($img != "") {
            $size = getimagesize($img);
          echo "<img src=\"$img\" width=\"$size[0]px\" height=\"$size[1]px\" alt=\"$alt\" class=\"floatbillede\">";
        }
      }
//billeder slut

    echo "<div align=\"justify\">".$row['tekst']."</div>";
  }
}

//standarttekst start
}else{
$index = mysql_query("SELECT overskrift,tekst FROM standart WHERE id = 'solsystemet'") or die(mysql_error());
if( $row = mysql_fetch_array($index) ) {
  echo "<h3>".$row['overskrift']."</h3>".$row['tekst']."";
}
else{echo "En fejl er opstået. Kontakt Webmaster.";}
//standarttekst slut
}
?>
Avatar billede jaw Nybegynder
03. juli 2004 - 01:21 #30
Nej, det er ingenting... Tror det var ***** der fik det til at se rodet ud, bare se bort fra det, sry :)

Tillader mig lige at smide det som svar, hvis du er tilfreds? :)
Avatar billede gil-galad Nybegynder
03. juli 2004 - 13:51 #31
Jeg er yderrst tilfreds!
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