Avatar billede Slettet bruger
17. december 2002 - 20:16 Der er 18 kommentarer og
1 løsning

Lav oversigt fra SQL

Hejsa eksperter.

Jeg har en nyheds sektion der køre over MySQL.
Jeg har det sådan at den kun viser de 3 nyeste nyheder.
Og jeg vil nu gerne have lavet en anden side, hvor jeg har en liste over alle nyheder. Den skal hente alle overskrifter fra SQL og indlæse dem i en tabel, det skal så fungere på den måde at når man trykker på overskriften åbner den nyheden.
Er der en eller anden der kan fortælle mig hvordan jeg kan lave dette?
Feltnavnet hvor overskrifterne ligger hedder overskrift

På forhånd tak :)
Avatar billede jpvj Nybegynder
17. december 2002 - 20:29 #1
Måske skal du liiige komme med lidt flere detaljer... Du mangler lige at angive om du benytter PHP, ASP eller noget helt tredje.

Du skal til en start sørge for at alle overskrifterne reagerer på museklik, dvs. du skal formattere dem med <A HREF= ...> når du laver din tabel. URL'en skal naturligvis pege på en side på din server, der så sørger for at vise nyheden.

Men uden flere detaljer om, hvad du ønsker, er det svært at svare mere præcist. Kan du ikke finde en side på Internettet i samme stil, og referere til den?

JP
Avatar billede jpvj Nybegynder
17. december 2002 - 20:30 #2
Argh ... som ny bruger her, overså jeg lige, at jeg kiggede i PHP sektionen, så se bort fra denne del i tidligere kommentar!

JP
Avatar billede Slettet bruger
17. december 2002 - 20:39 #3
Hmm... hvilke oplysninger skal der mere til ? :)

Kan du give et eksempel på hvordan det kan laves ? .. jeg er ikke mester i php *G*
Avatar billede rzj Nybegynder
17. december 2002 - 21:59 #4
Well, det mest simple er at du henter id'et for hver overskrift. Når du skriver overskriften ud gør du flg:

print('<a href="'.$PHP_SELF.'?news_id=$news_$id">Dette er din overskrift</a>');

