Avatar billede chaoz Nybegynder
20. juni 2003 - 22:04 Der er 43 kommentarer og
1 løsning

Include kommando i mysql

Jeg har stillet dette spørgsmål før men uden held

jeg har en side med 1 design, hvor den så loader forskellig tekster fra mysql alt efter hvad link der bliver trykket på. nu har jeg så fået en gæstebog... og skal include den.. og da det hele bliver hentet fra databasen skriver jeg i tabellen<?php include ("gbog/gbog.php");?>
men det virker ikke... hvorfor??
Avatar billede ahv Nybegynder
20. juni 2003 - 22:07 #1
I din tabel skal du kun skrive ->
include("gbog/gbog.php");

Også skal du lave en eval ->
eval($row['feltitabellen']);
Avatar billede chaoz Nybegynder
20. juni 2003 - 22:08 #2
ja men hvor skal den eval være!?
Avatar billede chaoz Nybegynder
20. juni 2003 - 22:12 #3
ok hvordan finder jeg ud af hvad feltet i tabellen hedder?! i min tabel har jeg 2 kolonner den ene hedder site og den anden hedder indhold.
Avatar billede jakoba Nybegynder
20. juni 2003 - 22:13 #4
php kode hentet fra mysql skal evalueres for at blive udført.
Jeg vi anbefale at du gemmer koden seperat fra det der blot er tekst, for ellers bliver du nødt til at finde det med regular expressions eller lignende.

altså:
1) skriv det der står foran <?php include ("gbog/gbog.php");?>
2) udfør php kommandoen    eval( "include (\"gbog/gbog.php\");" );
3) skriv den tekst der står efter <?php include ("gbog/gbog.php");?>

mvh JakobA

en anden (og måske nemmere) metode ville være at skrive hele den nuværende streng ud i en tekstfil (der fx hedder temp.php) derefter inkluderer du den tekstfil. På den måde vil php kode i strengen blive udført.
Avatar billede ahv Nybegynder
20. juni 2003 - 22:15 #5
Eksempel ->

$query = mysql_query("SELECT indhold FROM tabel");
$row = mysql_fetch_array($query);
eval($row['indhold']);

Men hvorfor ikke blot have denne include i din fil?
Avatar billede chaoz Nybegynder
20. juni 2003 - 22:18 #6
fordi der kun er 1 fil... index.php der er så en $_GET fra adresselinien der hiver ud fra sql efter hvad side det er!, men hvordan laver man det i "virkeligheden" altså.. har man 100 filer med tekst til hver side eller er det sådan som jeg har gjort man gør!?
Avatar billede jakoba Nybegynder
20. juni 2003 - 22:26 #7
som ostes bliver større tekstmængder gemt i filer, og det der så gemmes i databasen er adressen på de filer.
Avatar billede jakoba Nybegynder
20. juni 2003 - 22:26 #8
Ups.  ostes  -> oftest
Avatar billede ahv Nybegynder
20. juni 2003 - 22:26 #9
Eksempel ->

$query = mysql_query("SELECT indhold FROM tabel WHERE side='$_GET[side]'");
$row = mysql_fetch_array($query);
eval($row['indhold']);

Er det ikke dette du efterlyser?
Avatar billede jakoba Nybegynder
20. juni 2003 - 22:30 #10
ahv >> såvid jeg læser hans spm så er 'indhold' en lang tekststreng hvor der et eller andet sted står lidt php kode i php klammer.

$row['indhold'] == "en masse tekst med lidt <?php include( \"enfil.php\" ); ?> et ukendt sted indeni teksten"

