Gå til innhold

To databasefunksjoner vil ikke fungere sammen


Anbefalte innlegg

Hei

 

Sitter å jobber med CMS-systemet mitt nå og fant ut at noe krasjer litt hardt her, men uten helt å vite hvorfor:

 

Jeg har en fil, news.php, den leser innholdet fra databasen og formaterer det etc. Dette gjør den i to funksjoner. En for visning av flere artikler, typisk på en forsside. Samt en for visning av enkeltartikler, typisk "om oss".

 

Hvis jeg prøver å kalle begge disse funksjonene så vil ikke den som blir kalt sist fungere. Gudene vet hvorfor.

 

Klikk for å se/fjerne innholdet nedenfor
function visenkel($id2) {
 $result2 = mysql_query("SELECT * FROM ventus_nyhet WHERE id='$id2'") or die(mysql_error());  
 $row3 = mysql_fetch_array( $result2 );
 echo "<h1>" . $row3['tittel'] . "</h1>";
 echo "<div class='brodtekst'>" . $row3['nyhet'] . "</div>";
}

function visartikler($kategori, $limit, $highpri) {

$id = $_GET['id'];

if (isset($_GET['limit'])) {$limit = $_GET['limit'];} // Hvis bruker har bedt om å se alle artikler skal $limit leses fra adresselinje
if ($limit == 0) {$limit = 1000;} // Hvis $limit er lik 0 skal søket begrenses til 1000, altså alle.
// Vis enkel-nyhet
if (isset($_GET['id'])) {
 $result = mysql_query("SELECT * FROM ventus_nyhet WHERE id='$id'") or die(mysql_error());  
 $row = mysql_fetch_array( $result );
 echo "<div class='imgs'><img src='artbilder/" . $row['sbilde'] . "'></div>";
 echo "<h2>" . $row['tittel'] . "</h2>";
 echo "<div class='credits'>" . $row['forfatter'] . ", " . $row[dato] . "</div><br />";
 echo "<div class='ingress'>" . $row['ingress'] . "</div><br />";
 echo "<div class='brodtekst'>" . $row['nyhet'] . "</div><a href='#' onClick='history.back()'>Tilbake</a>";
 include "kommentar.php";
} else {

// Vis Hovedside

if ($kategori == 0){
$result = mysql_query("SELECT * FROM ventus_nyhet ORDER BY dato DESC LIMIT $limit") or die(mysql_error());  
} else {
$result = mysql_query("SELECT * FROM ventus_nyhet WHERE kategori='$kategori' ORDER BY dato DESC LIMIT $limit") or die(mysql_error());  
}

// Vis nyeste artikkel
if ($highpri == Y) {
$row = mysql_fetch_array( $result );
echo "<div class='imgs'><img src='artbilder/" . $row['sbilde'] . "'></div>";
echo "<tr><td><h2>" . $row['tittel'] . "</h2>";
echo "<div class='credits'>" . $row['forfatter'] . ", " . $row[dato] . "</div><br />";
echo "<div class='ingress'>" . $row['ingress'] . "</div><br><a href='?id=" . $row['id'] . "'>Les mer...</a>";
}

// Vis mange artikler

 while($row2 = mysql_fetch_array( $result )) {
 echo "<div class='newsoverskrift'>" . $row2['tittel'] . "</div>";
 echo "<div class='newsinfo'>" . $row2['nyhet'] . "</div>";
 echo "<div class='newsunderinfo'>" . $row2['dato'] . "</div>";
 }
echo "<a href='?limit=1000'><div class='flere'>flere >></div></a>";
}
}

 

På forhånd takk!

Lenke til kommentar
Videoannonse
Annonse

Hvis du går på vis kildekode så er det bare kildekoden til den første funksjonen som vises? Da må det vel være noe feil der du kaller funksjonene og ikke i selve funksjonene.

 

Ellers hadde det vel vært nærliggende å tro at det var noe feil med html-formateringen...

Lenke til kommentar

Jeg fant det ut!

 

I koden så det slik ut nå:

 

include "news.php";

visenkel("195");

include "news.php";

visartikler("10","5","Y")

 

Fasiten var, uten at jeg aner hvorfor:

 

include "news.php";

visenkel("195");

visartikler("10","5","Y")

 

Så cased closed, thanx and good night! :D

Lenke til kommentar

Her var det jaggu misbruk av poenget med funksjoner.

Jeg foreslår at du begynner det hele på nytt, og tar for deg ordentlig Objekt Orientert Programmering.

Del det hele opp i klasser, sett felles variabler i klassen slik at de kan tas til gjenbruk.

 

Det er heller ikke meningen å skrive ut ren HTML i drøss vha funksjoner.

En funksjon skal gjøre en handling ut fra argumentene du setter, ikke formatere tekst og tabeller.

Endret av MsFoster
Lenke til kommentar
Fasiten var, uten at jeg aner hvorfor:

8518437[/snapback]

 

Du skal kun bruke include/require en gang, som du fant. Hvis fila test.php inneholder

1
2
3

og du bruker include "test.php" i index.php (som ser slik ut)

start her
include "test.php";
slutt her

så blir det det samme som om index.php hadde sett slik ut

start her
1
2
3
slutt her

 

Hvis du da bruker include flere ganger så vil funksjonen bli satt inn flere ganger og resulterer i feil.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...