if(isset($news_id){
$sql = 'SELECT * FROM news WHERE news_id='.$news_id;

og her præsentere du resultatet
}
thats it
Avatar billede rzj Nybegynder
17. december 2002 - 22:02 #5
for fanden for noget vrøvl. Jeg er altid så træt. Men her er det jeg mente:

print('<a href="'.$PHP_SELF.'?news_id=$id">$overskrift</a>');

if(isset($news_id){
$sql = 'SELECT * FROM news WHERE id='.$news_id;

- og her præsentere du resultatet
}
thats it
Avatar billede Slettet bruger
17. december 2002 - 22:07 #6
Hmm... okay .. jeg vil nu smutte for iaften, er selv mega træt ..
Hvis jeg nu smed nogle flere points i skidtet og lagde nyhedsscriptet online var der så mulighed for at en ville kigge på det og fremstille oversigts siden?

Jeg har nu forsøgt siden kl 18 og har stadig ikke nogen anelse om hvordan og hvorledes jeg skal gøre det :/
Avatar billede rzj Nybegynder
17. december 2002 - 22:12 #7
jeg vil gerne kigge på det, men lover intet...
Ikke flere points tak.
Og så skal du lægge scriptet her, da både samlet spørgsmål og svar skal være tilgængeligt for andre 'eksperter'. (er ikke lige helt sikker på hvad du mener med 'online' nemlig).
Men post din kode her og lad os se på det.
Avatar billede rzj Nybegynder
17. december 2002 - 22:13 #8
HUSK - udkommenter din DB info (brugernavn/password)
Avatar billede Slettet bruger
17. december 2002 - 22:22 #9
Havde nu egentlig bare tænkt mig at pakke det i en zip fil og smide det på min server, da nyhedsscriptet fylder et par filer. Hvis det er iorden med dig? .. har en mappe til eksperten hvor det vil blive ved med at ligge :)

Det ligger her: http://cypermann.homeip.net/eksperten/Nyheder.zip
Avatar billede rzj Nybegynder
17. december 2002 - 22:59 #10
jeg tror det er noget i den stil (er i sagens natur svært at teste). Læg mærke til at jeg ikke har kigget på alt din kode og om det burde virke. Jeg har kun kigget på vis_nyhed.php og tilføjet en funktion og evaluering (if). Håber du kan bruge det.

<?
include("Nyheder/indstillinger.inc");
include("Nyheder/mysql_kk.inc");

# HER HAR JEG TILFØJET EN FUNKTION DER KALDES NÅR DER ER KLIKKE PÅ OVERSKRIFTEN
function singleNews(){
global $id;
$resultat = mysql_query("SELECT *,UNIX_TIMESTAMP(tid) AS time FROM nyheder WHERE id=$id");
while($row = mysql_fetch_array($resultat)) {
$id=$row["id"];
$tid=$row["time"];
$overskrift=$row["overskrift"];
$nyhed=$row["nyhed"];
$date=date("j",$tid).'. '.$maaned[date("n",$tid)].' '; 
$forfatter = "<A HREF='mailto:Madsstampe@tdcadsl.dk'>Mads Stampe</A>";


echo "
<table ALIGN='center' cellpadding='0' cellspacing='0' width='75%'>
              <tr>
                <td class='newsoverskrift' WIDTH='20%'>
                    $overskrift
                </td>
                <td class='newstom' WIDTH='80%'> &nbsp; </td>
                </tr>
                <tr>
                <td class='newsindhold' COLSPAN='2' style='padding: 2px;'>
                    <BR> $nyhed<br><br>
                   
                </td>    
                </tr>
                <tr>
                <td VALIGN='bottom' class='newsbund' COLSPAN='2' style='padding: 2px;'>    Skrevet d. $date - $forfatter </td></tr>

            </table>   
<BR><BR>";
}
}

$maaned=array('','januar','februar','marts','april','maj','juni','juli',
'august','september','oktober','november','december');


# HER HAR JEG TILFØJET KALDET TIL FUNKTIONEN
if(isset($id)){
singleNews();
exit;
}

if(!$nyhed){
if(!$aa)$aa=0;
$resul = mysql_query("SELECT * FROM nyheder");
$antal = mysql_num_rows($resul);

if($antal>$vis){
linje(1);
}
$resultat = mysql_query("SELECT *,UNIX_TIMESTAMP(tid) AS time FROM nyheder ORDER BY tid DESC LIMIT $aa,$vis");
while($row = mysql_fetch_array($resultat)) {
$id=$row["id"];
$tid=$row["time"];
$overskrift=$row["overskrift"];
$nyhed=$row["nyhed"];
$date=date("j",$tid).'. '.$maaned[date("n",$tid)].' '; 
$forfatter = "<A HREF='mailto:Madsstampe@tdcadsl.dk'>Mads Stampe</A>";

linje(1);
echo "

       
<table ALIGN='center' cellpadding='0' cellspacing='0' width='75%'>
              <tr>
                <td class='newsoverskrift' WIDTH='20%'>
                    <a href=".$PHP_SELF."?id=$id>$overskrift</a>
                </td>
                <td class='newstom' WIDTH='80%'> &nbsp; </td>
                </tr>
                <tr>
                <td class='newsindhold' COLSPAN='2' style='padding: 2px;'>
                    <BR> $nyhed<br><br>
                   
                </td>    
                </tr>
                <tr>
                <td VALIGN='bottom' class='newsbund' COLSPAN='2' style='padding: 2px;'>    Skrevet d. $date - $forfatter </td></tr>

            </table>   
<BR><BR>

               

";
}
unset($nyhed);
}
if(isset($nyhed)){

$resultat = mysql_query("SELECT *,UNIX_TIMESTAMP(tid) AS time FROM nyheder WHERE id='$nyhed'");
$row = mysql_fetch_array($resultat);
$tid=$row["time"];
$overskrift=$row["overskrift"];
$nyhed=$row["nyhed"];
$date=date("j",$tid).'. '.$maaned[date("n",$tid)].' '.date("Y k\l\. H:i",$tid); 

}
linje(2);


function linje($rr){

if($rr==1)echo "
    ";
}
?>
Avatar billede xysto Nybegynder
18. december 2002 - 13:27 #11
Du laver først et scipt der viser overskrifterne, jeg har lige sorteret dem her, da jeg regner med, at det også skal gøres:
<?

$resultat2 = mysql_query("select * from nyheder ORDER BY id");
$headline_id = $id;
while ($raekke = mysql_fetch_array($resultat2))
{
extract($raekke);
$tekst= "<a href='nyheder.php?headline_id=$id'>";
echo "$tekst <b>$overskrift</b></a>";

}
?>

Herefter laves nyheder.php, der viser nyheden

$foresp=mysql_query("SELECT overskrift, tekst, navn, osv FROM nyheder WHERE id = '$headline_id'");
while($data=mysql_fetch_array($foresp)){
echo"<b>$data[0]</b>";
echo "<BR>$data[3]";
echo "$data[1]<BR>";
echo "<i>Tilføjet af $data[2]</i><BR><BR>";
}
?>

Det skulle virke, men skriv igen hvis det ike gør, så kigger jeg på det igen
Avatar billede Slettet bruger
18. december 2002 - 22:08 #12
Okay .. jeg har ikke brugt nogle af jeres måder. Men man kan vel sige at jeg blot har ændret lidt i det orginale script, med inspiration fra begge jeres koder :)

