Antworten auf deine Fragen:
Neues Thema erstellen

PHP Gästebuch

bibifellow

Nicht mehr ganz neu hier

Ich habe ein Gästebuch nach einem tutorial nachgeschrieben. Die Datei Gaestebuch.php funktioniert zeigt die Daten an.
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>

<body>
<?php

define ( 'MYSQL_HOST', 'localhost' );
  define ( 'MYSQL_BENUTZER', 'root' );
  define ( 'MYSQL_KENNWORT', '' );
  define ( 'MYSQL_DATENBANK', 'homepageanwendungen' ); 
$db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
  if ( ! $db_link )
  {
  // hier sollte dann später dem Programmierer eine<br />
  // E-Mail mit dem Problem zukommen gelassen werden<br />
  // die Fehlermeldung für den Programmierer sollte<br />
  // das Problem ausgeben mit: mysql_error()<br />
  die('keine Verbindung zur Zeit möglich - später probieren ');
  } 
$db_sel = mysql_select_db( MYSQL_DATENBANK )
    or die("Auswahl der Datenbank fehlgeschlagen");
// SQL-Befehl für den Zugriff
  $sql = "
  SELECT
  *
  FROM gaestebuch
  ORDER BY datum
  ";
// ausführen des mysql-Befehls
  $db_erg = mysql_query( $sql );
  if ( ! $db_erg )
  {
  die('Ungültige Abfrage: ' . mysql_error());
  }
// Anzeige der Anzahl der Einträge
  $anzahl_eintraege = mysql_num_rows($db_erg);
  echo "<p>Anzahl der Gästebuch-Einträge: $anzahl_eintraege </p>";
while ($daten = mysql_fetch_array( $db_erg, MYSQL_ASSOC))  { 
     //Ausgabe der Daten
	 echo "<pre>";
	 print_r ($daten);
	 echo "</pre>";
  }
  echo $daten['name'];
  while ($daten = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
    // Aushabe der Daten
    echo "ID: ";
    echo $daten['id'];
    echo "<br />";

    echo "Name: ";
    echo $daten['name'];
    echo "<br />";

    echo "E-Mail: ";
    echo $daten['email'];
    echo "<br />";

    echo "URL: ";
    echo $daten['url'];
    echo "<br />";

    echo "Datum: ";
    echo $daten['datum'];
    echo "<br />";

    echo "Gästebucheintrag: ";
    echo $daten['eintrag'];
    echo "<br />";
}
mysql_free_result( $db_erg );
  ?>
</body>
</html>
Dann habe ich das Formular erstellt und da habe ich das Problem das ich nicht weiß wo ich den Code von php packen soll. So wie ich es positioniert habe bekomme ich folgenden Fehlermeldung
SQL:
Ungültige Abfrage: Query was empty

gaestebuch-Eintrag.php
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>

</head>

<body>
<?PHP
if ( $_POST['eintrag'] != "" )
{
    echo "<h2>Eintrag speichern</h2>";
    // hier kommt nun der entsprechende PHP-Code
	$sql = " INSERT INTO gaestebuch ";
$sql .= " SET ";
$sql .= " name   ='". $_POST['name'] ."', ";
$sql .= " email  ='". $_POST['email'] ."', ";
$sql .= " url    ='". $_POST['url'] ."', ";
$sql .= " datum  ='". date("Y-m-d H:i:s") ."', ";
$sql .= " eintrag='". $_POST['eintrag'] ."' ";
    exit;
}
?>
<?PHP
echo "<hr />SQL: $sql<hr />";
define ( 'MYSQL_HOST', 'localhost' );
define ( 'MYSQL_BENUTZER', 'root' );
define ( 'MYSQL_KENNWORT', '' );
define ( 'MYSQL_DATENBANK', 'homepageanwendungen' );

$db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
if ( ! $db_link )
{
  // hier sollte dann später dem Programmierer eine
  // E-Mail mit dem Problem zukommen gelassen werden
  // die Fehlermeldung für den Programmierer sollte
  // das Problem ausgeben mit: mysql_error()
  die('keine Verbindung zur Zeit möglich - später probieren ');
}

