Automatisch PHP Datei erstellen

Hey Leute erstmal euch allen Frohe Weihnachten :slight_smile: :ps:

Aber jetzt zu meiner Frage bzw zu meinem Problem.

Ich habe folgendes vor:
Ein User registriert sich.
Trägt Texte ein die in der DB gespeichert werden.
Beim klick auf z.B. „Erzeugen“ soll dann das alles was in seiner DB Zeile steht in eine .php Datei geschrieben werden.

Eine leere .php Datei zu erstellen ist ja kein Problem, aber wie schaff ich es, dass in dieser neu angelegten .php Datei die Daten aus einer Zeile der DB reingeschrieben werden?

Ich hoffe ihr habt grob verstanden was ich meine, sonst erläutere ich es nocheinmal genauer :wink:

Mfg

Hi,

so in der art…

<?php $dertextderindieneuedateisoll = ""; $datei=fopen("datein.php", "a"); fputs($datei,$dertextderindieneuedateisoll); fclose($datei); ?>

lg flo
//edit: wenn des auch noch aus der datenbank kommen soll dann so ca…
statt XXX muss die tabelle rein
statt YYY muss das suchkriterium rein
statt ZZZ muss der spaltenname angegeben werden
und user und passwort muss angegeben werden

<?php
$server = "localhost";
$user = "";
$passwort = "";
mysql_connect($server, $user, $passwort);
mysql_select_db('$user');


$sql = "SELECT * FROM XXX WHERE id='YYY' LIMIT 0,1";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);


$inhalt = $row['ZZZ'];


$datei=fopen("datein.php", "a");
fputs($datei,$inhalt);  
fclose($datei);

Egal wie ich es drehe und egal was ich auslesen will, immer folgendes Problem dabei: (bei dem MySQL weg)

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in

[code]<?php
[…]

$sql = “SELECT * FROM test WHERE ID=‘1’ LIMIT 0,1”;
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);

$inhalt = $row[‘text’];

$datei=fopen(“datein.php”, “a”);
fputs($datei,$inhalt);
fclose($datei);[/code]

EDIT: Die Datei wird auch trotzdem erstellt, nur ist Sie natürlich leer.

Hi poste doch eine PHP datei einfach mal (wie du sie angepasst hast; ohne passwort) und am besten ein Screenshot von der Datenbank struktur.

lg flo

Update.

das meinte ich mit datenbank verbindung davor herstellen :wink: naja egal musst unten nur user und passwort ausfüllen…
und poste bitte was ausgegeben wird

[code]

<?php $server = "localhost"; $user = ""; $passwort = ""; mysql_connect($server, $user, $passwort); mysql_select_db('$user'); .... $sql = "SELECT * FROM test WHERE ID='1' LIMIT 0,1"; $result = mysql_query($sql); $row = mysql_fetch_assoc($result); echo mysql_error(); ... ?>[/code]
[...]


$sql = "SELECT * FROM test WHERE ID='1' LIMIT 0,1";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
echo mysql_error();


$inhalt = $row['text'];


$datei=fopen("datein.php", "a");
fputs($datei,$inhalt); 
fclose($datei);

Das verwirrt mich :open_mouth:

update

Hatte ich ja, deswegen verwirrts mich halt

<?php
$server = "localhost";
$user = "*********";
$passwort = "*******";
mysql_connect($server, $user, $passwort);
mysql_select_db('$user');

$sql = "SELECT * FROM test WHERE ID='1' LIMIT 0,1";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
echo mysql_error();

$datei=fopen("datein.php", "a");
fputs($datei,$inhalt); 
fclose($datei);

Hast du denn eine Datenbank, die den Namen $user trägt? Vermutlich nein.

Kennst du wenigstens die absoluten Grundlagen von PHP? Vermutlich ebenfalls nein.
php.net/manual/en/language.types.string.php

Auf diesem Kenntnisstand sowas umzusetzen, halte ich für höchst gefährlich und leichtsinnig. Es wird vermutlich nicht lange dauern, bis dir einer der Nutzer ausführbaren PHP-Code unterjubelt, und damit Dateien/Datenbankeinträge löscht o.ä.

