Hej Jakob
Jeg må indrømme at jeg ikke har gidet, for der er langt igen inden den
kode ligner noget jeg ville overveje at bruge. Meget af det du mangler
kan du lære ved at læse tilbage i gruppen, og ved at køre et par
tutorials om PHP igennem.
I den situation er vi vist et par stykker der synes at det egentlig ikke
er noget vi behøver hjælpe med - det må folk kunne finde ud af selv
.
Jakob Løndal Hansen wrote:
[snip: du har en side som både skal vise en oversigt over nyheder, og
samtidig skal kunne vise en enkelt nyhed. Data ligger i en mysql-database]
>>du kan jo lave et link på de overskrifter til f.eks.
>>index.php?vis_nyhed=1 (hvor 1 er id'et på den linie i din MySQL database)
>>i din index.php kunne du jo så sige
>><?
>>if ($vis_nyhed) {
det var vist i kortform, for at vise princippet, den gode version er:
if(isset($vis_nyhed)){
/* her bør du begynde med at checke at din variabel har det indhold den
skal ha, og ikke noget en hacker har smidt i for at bryde ind i
databasen. Du er godt hjulpet af at du ved at det er tal, så du kan
bruge settype() */
settype($vis_nyhed,'integer');
> $maaned=array('','januar','februar','marts','april','maj','juni','juli',
> 'august','september','oktober','november','december');
Hvad bruger du det array til? - eller med andre ord: kommentér din kode
løbende undervejs - så er den meget lettere for os at hjælpe med, og en
del lettere for dig at vende tilbage til.
> if(!$nyhed){
/* isset igen. Som alternativ kan bruges !empty hvis man kan risikere at
variablen er sat, men til noget ikke-brugbart, nemlig 0 */
> if(!$aa)$aa=0;
> $resul = mysql_query("SELECT * FROM nyheder");
det er smart at sikre sig at få en fejlmeddelelse hvis ikke det virker.
mysql_query("SELECT * FROM nyheder)or trigger_error(mysql_error());
sørger for at du får en rimelig feedback hvis din query ikke virker.
trigger_error() og mysql_error() kan ud læse mere om i manualen.
> $antal = mysql_num_rows($resul);
Jeg nåede ikke at se at du forbandt til databasen - er det fordi du
sprang det kode over, eller er det fordi du ikke gjorde det?
> $resultat = mysql_query("SELECT *,UNIX_TIMESTAMP(tid) AS time FROM nyheder
> ORDER BY tid DESC LIMIT $aa,$vis");
jeg er ikke helt klar over hvorfor du har to queries, men fred være med
det. Til gengæld er det ikke smart at lave SELECT * medmindre du
vitterlig skal bruge alt. Skriv i stedet de enkelte kolonnenavne ud.
> while($row = mysql_fetch_array($resultat)) {
> $id=$row["id"];
> $tid=$row["time"];
> $overskrift=$row["overskrift"];
/* dem kan du klare samlet med */
extract($row);
/* - som henter alle positioner i $row ud og gør dem til variabler der
hedder det som de er kaldt med - dvs her laver den $id, $time,
$overskrift */
> $nyhed=substr($row["nyhed"],0,170)." ....";
> $date=date("j",$tid).'. '.$maaned[date("n",$tid)].' '.date("Y k\l\.
> H:i",$tid);
fint nok, men en besværlig måde at gøre det på når strftime()-funktionen
findes.
> I filen "vis_nyhed.php" har jeg brugt linket "index.php?vis_nyhed=$" på
> overskrifterne, som skal linke til hele nyheden, før så linket sådan ud:
Hvis bare det er index.php ovenstående kode står i, skulle det jo ikke
være noget problem.
Jeg håber du kan bruge min indsats til noget
mvh
Jesper Brunholm