$db_sel = mysql_select_db( MYSQL_DATENBANK )
        or die("Auswahl der Datenbank fehlgeschlagen");
		// ausführen des mysql-Befehls
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysql_error());
}
    
echo '<p><a href="gaestebuch.php">Gästebuch anzeigen</a></p>';
exit;
?>
<form name="" action="<?php echo $_SERVER['PHP_SELF']; ?>" 
 method="POST" enctype="text/html">
<p>Ihr Name:<br />
<input type="text" name="name" value="" size="50" maxlength="150" />
</p>

<p>Ihre E-Mail-Adresse:<br />
<input type="text" name="email" value="" size="50" maxlength="150" />
</p>

<p>Ihre Homepage:<br />
<input type="text" name="url" value="" size="50" maxlength="150" />
</p>

<p>Gästebucheintrag:<br />
<textarea name="eintrag" rows="10" cols="50"></textarea>
</p>

<input type="Submit" name="" value="speichern" />
</form>

</body>
</html>

Vielleicht liegt es an der Reihenfolge.
Ein Tipp wäre gut.
 

MegaAdi

Freak

AW: PHP Gästebuch

welches Tutorial haste denn durchgearbeitet?
Weil das ganze sieht mir nicht wirklich nach validem PHP aus.
Poste mal den Link zum Tutorial.
Gruß Adi
 

bibifellow

Nicht mehr ganz neu hier

AW: PHP Gästebuch

Ich habe jetzt geändert
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>

</head>

<body>

<form name="" action="<?php echo $_SERVER['PHP_SELF']; ?>"
method="POST" enctype="text/html">
<p>Ihr Name:<br />
<input type="text" name="name" value="" size="50" maxlength="150" />
</p>

<p>Ihre E-Mail-Adresse:<br />
<input type="text" name="email" value="" size="50" maxlength="150" />
</p>

<p>Ihre Homepage:<br />
<input type="text" name="url" value="" size="50" maxlength="150" />
</p>

<p>Gästebucheintrag:<br />
<textarea name="eintrag" rows="10" cols="50"></textarea>
</p>

<input type="Submit" name="" value="speichern" />
</form>
<?PHP
if ( $_POST['eintrag'] != "" )
{
echo "<h2>Eintrag speichern</h2>";
// hier kommt nun der entsprechende PHP-Code
// ausführen des mysql-Befehls
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysql_error());
}
$sql = " INSERT INTO gaestebuch ";
$sql .= " SET ";
$sql .= " name ='". $_POST['name'] ."', ";
$sql .= " email ='". $_POST['email'] ."', ";
$sql .= " url ='". $_POST['url'] ."', ";
$sql .= " datum ='". date("Y-m-d H:i:s") ."', ";
$sql .= " eintrag='". $_POST['eintrag'] ."' ";
exit;
echo "<hr />SQL: $sql<hr />";
}

echo "<hr />SQL: $sql<hr />";
define ( 'MYSQL_HOST', 'localhost' );
define ( 'MYSQL_BENUTZER', 'root' );
define ( 'MYSQL_KENNWORT', '' );
define ( 'MYSQL_DATENBANK', 'homepageanwendungen' );

$db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
if ( ! $db_link )
{
// hier sollte dann später dem Programmierer eine
// E-Mail mit dem Problem zukommen gelassen werden
// die Fehlermeldung für den Programmierer sollte
// das Problem ausgeben mit: mysql_error()
die('keine Verbindung zur Zeit möglich - später probieren ');
}

$db_sel = mysql_select_db( MYSQL_DATENBANK )
or die("Auswahl der Datenbank fehlgeschlagen");
// ausführen des mysql-Befehls


echo '<p><a href="gaestebuch.php">Gästebuch anzeigen</a></p>';
exit;
?>
</body>
</html>

Er sendet die Daten doch sie kommen in der Datenbank nicht an und werden im Gästebuch nicht angezeigt aber die Seite funktioniert richtig.
Da muss doch noch ein Fehler sein das keine Inhalte in der Datenbank landen.