I kan se resultatet her:
http://cypermann.homeip.net/madsstampe/?ref=oversigt

Men for lige at høre om noget helt andet der ikke har med spørgsmålet at gøre.
Som i nok kan se i den tabel hvor jeg har lavet oversigten mangler der en linje i bunden, er der en der kan fortælle mig hvordan jeg får en linje der?

Min kode ser på nuværende tidspunkt sådan ud:

<?
include("Nyheder/indstillinger2.inc");
include("Nyheder/mysql_kk.inc");
?>

   
<?
$maaned=array('','januar','februar','marts','april','maj','juni','juli',
'august','september','oktober','november','december');

if(!$nyhed){
if(!$aa)$aa=0;
$resul = mysql_query("SELECT * FROM nyheder");
$antal = mysql_num_rows($resul);

if($antal>$vis){
linje(1);


}

echo "
<br>
<table ALIGN='center' cellpadding='0' cellspacing='0' width='300'>
                <tr>
                    <td class='oversigtoverskrift' WIDTH='100'>
                    Nyheds arkiv
                </td>
                <td class='oversigttom' WIDTH='100'> &nbsp; </td>
                <td class='oversigttom' WIDTH='100'> &nbsp; </td>
                    </tr></table> ";

$resultat = mysql_query("SELECT *,UNIX_TIMESTAMP(tid) AS time FROM nyheder ORDER BY tid DESC LIMIT $aa,$vis");
while($row = mysql_fetch_array($resultat)) {
$id=$row["id"];
$tid=$row["time"];
$overskrift=$row["overskrift"];
$nyhed=$row["nyhed"];
$date=date("j",$tid).'. '.$maaned[date("n",$tid)].' '; 
$forfatter = "<A HREF='mailto:Madsstampe@tdcadsl.dk'>Mads Stampe</A>";

linje(1);

echo "
    <table ALIGN='center' cellpadding='0' cellspacing='0' width='300'><tr>
           
                <td class='oversigttitle' style='padding: 4px;' WIDTH='150'>
<a href=\"#\" OnClick=\"window.open('http://cypermann.homeip.net/madsstampe/oversigt.php?nyhed=$id','lol','menu=no,width=520,height=400');\"> $overskrift </a> 
</td>
<td WIDTH='50'> &nbsp; </td>
<td class='oversigtdato' WIDTH='100' style='padding-top: 4px; padding-left: 4px; padding-right: 4px;'>
$date
</td>
</tr>
</table>       
";

}
unset($nyhed);
}
if(isset($nyhed)) {

echo " <html>
<head>
<title>Mads Stampe - Nyhedsarkivet</title>
<link rel='stylesheet' type='text/css' href='http://cypermann.homeip.net/madsstampe/stylesheet.css'>
</head>

<body>
";

$resultat = mysql_query("SELECT *,UNIX_TIMESTAMP(tid) AS time FROM nyheder WHERE id='$nyhed'");
$row = mysql_fetch_array($resultat);
$tid=$row["time"];
$overskrift=$row["overskrift"];
$nyhed=$row["nyhed"];
$date=date("j",$tid).'. '.$maaned[date("n",$tid)].' '; 
$forfatter = "<A HREF='mailto:Madsstampe@tdcadsl.dk'>Mads Stampe</A>";


echo "

<tr><td COLSPAN='3'>

<table ALIGN='center'>
<tr>
<td>
<center>
<DIV style='HEIGHT: 350px; OVERFLOW: auto; WIDTH: 500; scrollbar-face-color: ;scrollbar-shadow-color: ;scrollbar-highlight-color: ;scrollbar-3dlight-color: ;scrollbar-darkshadow-color: ;scrollbar-track-color: ;scrollbar-arrow-color: ; '>

<TABLE align='center' border='0' cellPadding='0' cellSpacing='0' width=480>
<TR>    <TD class='oversigtoverskrift' WIDTH='30%'>

$overskrift
                </td>
                <td class='oversigtpopuptom' WIDTH='70%'> &nbsp; </td>
                </tr>

<tr>
                <td class='newsindhold' COLSPAN='2' style='padding: 2px;'>
                    <BR> $nyhed<br><br>
                   
                </td>    
                </tr>
                <tr>
                <td VALIGN='bottom' class='newsbund' COLSPAN='2' style='padding: 2px;'>    Skrevet d. $date - $forfatter </td></tr>



</TD>
</TR>
</TABLE>
</DIV>
</center>
    </td>
</tr>
</table>

</body>
</html>

";

}

