Gå til innhold

To databasefunksjoner vil ikke fungere sammen


Anbefalte innlegg

Skrevet

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!

Videoannonse
Annonse
Skrevet

Har ikke tid til å lese hele koden din, kutt den ned til det essensielle så skal jeg se på saken.. Hvordan kaller du på funksjonene? Igjennom et template script eller bruker du bare echo function_name($foo);

Skrevet

Hei

 

Det er det essensielle, det er to funksjoner:

"visenkel" og "visartikler".

 

Funksjone blir kalt ved at brukeren limer inn denne koden på sin webside:

<?php
include "news.php";
visenkel("12");
?>

Skrevet

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...

Skrevet

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

Skrevet (endret)

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
Skrevet

Mye mulig, men jeg forstår måten jeg har gjort det på og tør påstå at det er forståelig for andre. Når det i tillegg fungerer, ser jeg ikke problemet.

 

Begynne på nytt skal jeg i hvert fall ikke gjøre :p

Skrevet
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.

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...