Das Tutorial ist Beispiel G
 
Zuletzt bearbeitet:

netbandit

Aktives Mitglied

AW: PHP Gästebuch

Ok, auf der Seite ist es wirklich etwas schwammig erklärt. Also schau Dir doch einfach mal Deinen ersten Code etwas genauer an. Reihenfolge beachten! Ich übernehme einfach mal Deine Kommentare:


  1. Verbindung zur Datenbank erstellt
  2. Datenbank ausgewählt
  3. SQL-Befehl für den Zugriff
  4. ausführen des mysql-Befehls
Funktioniert :)

Jetzt im letzen Code hast Du folgende Reihenfolge:

  1. ausführen des mysql-Befehls
  2. SQL-Befehl für den Zugriff
  3. Verbindung zur Datenbank erstellt
  4. Datenbank ausgewählt
Funktioniert nicht - lass Dir was einfallen :D
 

bibifellow

Nicht mehr ganz neu hier

AW: PHP Gästebuch

Ich habe jetzt den Teil eins genommen die echo Befehle herausgenommen und die fehlenden Teile hinzugefügt. Leider bekomme ich einen Eintrag in die Datenbank aber keine Inhalte. Habe schon so viel probiert weiß mich keinen Rat



HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>

<body>
<?php

define ( 'MYSQL_HOST', 'localhost' );
  define ( 'MYSQL_BENUTZER', 'root' );
  define ( 'MYSQL_KENNWORT', '' );
  define ( 'MYSQL_DATENBANK', 'homepageanwendungen' ); 
$db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
  if ( ! $db_link )
  {
  // hier sollte dann später dem Programmierer eine<br />
  // E-Mail mit dem Problem zukommen gelassen werden<br />
  // die Fehlermeldung für den Programmierer sollte<br />
  // das Problem ausgeben mit: mysql_error()<br />
  die('keine Verbindung zur Zeit möglich - später probieren ');
  } 
$db_sel = mysql_select_db( MYSQL_DATENBANK )
    or die("Auswahl der Datenbank fehlgeschlagen");
// SQL-Befehl für den Zugriff
  
  if ( $_POST['eintrag'] != "" )
{
    echo "<h2>Eintrag speichern</h2>";
echo '<p><a href="gaestebuch.php">Gästebuch anzeigen</a></p>';
exit;
   

}
$sql = " INSERT INTO gaestebuch ";
$sql .= " SET ";
$sql .= " name   ='". $_POST['name'] ."', ";
$sql .= " email  ='". $_POST['email'] ."', ";
$sql .= " url    ='". $_POST['url'] ."', ";
$sql .= " datum  ='". date("Y-m-d H:i:s") ."', ";
$sql .= " eintrag='". $_POST['eintrag'] ."' ";
echo "<hr />SQL: $sql<hr />";

// ausführen des mysql-Befehls
  $db_erg = mysql_query( $sql );
  if ( ! $db_erg )
  {
  die('Ungültige Abfrage: ' . mysql_error());
  }

     
  


?>
<form name="" action="<?php echo $_SERVER['PHP_SELF']; ?>" 
 method="POST" enctype="text/html">
<p>Ihr Name:<br />
<input type="text" name="name" value="" size="50" maxlength="150" />
</p>

<p>Ihre E-Mail-Adresse:<br />
<input type="text" name="email" value="" size="50" maxlength="150" />
</p>

<p>Ihre Homepage:<br />
<input type="text" name="url" value="" size="50" maxlength="150" />
</p>

<p>Gästebucheintrag:<br />
<textarea name="eintrag" rows="10" cols="50"></textarea>
</p>

<input type="Submit" name="" value="speichern" />
</form>
<a href="gaestebuch.php">Gästebuch anzeigen</a>

</body>
</html>

Die Fehlermeldung lautet
Notice: Undefined index: name in /Applications/xampp/xamppfiles/htdocs/Gastbuchhp/Tutorial/gaestebuch-eintrag2.php on line 31