$user = “beispieluser”;
mysql_select_db(’$user’);

Wieso klappt das denn so nicht oO
Wie auch immer, der Error geht, die Datei bleibt leer.

Hast du denn eine Datenbank, die den Namen $user trägt? Vermutlich nein.
[/quote]
Bei bplaced is doch username und datenbank immer gleich

[quote=“chrisb”]
Kennst du wenigstens die absoluten Grundlagen von PHP? Vermutlich ebenfalls nein.
php.net/manual/en/language.types.string.php

Auf diesem Kenntnisstand sowas umzusetzen, halte ich für höchst gefährlich und leichtsinnig. Es wird vermutlich nicht lange dauern, bis dir einer der Nutzer ausführbaren PHP-Code unterjubelt, und damit Dateien/Datenbankeinträge löscht o.ä.[/quote]
Ok … also ich finde schon das ich die Grundlagen kann und auch bissal mehr :wink: der schlampige Code wurde von mir aber nur als Ansatz geschrieben …

lg flo

/edit das klappt eigentlich schon so nur ich hab nicht genau aufgepasst die ’ vor und hinter $user müssen weg

//edit2: Was kommt eigentlich wenn du den Code aufrufst ? Wird irgenwas ausgegeben oder nicht

Oh stimmt die " ’ "
Meine Strafe fürs einfache Copy & paste :smiley:

Naja wie gesagt der Fehler das die Datei leer ist, bleibt trotzdem ^^
Fehlermeldung ist allerdings weg. Halt ein normales schlichtes weisses bild.

Was passiert jetz wenn du folgendes verwendest?
ggf. datei davor löschen (also die erstellt wird)

natürlich user und passwort ausfüllen sonst musste ich mir das mal per teamviewer anschaun :wink: oder genauere beschreibung :wink:

[code]<?php
$server = “localhost”;
$user = “”;
$passwort = “”;
mysql_connect($server, $user, $passwort);
mysql_select_db($user);

$sql = “SELECT * FROM test WHERE id=‘1’ LIMIT 0,1”;
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);

echo “



”;

$inhalt = $row[‘text’];
echo $inhalt;

$datei=fopen(“datein.php”, “a”);
fputs($datei,$inhalt);
fclose($datei);
?>[/code]

Ich danke dir rechtsherzlichst für die schnelle und nette Hilfe. Dann hab ich ja mein Grundgerüst dafür und kann das jetzt ausreifen und erweitern.

:slight_smile:

Hi also klappts?
Ok schönen Tag noch … Klar hab dir gerne geholfen freut mich eig immer wenns dann auch klappt

lg flo

Ja klappt soweit prima, nur sollte der dabei entstehende Datei Name naürlich immer nur einzigartig sein, daher dacht ich mir wäre es am sinnvollsten (was es wohl scheinbar doch nicht ist^^) als Dateinamen einfach immer eine Session Variabel zu nehmen. Also z.B.

$filename = $_SESSION["sess_nickname"];
$datei=fopen("$filename", "a");

So fehlt der Datei natürlich die richtige Endung. In dem Fall soll es HTML sein.
Also hab ich einfach

$filename = $_SESSION["demo_nickname"].html;

genommen, nur leider verschwindet bei der Sache dann der “.”. Als Ergebniss also bleibt jetzt eine Datei mit den namen “Vankhon”.

Wie bekomme ich den “.” dazwischen? :smiley:

[quote=“vankhon”]Also hab ich einfach

$filename = $_SESSION["demo_nickname"].html;
genommen, nur leider verschwindet bei der Sache dann der “.”.[/quote]
Der “verschwindet” nicht, sondern landet als Operator, den er an dieser Stelle nun mal darstellt, nicht im Ergebnis des Ausdrucks.

Außerdem hast du vermutlich keine Konstante namens html definiert.

Lerne bitte Grundlagen.


ungetestet - und auch nur weil Weihnachten ist vorgekaut.

ungetestet - und auch nur weil Weihnachten ist vorgekaut.

Hi,

ich würde die als datei namen die datenbank id nehmen … hat den vorteil das diese einzigartig sein sollte :wink:

also $dateiname = $row[‘ID’];

lg flo