Avatar billede goofysite Nybegynder
12. februar 2009 - 17:16 Der er 19 kommentarer og
1 løsning

Include + MySQL

Hej programøre.. (:
Jeg har lavet en hjemmeside med hjemmelavet CMS system, men jeg kan ikke få "  include 'En eller anden fil.PHP';  " Til at virke. Altså sådan at i et "menu-element" jeg includere en fil der, det virker ikke, hvad kan fejlen være? Eller kan man bare ikke det?

Hilsen Martin
Avatar billede goofysite Nybegynder
12. februar 2009 - 17:19 #1
Jeg glemte lige at sige at det er kodet i PHP, men det kan i nok regne ud.. ;)
Avatar billede lexkorbs Nybegynder
12. februar 2009 - 17:24 #2
-Når du includer, skal funktionen være slået til i din PHP konfiguration.
-Du kan kun include filer der er længere fremme end den aktuelle fil. Dvs. du kan ikke include "http://domain.dk/fil.php", og heller ikke "\root\myserver\myfile.php".

Men "fil.php" eller "mappe/fil.php" er den rigtige løsning.

Hvis disse to ikke er tilfældet så prøv at slå 'show errors' til i konfigurationen.

Håber det virker;)
Avatar billede lexkorbs Nybegynder
12. februar 2009 - 17:25 #3
Hvis nu det virker, så har du et svar her :p
Avatar billede goofysite Nybegynder
12. februar 2009 - 17:53 #4
Hvor var det du sagde at jeg skulle skrive det 'show erros'? i php koden?
Avatar billede goofysite Nybegynder
12. februar 2009 - 18:02 #5
Der kommer nemlig ingen tekst frem, eller ingen fejl kode..
Avatar billede Slater Ekspert
12. februar 2009 - 18:10 #6
Må vi se noget kode?
Avatar billede goofysite Nybegynder
12. februar 2009 - 18:19 #7
<?

$query = mysql_query ("SELECT * FROM menu_elementer WHERE placering = '4'") or die(mysql_error());

while ($element = @mysql_fetch_array($query)) {
$overskrift = $element[overskrift];
$tekst = $element[tekst];
$id = $element[id];
?>

<div class="indhold">

<h5><div class="overskrift"><? echo $overskrift; ?></div>
<br>
<? echo $tekst; ?>

<?
if ($_SESSION[admin_vis] == ja){
?>
<br><br>
<a href="rediger.php?action=menu&id=<? echo $id; ?>">Redigér</a>

<?
};
?>

</div>

<?
};
?>

Jeg har så 10 af dem sådan at jeg kan flytte rundt på elementerne vha. '$placering'..
Avatar billede Slater Ekspert
12. februar 2009 - 18:21 #8
Der includer du jo ikke noget?
Avatar billede goofysite Nybegynder
12. februar 2009 - 18:25 #9
Nej nej. Det er i MySQL posten. Altså, jeg har jo nogle data liggende i databasen, og de bliver jo vist her. Jeg kan godt ligge nogle PHP koder ind i mysql posten, så det bliver vist der, men jeg kan ikke bruge koden include....
Avatar billede Slater Ekspert
12. februar 2009 - 18:28 #10
Så vis hvor du bruger koden include. Det lyder jo meget underligt, det hele :)

- Rent bortset fra det, og helt irrelevant for spørgsmålet, så bør du ikke bruge short tags ( <? ) til at starte php, men de lange i stedet ( <?php ) - de korte bliver afskaffet snart, og laver konflikter med XML.
Desuden bør du ikke skrive $element[overskrift]; men $element['overskrift']; - På den måde du gør, tror PHP at overskrift er en konstant, og først efter den finder ud af at ingen konstanter med det navn findes, prøver den at lave det om til tekst. På den måde du gør det, tager koden ca. 10 gange længere at udføre. Det samme med din $_SESSION variabel.
Avatar billede goofysite Nybegynder
13. februar 2009 - 18:25 #11
Jeg skal prøve at formullere det bedre, men jeg kan ikke lige komme ind i databasen lige nu..

-Tak for de tips, jeg vil hurtigt rette dem ;-)
Avatar billede goofysite Nybegynder
13. februar 2009 - 19:07 #12
Her har jeg et billede af det.. :)
http://www.nygaard-netvaerk.wep.dk/grafik/mysql.gif
Avatar billede goofysite Nybegynder
13. februar 2009 - 19:08 #13
Det er den data som bliver indlæst på koden jeg har sendt...
Avatar billede Slater Ekspert
13. februar 2009 - 20:02 #14
Ah, så du forsøger at putte PHP-kode ind fra en database. Så giver det hele lidt mere mening :)

PHP-kode du sætter ind via echo/print bliver ikke udført - for at få udført dynamisk kode, er du nødt til at eval'e det.

Nu bruger du jo feltet til almindelig tekst også, så du vil være nødt til at lave noget lidt specielt. F.eks. kan du gøre noget i stil med:

<?php
$temp = explode(' ', $tekst, 2);
if ($temp[0] == 'PHP')
  eval($temp[1]);
else
  echo $tekst;
?>

.. Så burde du f.eks. kunne skrive: "PHP include('test.php');"
i et databasefelt, og så bliver koden udført. Men alle tekster der IKKE starter med "PHP" vil bare blive sat ind som tekst.
Avatar billede goofysite Nybegynder
13. februar 2009 - 20:55 #15
Altså skal jeg bare sætte den ind der hvor min echo kode var før?
-Og så skriv det som et svar, så jeg kan acceptere det hvis det virker.. ;)
Avatar billede Slater Ekspert
13. februar 2009 - 21:07 #16
Ja præcis. Og så huske at lave teksten i din database om fra
<?php include="test.php"; ?>
til
PHP include("test.php");

.. jeg lægger lige nu mærke til at der også er en fejl, i og med du bruger lighedstegn, når den skal køres som en funktion med parenteser. Husk det :)
Avatar billede goofysite Nybegynder
13. februar 2009 - 21:07 #17
Det virker, TAK..! :D
Avatar billede goofysite Nybegynder
13. februar 2009 - 22:33 #18
Forresten, kan man godt gøre sådan at man både kan bruge den

PHP include("test.php");

+

Noget alm. HTML kode??
Avatar billede Slater Ekspert
13. februar 2009 - 22:52 #19
Det kan du godt, ja.
Det nemmeste, uden at ændre koden, er at bruge echo til det.

F.eks. kan du jo skrive i db'en:
PHP include('test.php'); echo '<p>Her er noget tekst</p>';

- så vil den først inkludere filen, og så udskrive <p>'en bagefter.
Avatar billede goofysite Nybegynder
14. februar 2009 - 07:17 #20
Nååeh, tak.. ;)
Der var det mig der var lidt dum..
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

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