Avatar billede jkn83 Praktikant
27. juli 2005 - 18:13 Der er 11 kommentarer og
1 løsning

nøjes med at se 1 nyhed?

Jeg har et nyheds system, jeg har valgt at vise på forsiden, dog kun de 5 nyeste. Derfor valgte jeg at lave et arkiv som bliver vist ude i højre side. Så folk kan vælge at se en ældre nyhed, ok? Det lyder jo enkelt nok... Man skal jo bare trække den gamle nyhed frem ved hjælp af id... aha...

Mit problem ligger i jeg skal trække den ene nyhed frem, og få den vist alene i en iframe.

Når jeg vælger at få vist en enkelt nyhed i iframe, kikser den, og i stedet for at vise mig en nyhed i iframe... viser den mig hele siden forfra, altså, min index hvor iframen er i, bare en gang til, inde i iframen, samt alle nyhederne...

Koden vises her hvor den trækker arkivet frem, og gør det muligt at vælge en enkelt nyhed at få vist i iframe.

        <?php
              include("news/config.php");
              $db = mysql_connect($dbhost,$dbuser,$dbpass);
              mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");
              $query = "SELECT * FROM news ORDER BY id";
              $result = mysql_query($query);
                echo "<ul>\n";
                while ($r = mysql_fetch_array($result)) {
                  echo "<li><a href=\"index.php?id=$r[id]\" target='iframe'>$r[title]</a></li>\n";
                }
                echo "</ul>\n";
?>

Så er der nogen her der lige hurtigt kan fortælle mig hvad der er galt i mit link ? som vil fixe det, forhåbentligt :D
Avatar billede jannek_ek Nybegynder
27. juli 2005 - 18:19 #1
$x = 0;

while ($r = mysql_fetch_array($result) && $x < 1) {
$x++;
echo "<li><a href=\"index.php?id=$r[id]\" target='iframe'>$r[title]</a></li>\n";
}
Avatar billede jesper-madsen Nybegynder
27. juli 2005 - 18:20 #2
Du mangler da også DESC bagved $query = "SELECT * FROM news ORDER BY id";

altså $query = "SELECT * FROM news ORDER BY id DESC";
Avatar billede n-emy Nybegynder
27. juli 2005 - 18:21 #3
$query = "SELECT * FROM news ORDER BY id DESC LIMIT 1";
Avatar billede jannek_ek Nybegynder
27. juli 2005 - 18:23 #4
ahh LIMIT 1 den kendte jeg ikke så er det dine points
Avatar billede jkn83 Praktikant
27. juli 2005 - 18:51 #5
hmm, tjekker lige de forskellige ud :)
Avatar billede jkn83 Praktikant
27. juli 2005 - 19:00 #6
Ved ikke om jeg har forklaret forkert eller jer der misforstod... sikkert nok den første :D

$query = "SELECT * FROM news ORDER BY id DESC LIMIT 1";

gør at 1 nyheds overskrift bliver vist i arkivet... Hvis 1 nyhed bliver vist i et arkiv, kan man vel ikke kalde det et arkiv kan man ?

Problemmet er ikke arkivet, det bliver vist som det skal, og DESC bliver hentet fra en config fil... Det er linket der er noget galt med efter hvad jeg kan se. Når jeg vælger en overskrift i arkivet i højre side, med iframen i midten, vil jeg se den ene nyhed i iframen i stedet for de 5 nyeste.

Altså... Man går ind på siden, ser de 5 nyeste nyheder, i højre side står alle nyhederne (arkivet). Når jeg så vil læse en gammel nyhed klikker jeg på overskriftet i arkivet, den smider der efter hele den side jeg lige har beskrevet... Altså menu, iframe og arkiv ind i iframen, så man ser det hele en gang til, bare i iframen...

Det jeg vil have den til er når man vælger en nyheds overskrift, at den så viser den enkelte nyhed i iframen og ingen andre.
Avatar billede n-emy Nybegynder
27. juli 2005 - 19:52 #7
lav et link der hedder:
"siden.php"?mer=ja&merid=$r[id]

og ovenover det laver du:
if($_GET[mer] == 'ja') {
$query = "SELECT * FROM news WHERE id = '$_GET[id]'";
              $result = mysql_query($query);
} else {
}
Avatar billede jkn83 Praktikant
27. juli 2005 - 20:33 #8
hmm kan sku ikke lige få det til at virke du. den giver mig en ny fejl hvis jeg bruger metoden som du beskrev der.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/cvroms/public_html/test/index.php on line 101

linie 101 ser sådan ud:
while ($r = mysql_fetch_array($result)) {

Så hvad nu ?
Avatar billede n-emy Nybegynder
27. juli 2005 - 20:49 #9
skift din query ud med:
$s_news = mysql_query("SELECT * FROM news ORDER BY id");
WHILE($news = mysql_fetch_array($s_news)) {
print"Dit link";
}
Avatar billede jkn83 Praktikant
27. juli 2005 - 23:30 #10
Stadig det samme...
har sat en test side op som du kan teste den sidste løsning du gav mig... Så kan du måske få en følelse af hvad det er der er i vejen ok ?

http://www.cvroms.com/test/
Avatar billede jkn83 Praktikant
29. juli 2005 - 01:18 #11
ok legede lidt rundt og prøvede lidt forskelligt... det resulterede i at jeg fik den til at vise i iframen... eneste problem er bare at den ikke viser den nyhed jeg vil have den til. Altså, den viser den første nyhed der er skrevet efter som jeg brugte LIMIT 1 i min query...

Så koden på min index side ser nu sådan ud:

        <?php
              include("news/config.php");
              $db = mysql_connect($dbhost,$dbuser,$dbpass);
              mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");
              $query = "SELECT * FROM news ORDER BY id DESC LIMIT 15";
              $result = mysql_query($query);
                echo "<ul>\n";
                while ($r = mysql_fetch_array($result)) {
                    echo "<li><a href=\"oldnews.php?id=$r[id]\" target='iframe'>$r[title]</a></li>\n";
                }
                echo "</ul>\n";
            ?>

Ergo... Den viser de seneste 15 i arkivet, laver link på hver enkelt af dem med target iframe... Siden den linker til har jeg valgt at kalde oldnews.php hvor koden ser sådan ud pt.:

<?php
              include("news/config.php");
              $db = mysql_connect($dbhost,$dbuser,$dbpass);
              mysql_select_db($dbname) or die("Kan ikke oprette forbindelse til databasen.");
              $query = "SELECT * FROM news id LIMIT 1";
              $result = mysql_query($query);
             
                  echo "<table>";
                while ($r = mysql_fetch_array($result)) {
                    echo "
                    <tr><td><span style=\"color: $head_color; font-weight: bold;\">$r[title]</span></td></tr>
                    <tr><td><span style=\"color: $body_color\">$r[news]</span></td></tr>\n";
                if ($news_info == 1) {
                    echo "<tr><td><div style=\"color: $info_color; border-top: 1px dashed $border_color; text-align: right;\">Tilføjet af $r[author] / $r[date]</div></td></tr>\n";
    }
}
?>

Problemmet ligger bare i den ikke viser den nyhed man vælger.... Men den første der er blevet skrevet nogen sinde... Vl have den skal vise den man vælger at se, intet andet... Muligt ? og hvordan ?
Avatar billede jkn83 Praktikant
01. august 2005 - 11:06 #12
hmm
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