linje(2);


function linje($rr){


if($rr==1)echo "
    ";
}
?>


Det eneste sted hvor jeg kan sætte den ind så det virker er ved at lave en echo lige efter linje(2); i bunden af scriptet. Men gør jeg dette ryger denne html linje også på de sider jeg åbner. Altså ved selve nyheden. Og så får jeg fejlkodning når jeg køre den igennem på w3.org

Det burde ikke være et problem for en der har tjek på php, jeg er desværre kun på begynder stadiet *G*

Men hvis en af jer kan svare mig på dette, så kan i jo smide et svar og så er der points :)
Avatar billede xysto Nybegynder
18. december 2002 - 22:38 #13
<DIV style='HEIGHT: 350px; OVERFLOW: auto; WIDTH: 500; scrollbar-face-color: ;scrollbar-shadow-color: ;scrollbar-highlight-color: ;scrollbar-3dlight-color: ;scrollbar-darkshadow-color: ;scrollbar-track-color: ;scrollbar-arrow-color: ; '>

Sætter du ikke højden her som standard til 350? Hvis du bare skriver:
Avatar billede xysto Nybegynder
18. december 2002 - 22:39 #14
<DIV style='WIDTH: 500; scrollbar-face-color: ;scrollbar-shadow-color: ;scrollbar-highlight-color: ;scrollbar-3dlight-color: ;scrollbar-darkshadow-color: ;scrollbar-track-color: ;scrollbar-arrow-color: ; '>
Så skulle det vel virke

Sorry men kom til at trykke udfør for tidligt..
Avatar billede Slettet bruger
19. december 2002 - 07:35 #15
jo men den <div ...> er jo selve popup vinduerne der skal have denne egenskab. Og popup vinduerne fejler intet.

Problemet er selve oversigten. Jeg kan ikke finde et sted hvor jeg kan tilføje en linje med en bund til tabelén, sådan at den får en linje i bunden.

Hvis i ligger mærke til det, kan i se at der både for popupvinduet og for selve oversigten er en slags "head" del. Altså en del hvor man kan tilføje html uden at den bliver gengivet, men kan jeg ikke selve lave nogle linjer sådan at jeg også får en slags bund hvor det ikke bliver gengivet for hver eneste nyhed ?
Avatar billede Slettet bruger
19. december 2002 - 09:47 #16
Okay .. jeg fandt selv ud af det :)
For at få den sidste linje ind skulle koden se sådan ud:

<?
include("Nyheder/indstillinger2.inc");
include("Nyheder/mysql_kk.inc");
?>

   
<?
$maaned=array('','januar','februar','marts','april','maj','juni','juli',
'august','september','oktober','november','december');