mvh JakobA
Avatar billede ahv Nybegynder
20. juni 2003 - 22:31 #11
Jeg læser det som tabellen kun indeholder denne include, og den er så forksellige alt efter hvilken side man skriver i URL'en?
Avatar billede chaoz Nybegynder
21. juni 2003 - 08:10 #12
ok den indeholder kun php kommandoen. men det burde da ikke lave nogen forskel!?
Avatar billede jakoba Nybegynder
21. juni 2003 - 14:39 #13
set du udfører med eval skal være php kode. der må ikke være noget af det der bare er tekst.
Så jo det gør en forskel.
Avatar billede ahv Nybegynder
21. juni 2003 - 16:17 #14
Det der skal stå i din tabel er blot ->
include("gbog/gbog.php");
Avatar billede chaoz Nybegynder
23. juni 2003 - 09:53 #15
ahv det er jo det der står i min tabel men den viser intet
Avatar billede chaoz Nybegynder
25. juni 2003 - 12:19 #16
ingen der har lyst til at kørre denne tråd færtig?
Avatar billede ahv Nybegynder
25. juni 2003 - 12:24 #17
Hvordan ser dit udtræk fra databasen ud nu?
Avatar billede chaoz Nybegynder
25. juni 2003 - 12:26 #18
<?php include("gbog/gbog.php"); ?>
Avatar billede schaefner Juniormester
25. juni 2003 - 12:27 #19
Hvorfor ikke bare gøre sådan:

I din tabel har du:
site og indhold. I feltet indhold indsætter du dette "gbog/gbog.php"

og så trækker du udfra databasen sådan cirkus sådan:

<?php
$query = mysql_query("SELECT * FROM tabel WHERE site ='$_GET[site]'");
$row = mysql_fetch_assoc($query);

echo $row['site'].'<br>';
include($row['indhold']);
?>
Avatar billede schaefner Juniormester
25. juni 2003 - 12:28 #20
Men jeg forstår ikke hvorfor du overhovedet vil have mysql blandet ind i det her.
Avatar billede ahv Nybegynder
25. juni 2003 - 12:29 #21
chaoz -> Ikke hvad der står i tabellen, men hvordan ser dit script ud der laver databaseudtrækket?
Avatar billede chaoz Nybegynder
25. juni 2003 - 12:31 #22
ok jeg har tideligere spurgt hvordan man skulle lave en hjemmesides opbygning men har ikke fået noget svar. mit udtræk ser således ud:
$side ="$_GET[site]";
connect();
    $result = mysql_query("select indhold from Chaozclub where site='$side'");
    $udskriv = mysql_fetch_array($result);
        extract($udskriv);
        echo $indhold;
    mysql_close();
Avatar billede chaoz Nybegynder
25. juni 2003 - 12:32 #23
det er sådanset lavet for at det skal kører lidt automatisk, men jeg ved da ikke om det er den rigtige måde
Avatar billede ahv Nybegynder
25. juni 2003 - 12:32 #24
$side ="$_GET[site]";
connect();
    $result = mysql_query("select indhold from Chaozclub where site='$side'");
    $udskriv = mysql_fetch_array($result);
        eval($row['indhold']);
    mysql_close();
