Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
PHP Gästebuch: Daten eintragen funktioniert nicht
- Ersteller raven16
- Erstellt am
- Registriert
- Nov. 2008
- Beiträge
- 580
Jo danke klappt jetzt^^
Aber jetzt bleibt der Eintrag noch im Speicher und jedes mal wenn ich auf aktualisieren gehe, dann trägt der die gleichen Daten erneut in die Datenbank ein....
Siehe hier
und nen anderes Problem ist noch, dass die Seite endlos lang wird, wenn ich die einträge nicht auf die letzten z.b. 10 einschränke oder per seitenzahle die anzahl der einträge pro seite einschränke
PHP:
<?php
//Connect zur Datenbank
define ( 'MYSQL_HOST', 'localhost' );
define ( 'MYSQL_BENUTZER', 'raven16' );
define ( 'MYSQL_KENNWORT', 'sinusSQL' );
define ( 'MYSQL_DATENBANK', 'raven16' );
$db_con = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
if ( ! $db_con )
{
// das Problem ausgeben mit: mysql_error()
die('Verbindung zur Datenbank fehlgeschlagen. Bitte später probieren. ');
}
$db_sel = mysql_select_db( MYSQL_DATENBANK )
or die("Auswahl der Datenbank fehlgeschlagen.");
// SQL-Befehl für den Zugriff
$sql_query = "SELECT * FROM gaestebuch
ORDER BY datum";
?>
<div class="boxtitle">Gästebuch</div>
<div class="boxinhalt">
<table>
<tr>
<td>
<table id="gaestebuchform">
<tr>
<td>
<form method="post" action="index.php"><br>
<input type="text" name="name">
<br><font class="small">Dein Name*</font><br><br>
<input type="email" name="email">
<br><font class="small">Deine Email</font><br><br>
<textarea name="eintrag" class="gaestebuch"></textarea>
<br><font class="small">Deine Grüße*</font><br><br>
<input type="submit" name="valider" value="Eintragen"><br><br>
</form>
<?php
// In die SQL-Datenbank eintragen
if($_POST['valider'] && strlen($_POST['eintrag'])>4)
{
$sql="INSERT INTO gaestebuch (Name, Email, Datum, Text)
VALUES('".mysql_real_escape_string($_POST['name'])."',
'".mysql_real_escape_string($_POST['email'])."',
'".mysql_real_escape_string(date('Y-m-d H:i:s'))."',
'".mysql_real_escape_string($_POST['eintrag'])."')";
$result = mysql_query($sql);
if (!$result)
{
die('SQL Befehl konnte nicht ausgeführt werden. ' . mysql_error());
}
}
?>
</td>
</tr>
</table>
</td>
<td>
<table id="gaestebuchanzeige">
<tr>
<td>
<?php
// ausführen des mysql-Befehls
$db_query = mysql_query( $sql_query );
if ( ! $db_query )
{
die('Ungültige Abfrage: ' . mysql_error());
}
// Anzeige der Anzahl der Einträge
$gb_anzahl = mysql_num_rows($db_query);
echo "<p>Anzahl der Gästebuch-Einträge: $gb_anzahl </p>";
while ($daten = mysql_fetch_array( $db_query, 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 "Datum: ";
echo $daten['Datum'];
echo "<br />";
echo "Gästebucheintrag: ";
echo $daten['Text'];
echo "<br />";
}
mysql_free_result( $db_query );
?>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
Aber jetzt bleibt der Eintrag noch im Speicher und jedes mal wenn ich auf aktualisieren gehe, dann trägt der die gleichen Daten erneut in die Datenbank ein....
Siehe hier
und nen anderes Problem ist noch, dass die Seite endlos lang wird, wenn ich die einträge nicht auf die letzten z.b. 10 einschränke oder per seitenzahle die anzahl der einträge pro seite einschränke
Das ist jetzt kein großes Problem. Um das zu umgehen baust du den Code zum Eintragen in eine extra PHP-Datei rein und verweist das Ziel des Formulars eben auch auf diese Datei. Die Datei gibt dann NACH (also am Dateiende des Scripts!) dem Eintragen in die Datenbank mittelsraven16 schrieb:Aber jetzt bleibt der Eintrag noch im Speicher und jedes mal wenn ich auf aktualisieren gehe, dann trägt der die gleichen Daten erneut in die Datenbank ein....
Siehe hier
PHP:
header("location:index.php");
Für den Problem mit den vielen Einträgen musst du halt eine kleine Seitenverwaltung bauen welche Links auf folgende Seiten anzeigt. Und dann halt hinten in der URL ein "page=2" (bzw. je nach Seite halt "page=3" usw.) als Parameter anhängen. Anhand der Seite kann man dann die Query entsprechend umbauen:
PHP:
$postsPerPage = 10;
if(isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page'] > 0){
$sql_query = 'SELECT * FROM gaestebuch ORDER BY datum LIMIT '.($_GET['page'] * $postsPerPage).','.$postsPerPage;
} else $sql_query = 'SELECT * FROM gaestebuch ORDER BY datum LIMIT '.$postsPerPage ;
- Registriert
- Nov. 2008
- Beiträge
- 580
also muss ich in die neue Datei dies schreiben:
und das dann aus der Datei, wo ich das her habe löschen und in dem action dann den Pfad der neuen Datei eintragen?
PHP:
<?php
// In die SQL-Datenbank eintragen
if($_POST['valider'] && strlen($_POST['eintrag'])>4)
{
$sql="INSERT INTO gaestebuch (Name, Email, Datum, Text)
VALUES('".mysql_real_escape_string($_POST['name'])."',
'".mysql_real_escape_string($_POST['email'])."',
'".mysql_real_escape_string(date('Y-m-d H:i:s'))."',
'".mysql_real_escape_string($_POST['eintrag'])."')";
$result = mysql_query($sql);
if (!$result)
{
die('SQL Befehl konnte nicht ausgeführt werden. ' . mysql_error());
}
}
header("location:index.php");
?>
und das dann aus der Datei, wo ich das her habe löschen und in dem action dann den Pfad der neuen Datei eintragen?
- Registriert
- Nov. 2008
- Beiträge
- 580
Hab das so ausprobiert... aber hab noch in der header - line einen Fehler:
unexpected T_STRING in /include/gaestebuchform_eintragen.inc.php on line 17
das die line wo ich
geschrieben hab...
unexpected T_STRING in /include/gaestebuchform_eintragen.inc.php on line 17
das die line wo ich
PHP:
header("location:index.php");
- Registriert
- Nov. 2008
- Beiträge
- 580
Hab den Fehler gefunden
die index sitzt ein Verzeichnis vorher wie die eintrag-datei
kann nicht mit diesem befehl zu einem vorherigen verzeichnis springen...
damit ich nicht die ganze adresse angeben muss, habe ich die Datei in dem gleichen ordner wie die index.php kopiert...
dann hatte ich die ganze seite voll mit fehlern, aber die konnte ich auch beheben indem ich in der eintrag-datei eine datenbankverbindung erneut aufgebaut hab
die index sitzt ein Verzeichnis vorher wie die eintrag-datei
kann nicht mit diesem befehl zu einem vorherigen verzeichnis springen...
damit ich nicht die ganze adresse angeben muss, habe ich die Datei in dem gleichen ordner wie die index.php kopiert...
dann hatte ich die ganze seite voll mit fehlern, aber die konnte ich auch beheben indem ich in der eintrag-datei eine datenbankverbindung erneut aufgebaut hab
- Registriert
- Nov. 2008
- Beiträge
- 580
BerniG schrieb:Für den Problem mit den vielen Einträgen musst du halt eine kleine Seitenverwaltung bauen welche Links auf folgende Seiten anzeigt. Und dann halt hinten in der URL ein "page=2" (bzw. je nach Seite halt "page=3" usw.) als Parameter anhängen. Anhand der Seite kann man dann die Query entsprechend umbauen:
PHP:$postsPerPage = 10; if(isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page'] > 0){ $sql_query = 'SELECT * FROM gaestebuch ORDER BY datum LIMIT '.($_GET['page'] * $postsPerPage).','.$postsPerPage; } else $sql_query = 'SELECT * FROM gaestebuch ORDER BY datum LIMIT '.$postsPerPage ;
muss ich dafür eine neue Spalte einrichten im gästebuch, die wie hier 'page' heißt oder wie ist das zu verstehen?
Hab das noch nicht ganz verstanden^^
Du musst halt noch Hyperlinks zu den nachfolgenden Seiten erstellen. Also beispielsweise
Das musst du aber natürlich ned statisch reinsetzen sondern abhängig von der aktuellen Seite. Also irgendwie sowas:
Edit: Es gibt übrigens einen Bearbeiten-Button hier im Forum
Code:
<a href="index.php?page=1">Seite 1</a>
PHP:
$postsPerPage = 10;
$result = mysql_query("SELECT Count(*) FROM gaestebuch"); // Anzahl der Einträge
$row = mysql_fetch_row($result);
$pageCount = ($row[0]/$postsPerPage) +1; // Anzahl der Seiten um alle Einträge darzustellen
if(isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page'] > 0 && $_GET['page']<= $pageCount){
$sql_query = 'SELECT * FROM gaestebuch ORDER BY datum LIMIT '.($_GET['page'] * $postsPerPage).','.$postsPerPage;
$links = '<a href="index.php?page='.($_GET['page']-1).'">Vorige Seite</a>';
if($_GET['page'] != $pageCount) $links .= '<a href="index.php?page='.($_GET['page']+1).'">Nächste Seite</a>'; //Link zur nächsten Seite nur hinzufügen wenn nicht auf letzter Seite!
} else {
$sql_query = 'SELECT * FROM gaestebuch ORDER BY datum LIMIT '.$postsPerPage ;
if($pageCount > 1) $links = '<a href="index.php?page='.($_GET['page']+1).'">Nächste Seite</a>';
else $links = ''; //Link zur nächsten Seite nur hinzufügen wenn es tatsächlich mehrere Seiten gibt!
}
echo $links;
Edit: Es gibt übrigens einen Bearbeiten-Button hier im Forum
Zuletzt bearbeitet:
Ähnliche Themen
- Antworten
- 13
- Aufrufe
- 878
- Antworten
- 9
- Aufrufe
- 13.239
- Antworten
- 1
- Aufrufe
- 2.219
- Antworten
- 19
- Aufrufe
- 2.264