if(!$nyhed){
if(!$aa)$aa=0;
$resul = mysql_query("SELECT * FROM nyheder");
$antal = mysql_num_rows($resul);

if($antal>$vis){
linje(1);


}

echo "
<br>
<table ALIGN='center' cellpadding='0' cellspacing='0' width='300'>
                <tr>
                    <td class='oversigtoverskrift' WIDTH='100'>
                    Nyheds arkiv
                </td>
                <td class='oversigttom' WIDTH='50'> &nbsp; </td>
                <td class='oversigttom' WIDTH='150'> &nbsp; </td>
                    </tr></table> ";

$resultat = mysql_query("SELECT *,UNIX_TIMESTAMP(tid) AS time FROM nyheder ORDER BY tid DESC LIMIT $aa,$vis");
while($row = mysql_fetch_array($resultat)) {
$id=$row["id"];
$tid=$row["time"];
$overskrift=$row["overskrift"];
$nyhed=$row["nyhed"];
$date=date("j",$tid).'. '.$maaned[date("n",$tid)].' '.date("Y",$tid); 
$forfatter = "<A HREF='mailto:Madsstampe@tdcadsl.dk'>Mads Stampe</A>";

linje(1);

echo "
    <table ALIGN='center' cellpadding='0' cellspacing='0' width='300'><tr>
           
                <td class='oversigttitle' style='padding: 4px;' WIDTH='130'>
<a href=\"#\" OnClick=\"window.open('http://cypermann.homeip.net/madsstampe/oversigt.php?nyhed=$id','lol','menu=no,width=520,height=400');\"> $overskrift </a> 
</td>
<td WIDTH='50'> &nbsp; </td>
<td class='oversigtdato' WIDTH='120' style='padding-top: 4px; padding-left: 4px; padding-right: 4px;'>
$date
</td>
</tr>
</table>       
";

}
echo " <table align='center' cellpadding='0' cellspacing='0' width='300'> <tr> <td style='border-top: 1px solid #000000;'> &nbsp; </td></tr></table> ";
unset($nyhed);
}
if(isset($nyhed)) {

echo " <html>
<head>
<title>Mads Stampe - Nyhedsarkivet</title>
<link rel='stylesheet' type='text/css' href='http://cypermann.homeip.net/madsstampe/stylesheet.css'>
</head>

<body>
";

$resultat = mysql_query("SELECT *,UNIX_TIMESTAMP(tid) AS time FROM nyheder WHERE id='$nyhed'");
$row = mysql_fetch_array($resultat);
$tid=$row["time"];
$overskrift=$row["overskrift"];
$nyhed=$row["nyhed"];
$date=date("j",$tid).'. '.$maaned[date("n",$tid)].' '; 
$forfatter = "<A HREF='mailto:Madsstampe@tdcadsl.dk'>Mads Stampe</A>";


echo "

<tr><td COLSPAN='3'>

<table ALIGN='center'>
<tr>
<td>
<center>
<DIV style='HEIGHT: 350px; OVERFLOW: auto; WIDTH: 500; scrollbar-face-color: ;scrollbar-shadow-color: ;scrollbar-highlight-color: ;scrollbar-3dlight-color: ;scrollbar-darkshadow-color: ;scrollbar-track-color: ;scrollbar-arrow-color: ; '>

<TABLE align='center' border='0' cellPadding='0' cellSpacing='0' width=480>
<TR>    <TD class='oversigtoverskrift' WIDTH='30%'>

$overskrift
                </td>
                <td class='oversigtpopuptom' WIDTH='70%'> &nbsp; </td>
                </tr>

<tr>
                <td class='newsindhold' COLSPAN='2' style='padding: 2px;'>
                    <BR> $nyhed<br><br>
                   
                </td>    
                </tr>
                <tr>
                <td VALIGN='bottom' class='newsbund' COLSPAN='2' style='padding: 2px;'>    Skrevet d. $date - $forfatter </td></tr>



</TD>
</TR>
</TABLE>
</DIV>
</center>
    </td>
</tr>
</table>

</body>
</html>

";

}

linje(2);


function linje($rr){


if($rr==1)echo "
    ";
}
?>

Og dette er faktisk hvad jeg skulle bruge :)
Jeg har jo fået en ide eller to til løsningen og derfor burde det være rimeligt hvis xysto og rzj får nogle points :)
Så smid et svar, ellers lukker og slukker jeg og beholder de points.
Avatar billede xysto Nybegynder
19. december 2002 - 11:15 #17
ok, kan stadig ikke lige se fejlen, men hvis du har fået det til at virke er det jo ganske fint
Avatar billede Slettet bruger
19. december 2002 - 15:33 #18
Well der var egentlig ikke nogen fejl. Mit problem var at jeg ikke kunne få en linje ind som bund i min tabel der viser oversigten over nyheder. Da man i koden jo blot skal skrive hvordan de forskellige rækker skal se ud. Men jeg kunne så gå ind lige efter og indsætte:

echo " <table align='center' cellpadding='0' cellspacing='0' width='300'> <tr> <td style='border-top: 1px solid #000000;'> &nbsp; </td></tr></table> ";

Det blev brugt sidst i oversigts filen, men ikke i selve popup vinduerne :)
For havde jeg haft sådan at det blev brugt i popup vinduet ville det jo stå efter </html> osv .. og derved ville jeg få en fejl på siderne.

Jeg venter lige til rzj har angivet et svar så får i begge points :)
Avatar billede Slettet bruger
13. januar 2003 - 15:32 #19
Ikke noget svar, fra dem der egentlig var med til at løse problemet. Så jeg lukker og slukker.
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