Avatar billede chaoz Nybegynder
25. juni 2003 - 12:36 #25
nu er der da ingenting der virker
Avatar billede schaefner Juniormester
25. juni 2003 - 12:37 #26
I feltet indhold indsætter du dette "gbog/gbog.php" (uden ")

og så prøv dette:

<?php
$side = $_GET['site'];
connect();
$query = mysql_query("SELECT * FROM tabel WHERE site ='$side'");
$row = mysql_fetch_assoc($query);

include($row['indhold']);
mysql_close();
?>
Avatar billede ahv Nybegynder
25. juni 2003 - 12:38 #27
$side ="$_GET[site]";
connect();
    $result = mysql_query("select indhold from Chaozclub where site='$side'");
    $udskriv = mysql_fetch_array($result);
        eval($udskriv['indhold']);
    mysql_close();

feltet indhold skal så kun indeholde ->
include("gbog/gbog.php");
Avatar billede schaefner Juniormester
25. juni 2003 - 12:39 #28
selvfølgelig skal min query se således ud:
$query = mysql_query("SELECT indhold FROM Chaozclub WHERE site = '$side'");
Avatar billede chaoz Nybegynder
25. juni 2003 - 12:39 #29
hvad så med de sider der kun har tekst ?
Avatar billede schaefner Juniormester
25. juni 2003 - 12:42 #30
chaoz >> Har du prøvet mit?
Avatar billede chaoz Nybegynder
25. juni 2003 - 12:42 #31
der er fejl i linie 42 og det er eval($udskriv['indhold']);
hvis i kan fortælle mig hvordan i ville bygge et site kan vi komme uden om alt det her
Avatar billede chaoz Nybegynder
25. juni 2003 - 12:45 #32
schaefner> der kommer denne fejl:

Warning: Supplied argument is not a valid MySQL result resource in /var/www/hotels/1go/chaozclub/html/index.php on line 41

Warning: Failed opening '' for inclusion (include_path='.:/usr/share/pear') in /var/www/hotels/1go/chaozclub/html/index.php on line 43
Avatar billede ahv Nybegynder
25. juni 2003 - 12:48 #33
Hvordan vi ville bygge det? Det kommer vist lidt an på situationen ;o)
Hvorfor har du ikke blot en side der hedder gbog.php hvor du så includer på? Istedet for at have det i databasen også skal til at lave et databaseudtræk mv.
Avatar billede chaoz Nybegynder
25. juni 2003 - 12:51 #34
ja men hvad så med de andre sider, der kun er tekst. jeg har faktisk kun 1 side nemlig index.php ellers sker alting helt automatisk, det er da smart. bare ikke når man skal includere
Avatar billede ahv Nybegynder
25. juni 2003 - 13:03 #35
Et eller andet gør du hvertfald forkert, jeg har lige testet her.
Tabelstruktur & data ->

CREATE TABLE `site` (
  `side` varchar(100) NOT NULL default '',
  `indhold` text NOT NULL
) TYPE=MyISAM;

#
# Data dump for tabellen `site`
#

INSERT INTO `site` VALUES ('exp', 'include("gall.php");');


Script ->

<?php
mysql_connect("host", "user", "pass");
mysql_select_db("db");
$result = mysql_query("select indhold from site where side='exp'");
$udskriv = mysql_fetch_array($result);
eval($udskriv['indhold']);
?>

Den includere fint gall.php
Avatar billede chaoz Nybegynder
25. juni 2003 - 13:13 #36
det kan jo ikke passe det gør. min skriver bare include("gbog/gbog"); i vinduet. og hvis jeg sætter <?php  ?> på skriver den overhovedet ingenting
Avatar billede ahv Nybegynder
25. juni 2003 - 13:20 #37
chaoz -> Det er vel ikke nødvendigt at jeg skal til at uploade det for at overbevise dig om at det virker? Hvad skulle jeg få ud af at sige det virker, hvis ikke det gør?
Avatar billede chaoz Nybegynder
25. juni 2003 - 13:25 #38
jamen jeg gør jo det samme i koderne som dig. jeg tror da også på hvad du siger men det er underligt jeg ikke kan få det til at virke når det er samme kode
Avatar billede ahv Nybegynder
25. juni 2003 - 13:26 #39
Ok, 2 sek så sætter jeg det op, så der ikke er nogen tvivl ;o)
Avatar billede chaoz Nybegynder
25. juni 2003 - 13:26 #40
Avatar billede chaoz Nybegynder
25. juni 2003 - 13:27 #41
lige nu står der <?php include("/gbog/gbog.php"); ?> i tabellen
Avatar billede ahv Nybegynder
25. juni 2003 - 13:28 #42
Der skal kun stå ->
include("/gbog/gbog.php");
Avatar billede ahv Nybegynder
25. juni 2003 - 13:31 #43
http://www.ahv.starthotel.dk/test.php

Den includere gall.php via databasen, koderne er det samme som dem jeg postede -> 13:03:35
Avatar billede chaoz Nybegynder
28. juni 2003 - 12:51 #44
ja men det ser ikke ud som om mit problem bliver løst men i har arbejdet hårdt så jeg giver points
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