30. juni 2004 - 17:55Der 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 ****
Med version 7 af TeamShare tager Lector næste skridt og bygger en platform for AI-agenter, der i højere grad kan følge medarbejderen gennem hele arbejdsprocessen.
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>"; }
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...
$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... :)
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 ;-)
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)
echo "<div align=\"center\">"; //************************** if ($subid){ $tilbage = ucwords(strtolower($id)); echo " <a href=\"index.php?action=solsystemet&id=".$id."\"><b>".$tilbage."</b></a> "; } //**************************** $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> "; } 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?
//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 } ?>
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.