 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
21.09.2008, 04:49
|
#1
|
|
TP-Supporter
Registriert seit: Jul 2008
Ort: Tübingen
|
PHP in einem HTML-Dokument/richtig speichern
Hallo Leute,
ich habe hier mal ein paar grundsätzliche Fragen zu PHP in HTML.
-Bisher habe ich PHP Dateien in einem externen Dokument gespeichert und z. B. im Formular über "action" auf das entsprechende Dokument verwiesen.
Wie funktioniert das wenn ich für PHP kein seperates Doc. anlegen möchte sondern einfach nach html weiterschreiben möchte???
-Wenn ich einen mit PHP erstellten Counter auf meinen index legen möchte muss dieser dann unter index.php anstatt unter index.html gespeichert werden?
Leider habe ich über dieses Thema nur sehr bescheidene Infos im Netz gefunden. Kann mir jemand ein paar Tips geben um hier an gute Info zu kommen??
__________________
Das Leben ist schön -
Lehren ist die schönste Methode zu lernen.
|
|
|
21.09.2008, 10:23
|
#2
|
|
TP-Veteran
Registriert seit: Nov 2006
Ort: Lübeck
|
Moin.
Zitat:
|
Wenn ich einen mit PHP erstellten Counter auf meinen index legen möchte muss dieser dann unter index.php anstatt unter index.html gespeichert werden?
|
Wenn das PHP in der Datei ausgefuehrt werden soll, muss die Dateiendung php sein (im Normalfall).
Wie ein spezieller Counter installiert wird, steht meistens in der beiliegenden readme.txt (oder aehnlich benannt).
Zitat:
|
Wie funktioniert das wenn ich für PHP kein seperates Doc. anlegen möchte sondern einfach nach html weiterschreiben möchte?
|
PHP-Code:
<?php
// hier der PHPcode
?>
<!-- hier dein html -->
<?php
// hier kann wieder PHP sein
?>
<!-- hier kann wieder html sein -->
Es ist also beliebig mischbar. Das PHP wird nur durch die Tags "<?php ?>" eingeschlossen.
Zitat:
|
Kann mir jemand ein paar Tips geben um hier an gute Info zu kommen?
|
PHP in HTML? Siehe oben. Da gibt es keinen Zauber.
|
|
|
21.09.2008, 11:25
|
#3
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
wobei ich sagen muss das ich diese Mischung überhaupt nicht mag, es ist schwer zu lesen und daher auch schwer zu pflegen.
Die gescheiteste Methode ist das Arbeiten mit HTML-Templates.
|
|
|
21.09.2008, 12:23
|
#4
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Zitat:
|
wobei ich sagen muss das ich diese Mischung überhaupt nicht mag, es ist schwer zu lesen und daher auch schwer zu pflegen.
|
Naja, wenn es um ein einziges Kontaktformular auf einer sonst statischen Seite geht, wäre die Arbeit mit Templates ein wenig zu viel.
In solchen Fällen sitzt bei mir der gesamte PHP Code oben, darunter dann die reine HTML Ausgabe. Das ist noch sauber und übersichtlich genug. 
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
21.09.2008, 13:45
|
#5
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
jein
Es muss ja nicht immer eine Template-Engine sein, auch ganz einfache Methoden sind möglich
html (contactform.tmpl)
HTML-Code:
<h2>###MESSAGE###</h2>
<form action="###ACTION###" method="post">
...
</form>
PHP-Code:
echo strtr(file_get_contents('contactform.tmpl'), array( '###ACTION###' => $action, '###MESSAGE###' => $message, ));
|
|
|
21.09.2008, 20:19
|
#6
|
|
TP-Supporter
Registriert seit: Jul 2008
Ort: Tübingen
|
Das bring mal etwas Licht ins Dunkle.
Dankeschön. Bin aber weiterhin für Vorschläge offen.
__________________
Das Leben ist schön -
Lehren ist die schönste Methode zu lernen.
|
|
|
22.09.2008, 17:54
|
#7
|
|
TP-Veteran
Registriert seit: Mar 2005
Ort: Oyten
|
Bleibt noch anzumerken, dass eine HTML-Datei standardmäßig nicht an den PHP-Interpreter geschickt wird, so dass PHP-Anweisungen normalerweise NICHT innerhalb von HTML-Dokumenten ausgeführt werden! Deshalb gilt normalerweise schon, dass PHP-Dokumente auch die Dateiendung .php haben sollten sollten.
Damit auch HTML-Dokumente an den PHP-Interpreter gesendet und die auf der HTML-Seite enthaltenen PHP-Befehle ausgeführt werden, ist eine Einstellung im Webserver zu ändern. Allerdings werden dann grundsätzlich alle HTML-Dateien durch den PHP-Interpreter gejagt, was bei normalen HTML-Dateien unnötig ist und nur Performance kostet.
Deshalb ist es wesentlich sauberer PHP-Dateien auch als solche zu kennzeichnen, indem man ihnen die Endung .php gibt.
|
|
|
23.09.2008, 06:04
|
#8
|
|
TP-Supporter
Registriert seit: Jul 2008
Ort: Tübingen
|
Ist das hier eine saubere Möglichkeit, oder eher ungeeignet???
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>html_testdokument</title>
</head>
<body>
<div align="center">
<form action="php_testdokument.php" method="post">
Feld1: <input name="feld1" size="60" maxlength="60"><br>
Feld2: <input name="feld2" size="60" maxlength="60"><br>
<input type="submit" value="Absenden">
</form>
</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>php_testdokument</title>
</head><body>
<?php
printf("Feld 1:%s<br>Feld 2:%s",
$_POST["feld1"],
$_POST["feld2"]);
?>
</body>
</html>
__________________
Das Leben ist schön -
Lehren ist die schönste Methode zu lernen.
|
|
|
23.09.2008, 07:55
|
#9
|
|
TP-Veteran
Registriert seit: Mar 2005
Ort: Oyten
|
Das ist sauber, wobei ich es bevorzuge Affenformulare zu benutzen. D.h. die Ausgabe des Formulars und die Prüfung der Eingaben geschieht auf der gleichen Seite, so dass einfacher auf Falscheingaben reagiert werden kann.
Prinzipeller Aufbau:
PHP-Code:
if (isset($_POST['formular_abgeschickt']))
{
//Prüfung der Eingaben und setzen von Fehlerausgaben
...
if ($alles_Ok) { // Speichern der Daten und Weiterleitung zur nächsten Seite }
}
if ($fehler_aufgetreten)
{
// Ausgabe der Fehlermeldungen
}
//Ausgabe des Eingabeformulars
?>
|
|
|
06.10.2008, 02:31
|
#10
|
|
TP-Supporter
Registriert seit: Jul 2008
Ort: Tübingen
|
...ich habe hier nun mal ein Bsp. in dem ich die Ausgabe in meinem Layout direkt über dem Formular haben möchte.
Wenn ich das so mache ist alles Pefekt nur das, das echo über dem Layout ausgegeben wird.
PHP-Code:
<?php
error_reporting(E_ALL);
$db_host = "localhost";
$db_user = "";
$db_pass = "";
$db_name = "Datenbank";
if (isset ($_POST['test'] ))
{
// Maskierende Slashes aus POST entfernen
$_POST = get_magic_quotes_gpc() ? array_map( 'stripslashes', $_POST ) : $_POST;
//Inhalte der Textfeldern aus POST holen
$Name = $_POST['Name'];
//Verbindung zu Datenbank
$conID = mysql_connect ( $db_host, $db_user, $db_pass ) or die("Die Datenbank konnte nicht erreicht werden!");
if ($conID)
{
mysql_select_db ( $db_name, $conID );
}
//Inhalte sammeln der an die Dantenbank gesendet werden soll
$sql = "INSERT INTO `Tabelle`
(`Name`)
VALUES(
'" .mysql_real_escape_string ($nome)."'
)";
//Inhalte an Dantenbank senden
mysql_query ( $sql );
//Prüfen ob Datensatz hinzugefügt wurde
if (mysql_affected_rows() == 1)
{
echo "<h1>Die Daten wurden der Datenbank hinzugefügt!</h1>";
}
else
{
echo "<h1>Die Daten konnten der Datenbank nicht hinzugefügt werden!</h1>";
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Das ist ein Test!</title>
<link rel="stylesheet" type="text/css" href="dateiname.css">
</head>
<body>
<div id="container">
<div id="borderwrap">
<div id="header"></div><!--end header-->
<!--beginn topnav-->
<div id="topnav">
<ul id="navigation_top">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<!--end topnav-->
<!--beginn content-->
<div id="content">
<h1></h1>
<h2></h2>
<p></p>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" id="autonomoform" name="autonomoform">
<input type="text" id="Name" name="Name" value="">
<input type="submit" id="test" name="test" value="Testen">
</form>
</div><!--end content-->
<div id="footer"></div><!--end footer-->
</div><!--end borderwrap-->
</div><!--end container-->
</body>
</html>
...wenn ich es nun aber so versuche...
PHP-Code:
<?php
error_reporting(E_ALL);
$db_host = "localhost";
$db_user = "";
$db_pass = "";
$db_name = "Datenbank";
if (isset ($_POST['test'] ))
{
// Maskierende Slashes aus POST entfernen
$_POST = get_magic_quotes_gpc() ? array_map( 'stripslashes', $_POST ) : $_POST;
//Inhalte der Textfeldern aus POST holen
$Name = $_POST['Name'];
//Verbindung zu Datenbank
$conID = mysql_connect ( $db_host, $db_user, $db_pass ) or die("Die Datenbank konnte nicht erreicht werden!");
if ($conID)
{
mysql_select_db ( $db_name, $conID );
}
//Inhalte sammeln der an die Dantenbank gesendet werden soll
$sql = "INSERT INTO `Tabelle`
(`Name`)
VALUES(
'" .mysql_real_escape_string ($nome)."'
)";
//Inhalte an Dantenbank senden
mysql_query ( $sql );
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Das ist ein Test!</title>
<link rel="stylesheet" type="text/css" href="dateiname.css">
</head>
<body>
<div id="container">
<div id="borderwrap">
<div id="header"></div><!--end header-->
<!--beginn topnav-->
<div id="topnav">
<ul id="navigation_top">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<!--end topnav-->
<!--beginn content-->
<div id="content">
<h1></h1>
<h2></h2>
<p></p>
<?php
//Prüfen ob Datensatz hinzugefügt wurde
if (mysql_affected_rows() == 1)
{
echo "<h1>Die Daten wurden der Datenbank hinzugefügt!</h1>";
}
else
{
echo "<h1>Die Daten konnten der Datenbank nicht hinzugefügt werden!</h1>";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" id="autonomoform" name="autonomoform">
<input type="text" id="Name" name="Name" value="">
<input type="submit" id="test" name="test" value="Testen">
</form>
</div><!--end content-->
<div id="footer"></div><!--end footer-->
</div><!--end borderwrap-->
</div><!--end container-->
</body>
</html>
...wird diese Fehlermeldung über dem Form ausgegeben.
Warning: mysql_affected_rows() [function.mysql-affected-rows]: A link to the server could not be established in C:\xampp\htdocs\... on line 90.
Wie kann ich das echo richtig in html einbinden?
Leider gibt es über dieses Thema (PHP in HTML) sehr wenig Info im Netz.
__________________
Das Leben ist schön -
Lehren ist die schönste Methode zu lernen.
Geändert von Sascha79 (06.10.2008 um 02:54 Uhr).
|
|
|
06.10.2008, 12:18
|
#11
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
mysql_affected_rows muss direkt nach der Query erfolgen
Wenn du die Meldung woanders platzieren möchtest, packe diese dann anstelle von echo() in eine Variable, z.B.
$statusmeldung = "<h1>Die Daten wurden der Datenbank hinzugefügt!</h1>";
Diese kannst du dann beliebig mit echo $statusmeldung; ausgeben. 
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
07.10.2008, 06:04
|
#12
|
|
TP-Supporter
Registriert seit: Jul 2008
Ort: Tübingen
|
Zitat:
Zitat von Boris
Diese kannst du dann beliebig mit echo $statusmeldung; ausgeben.
|
...dies habe ich so gemacht. Das Ergebniss: Es funktioniert, bis auf eine grosse Kleinigkeit. Es wird "Undefined variable" ausgegeben, der Vorgang wird aber trozdem ausgeführt.
Mein Vorgehen:
-habe im Netz nach Lösungen gesucht, gefunden hab ich das, das Problem mit register_global zusammenhängen könnte.
-habe über phpinfo() festgestellt das register_global = off ist.
-allerdings habe ich auch gelesen das es sehr sinnvoll ist, dieses Problem ohne register_global auf on zu stellen zu lösen.
Was ich nicht verstehe ist das er die Variable im echo ja ausführt, also wieso sagt er mir das ich eine Variable verwenden möchte die nicht vorhanden ist?
__________________
Das Leben ist schön -
Lehren ist die schönste Methode zu lernen.
|
|
|
07.10.2008, 06:39
|
#13
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
Bei Fehlermeldung und Hinweisen die nicht sofort klar sind, ist die Webseite PHP Fehlermeldungen eine gute Anlaufstelle. Dort findest Du auch, was hinter der Meldung Undefined Variable steckt. Informationen zu Register_Globals findest Du in der online Doku oder bei php::bar.
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
|
|
07.10.2008, 08:24
|
#14
|
|
TP-Supporter
Registriert seit: Jul 2008
Ort: Tübingen
|
 ....ich kann´s euch sagen, jetzt wird es Zeit fürs Bett.
Allerdings möchte ich vorher noch meine Lösung zeigen.
PHP-Code:
<?php
if (isset($statusmeldung))
{
echo $statusmeldung;
}
?>
Jetzt wird die Fehlermeldung nichtmehr angezeigt. Wenn jemand noch eine bessere Idee hat, her damit. Bin halt doch noch ein schlapper Anfänger, aber heute Nacht hab ich nochmal nen ganzen Schlag dazugelernt.
Eine letzte Frage hab ich aber noch.
Was meint ihr zu Register_Globals, muss man sich damit wirklich noch befassen. Denn ich habe in php::bar gelessen, ab PHP6 soll diese Option abgeschafft werden.
Könnte man nicht allgemein sagen das es besser ist mit register_global = off zu arbeiten?
__________________
Das Leben ist schön -
Lehren ist die schönste Methode zu lernen.
|
|
|
07.10.2008, 08:26
|
#15
|
|
TP-Veteran
Registriert seit: Nov 2006
Ort: Lübeck
|
Zitat:
|
Könnte man nicht allgemein sagen das es besser ist mit register_global = off zu arbeiten?
|
Das ist die allgemeine Meinung hier und in vielen anderen Foren.
__________________
| | |