Notice: Undefined index: email in /Applications/xampp/xamppfiles/htdocs/Gastbuchhp/Tutorial/gaestebuch-eintrag2.php on line 32

Notice: Undefined index: url in /Applications/xampp/xamppfiles/htdocs/Gastbuchhp/Tutorial/gaestebuch-eintrag2.php on line 33

Notice: Undefined index: eintrag in /Applications/xampp/xamppfiles/htdocs/Gastbuchhp/Tutorial/gaestebuch-eintrag2.php on line 35

Wenn ich statt set value einsetze
$sql = " INSERT INTO gaestebuch ";
$sql .= " VALUE ";
$sql .= " name ='". $_POST['name'] ."', ";
$sql .= " email ='". $_POST['email'] ."', ";
$sql .= " url ='". $_POST['url'] ."', ";
$sql .= " datum ='". date("Y-m-d H:i:s") ."', ";
$sql .= " eintrag='". $_POST['eintrag'] ."' ";
echo "<hr />SQL: $sql<hr />";

kommt zusätzlich noch

SQL: INSERT INTO gaestebuch VALUE name ='', email ='', url ='', datum ='2011-03-04 11:41:11', eintrag=''
Ungültige Abfrage: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'name ='', email ='', url ='', datum ='2011-03-04 11:41:11', eintrag='' at line 1

also ich weiß mir im Augenblick wirklich keinen Rat.
 
Zuletzt bearbeitet:

bibifellow

Nicht mehr ganz neu hier

AW: PHP Gästebuch

Bin total verzweifelt das es nicht klappt habe es noch einmal überarbeitet aber es kommt nichts in der Datenbank an.



HTML]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
error_reporting(E_ALL);

define ( 'MYSQL_HOST', 'localhost' );
define ( 'MYSQL_BENUTZER', 'root' );
define ( 'MYSQL_KENNWORT', '' );
define ( 'MYSQL_DATENBANK', 'homepageanwendungen' );
$db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
if ( ! $db_link )
{
// hier sollte dann später dem Programmierer eine<br />
// E-Mail mit dem Problem zukommen gelassen werden<br />
// die Fehlermeldung für den Programmierer sollte<br />
// das Problem ausgeben mit: mysql_error()<br />
die('keine Verbindung zur Zeit möglich - später probieren ');
}
$db_sel = mysql_select_db( MYSQL_DATENBANK )
or die("Auswahl der Datenbank fehlgeschlagen");
// SQL-Befehl für den Zugriff
if ( isset($_POST["speichern"] ))
{
$name = isset($_POST['name']) ? $_POST['name'] : "Leer";
$email = isset($_POST['email']) ? $_POST['email'] : "Leer";
$url = isset($_POST['url']) ? $_POST['url'] : "Leer";
$datum = date("Y-m-d H:i:s");
$eintrag = isset($_POST['eintrag']) ? $_POST['eintrag'] : "Leer";

$qryInsert = "INSERT INTO gaestebuch (name, url, email, datum, eintrag) VALUES ('%s','%s', '%s', '%s', '%s')" ;

$qryInsert = sprintf($qryInsert, $name, $url, $email, $datum, $eintrag);

echo "Querystring: " . $qryInsert;

$db_erg = mysql_query( $qryInsert);
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysql_error());
}
else
{
echo "Eintrag gespeichert";
}
}



?>
<form name="" action="<?php echo $_SERVER['PHP_SELF']; ?>"
method="POST" enctype="text/html">
<p>Ihr Name:<br />
<input type="text" name="name" value="" size="50" maxlength="150" />
</p>

<p>Ihre E-Mail-Adresse:<br />
<input type="text" name="email" value="" size="50" maxlength="150" />
</p>

<p>Ihre Homepage:<br />
<input type="text" name="url" value="" size="50" maxlength="150" />
</p>

<p>Gästebucheintrag:<br />
<textarea name="eintrag" rows="10" cols="50"></textarea>
</p>

<input type="Submit" name="speichern" value="speichern" /></form>
<a href="gaestebuch.php">Gästebuch anzeigen</a>

</body>
</html>
[/HTML]
 

MegaAdi

Freak

AW: PHP Gästebuch

Probiers mal mit:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>

<body>
<?php

define ( 'MYSQL_HOST', 'localhost' );
  define ( 'MYSQL_BENUTZER', 'root' );
  define ( 'MYSQL_KENNWORT', '' );
  define ( 'MYSQL_DATENBANK', 'homepageanwendungen' ); 
$db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
  if ( ! $db_link )
  {
  // hier sollte dann später dem Programmierer eine<br />
  // E-Mail mit dem Problem zukommen gelassen werden<br />
  // die Fehlermeldung für den Programmierer sollte<br />
  // das Problem ausgeben mit: mysql_error()<br />
  die('keine Verbindung zur Zeit möglich - später probieren ');
  } 
$db_sel = mysql_select_db( MYSQL_DATENBANK )
    or die("Auswahl der Datenbank fehlgeschlagen");
// SQL-Befehl für den Zugriff
  
  if ( isset($_POST['eintrag']) && $_POST['eintrag'] != "" )
{
    echo "<h2>Eintrag speichern</h2>";
echo '<p><a href="gaestebuch.php">Gästebuch anzeigen</a></p>';
exit;

$sql = " INSERT INTO gaestebuch (name, email, url, datum, eintrag) ";
$sql .= " VALUES ";
$sql .= "('" . $_POST['name'] ."', ";
$sql .= "'" .$_POST['email'] ."', ";
$sql .= "'" . $_POST['url'] ."', ";
$sql .= "'" . date("Y-m-d H:i:s") ."', ";
$sql .= "'" . $_POST['eintrag'] ."') ";
echo "<hr />SQL: $sql<hr />";

// ausführen des mysql-Befehls
  $db_erg = mysql_query( $sql );
  if ( ! $db_erg )
  {
  die('Ungültige Abfrage: ' . mysql_error());
  }
   

}

     
  


?>
<form name="" action="<?php echo $_SERVER['PHP_SELF']; ?>" 
 method="POST" enctype="text/html">
<p>Ihr Name:<br />
<input type="text" name="name" value="" size="50" maxlength="150" />
</p>

<p>Ihre E-Mail-Adresse:<br />
<input type="text" name="email" value="" size="50" maxlength="150" />
</p>

<p>Ihre Homepage:<br />
<input type="text" name="url" value="" size="50" maxlength="150" />
</p>

<p>Gästebucheintrag:<br />
<textarea name="eintrag" rows="10" cols="50"></textarea>
</p>

<input type="Submit" name="" value="speichern" />
</form>
<a href="gaestebuch.php">Gästebuch anzeigen</a>

</body>
</html>

Zur erklährung: Wenn du Values nutzt musst du INSERT INTO [tabelenname] (spalte1, spalte2, spalte3,...) VALUES ('text1','test2','test3',...) verwenden.
Des weiteren die SQL-Abfrage nur ausführen wenn $_POST['eintrag'] nicht leer ist kommt es in die IF-Abfrage mit rein. Deshalb machen wir oben noch mit isset(...) eine Abfrage ob eintrag überhaupt gesetzt wurde. Wenn nicht wird der rest ignorriert. Wenn eintrag gesetzt wurde (sprich abgeschickt) wird geprüft ob eintrag Ungleich NULL ist. Wenn NULL dann ignorrieren, wenn nicht NULL dann weiter mit SQL Erzeugen und Eintragen.
Ich hoffe das hilft.

Gruß Adrian
 
Zuletzt bearbeitet:

bibifellow

Nicht mehr ganz neu hier

AW: PHP Gästebuch

mit der Zeile klappt es

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="application/x-www-form-urlencoded">

ch habe jetzt noch die Absicherung. Also das der Gästebucheintrag erst erfolgen nach nach Freischaltung.
Ich habe also in die gaestebuch.php folgendes eingefügt
CODE: ALLES AUSWÄHLEN
$sql = "
SELECT
*
FROM gaestebuch
WHERE aktiviert='1'
ORDER BY datum
";


und eine gaestebuch-freischalten.php erstellt

CODE: ALLES AUSWÄHLEN
$sql = "
SELECT
*
FROM gaestebuch
WHERE aktiviert='1'
ORDER BY datum
";


und in die gaestebuch-eintrag folgende Zeile eingetragen
CODE: ALLES AUSWÄHLEN
http://www.php-kurs.com/gaestebuch-freischalten.php?id=$id
habe die dann abgeändert in
CODE: ALLES AUSWÄHLEN
<?php <a href="gaestebuch-freischalten.php? id=$id ?>


und bekomme dann die Fehlermeldung
Parse error: syntax error, unexpected '=' in /Applications/xampp/xamppfiles/htdocs/Gastbuchhp/Tutorial/gaestebuch-eintrag4.php on line 77


Nächste Frage ist wie kann ich den Gästebucheintrag dann freischalten. Ist etwas kompliziert erklärt auf der Seite.
 
Zuletzt bearbeitet:

taffrot

Hat immer langweile...

AW: PHP Gästebuch

Was mir noch nicht ganz klar ist: was soll denn die gaestebuch-freischalten.php machen?

Ich vermute sie soll 'aktiviert' auf 1 setzen?! Dann brauchst du dazu aber ein INSERT und kein SELECT

Zeile 77 ist bestimmt die hier:
PHP:
<?php <a href="gaestebuch-freischalten.php? id=$id ?>

Da fehlt ein echo und das <a> tag ist nicht geschlossen:

Lieber so:
PHP:
<?php
echo "<a href=\"gaestebuch-freischalten.php?id=".$id."\">LINK</a>";
?>

Oder, wenns sein muss so:
PHP:
<?php
echo '<a href="gaestebuch-freischalten.php?id=$id">LINK</a>';
?>
 
Zuletzt bearbeitet:

bibifellow

Nicht mehr ganz neu hier

AW: PHP Gästebuch

Die freischalten.php soll eine Mail senden nach der ich den Gästebucheintrag freischalten kann
Habe die Zeile geändert aber als Fehlermeldung

Notice: Undefined variable: id in /Applications/xampp/xamppfiles/htdocs/Gastbuchhp/Tutorial/gaestebuch-eintrag4.php on line 94

Ich habe dann in der gaestebuch-eintragen.php noch
$id = isset($_POST['id']) ? $_POST['id'] : "Leer";

eingetragen aber die Fehlermeldung bleibt
 

taffrot

Hat immer langweile...

AW: PHP Gästebuch

Da du die URL auslesen willst, brauchst du GET, also:

PHP:
$id = isset($_GET['id']) ? $_GET['id'] : "Leer";
 

bibifellow

Nicht mehr ganz neu hier

AW: PHP Gästebuch

Super so funktioniert. Mein Kopf ist im Augenblick blockiert. Wie mache ich es am Besten damit ich den Gästebucheintrag freischalten kann also mit einer Mail wie es im Tutorial steht

""In dieser E-Mail gibt es neben dem Text, den der Besucher eingetragen hat, dann noch einen Link für uns zum freischalten: Dort steht dann

http://www.php-kurs.com/gaestebuch-freischalten.php?id=$id
Dieser Link muss natürlich auf die URL Ihrer Website angepasst werden. Weiterhin sollte auch der Dateinamen variiert werden, sonst kann jeder, den Link kennt, den Eintrag theoretisch freischalten.""

So wie ich das verstehe soll ich doch dann eine Mail bekommen in der ich den Eintrag freischalte. So wie ich es jetzt habe wird der Link auf der Seite des Gästebucheintrags gemacht. Also müsste der Link in einer Mail versandt und so kann ich den Freischalten.
 

MegaAdi

Freak

AW: PHP Gästebuch

also du kannst dir eine Email zukommen lassen mit einem Freischaltungslink.
Das musst du dir aber selbst basteln und dazu musst du auch noch eine Spalte in deiner SQL-Tabelle mehr machen (aktiv 0 oder 1) 0 = deaktiviert, 1 = aktiv.
Die Datei nennste dann gb_admin.php oder so... dort deklarierst du requests: id und activate. durch ID kommst du an den jeweiligen Eintrag ran und durch activate schaltest ihn an oder aus.
 

taffrot

Hat immer langweile...

AW: PHP Gästebuch

Den Dateinamen variieren? Wenn du kein Login bauen willst kannst du htaccess verwenden.
Evtl. könntest du ja auch einfach noch ein paremeter übergeben, auf den du dann prüfst, wie z.b.

http://www.php-kurs.com/gaestebuch-freischalten.php?id=$id&seed=$seed
PHP:
//wobei der seed so generiert werden kann(!)
$seed =  md5(time());

//Dann musst du nurnoch auf dessen extistenz prüfen
if(isset($_GET['seed']))

Ich würd das aber einfach mit .htaccess lösen
 

bibifellow

Nicht mehr ganz neu hier

AW: PHP Gästebuch

Meinst Du so etwas wie die freischalten.php
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>

<body>
<?php

$sql = " UPDATE gaestebuch ";
$sql .= " SET aktiviert='1' ";
$sql .= " WHERE id='". $_GET['id'] ."' ";

echo "<hr />SQL: $sql<hr />";

define ( 'MYSQL_HOST', 'localhost' );
define ( 'MYSQL_BENUTZER', 'root' );
define ( 'MYSQL_KENNWORT', '' );
define ( 'MYSQL_DATENBANK', 'homepageanwendungen' );

$db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
if ( ! $db_link )
{
    
$empfaenger = "xxxxx@gmx.de"; //Mailadresse
$betreff    = "Gästebucheintrag";
$mailtext   = "Inhalt einer Mail zum Test von PHP";
$antwortan  = "xxxxx@gmx.de";

mail( $empfaenger,
      $betreff,
      $mailtext,
      "From: $absender\nReply-To: $antwortan");

echo "Mail wurde gesendet!";

    die('keine Verbindung zur Zeit möglich - später probieren ');
}

$db_sel = mysql_select_db( MYSQL_DATENBANK )
    or die("Auswahl der Datenbank fehlgeschlagen");

// ausführen des mysql-Befehls
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
    die('Ungültige Abfrage: ' . mysql_error());
}

echo "<h2>Eintrag ". $_GET['id'] ." freigeschaltet</h2>";
echo '<p><a href="gaestebuch.php">Gästebuch anzeigen</a></p>';
?>
</body>
</html>

Ich habe die Zeile dahin so geändert in der gaestebuch.php
PHP:
echo '<a href="gaestebuch-freischalten.php?id=$id"></a>';


Verschickt er die Email auch mit localhost? Der Eintrag wird trotzdem sofort freigeschaltet Also nicht erst nach dem freischalten.
 
Zuletzt bearbeitet:

MegaAdi

Freak

AW: PHP Gästebuch

du brauchst noch ne Spalte in deiner Tabelle namens active und Standart= 0.
in deiner gaestebuch-freischalten.php machst du dann ein Update query dass wenn freischalten.php mit ?id=[id] also isset($_REQUEST['id']) active von 0 auf 1 gesetzt wird.

in deiner gaestebuch.php musst du noch ändern, dass nur Beiträge angezeigt werden wo active=1 also WHERE 'active' = '1' (im SQL)

Gruß Adrian
 

bibifellow

Nicht mehr ganz neu hier

AW: PHP Gästebuch

ich habe ein Feld in der Datenbank

Feld aktiviert
Typ char
Kollation latin1-swedish
not null

und in der gaestebuch.php
PHP:
$sql = "
    SELECT
        *
    FROM gaestebuch
    WHERE aktiviert='1'
    ORDER BY datum
";

ist das so richtig
 

bibifellow

Nicht mehr ganz neu hier

AW: PHP Gästebuch

Ja so läuft es jetzt kann in der Datenbank die Einträge freischalten. Kann ich die Email auch mit localhost testen oder nur wenn ich es auf nen server geladen habe . Muss mir erst noch einen Account besorgen.
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.635
Beiträge
1.538.449
Mitglieder
67.556
Neuestes Mitglied
Ggirl
Oben