PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gästebuch mit MySql will nicht reloaden


MadMaX209
30.09.2003, 21:55:55
Also
ich hab mal wieder ein Problem.
Ich bin dabei meine ganzen scripts auf Sql umzuschreiben. Nur habe ich bei meinem Gästebuch seit dem das Problem, dass wenn ich auf der "Eintragen-Seite" auf den "EIntragen" Button klicke, Sql den Eintrag zwar aufnimmt, ich aber auf der Gästebuchhauptseite erst auf Aktualisieren klicken muss damit er erscheint.
Das macht doch kein normales Gästebuch?!!!
Entweder das liegt an meinem Browser oder ich leide mal wieder unter extremer Verplantheit.



Max

Jürg
01.10.2003, 01:10:10
Ich gehe davon aus, dass Du ein Gästebuch hast und von da aus gest Du auf die Seite "Eintragen".
Mach das doch nun so:
Im oberen Teil vom Gästebuch hast Du das Eingabeformular, dan folgen die Eintragungen.
Durch drücken von "Senden", kommt auf eine "neue" Seite (ist in derselben Datei), wo Du dich bedankst und die Eintragungen bestätigst. Da drückt man "Gästebuch" und gelangt zurück zum Gästebuch. Dies ist nun neu geladen.
Nebenbei: beim "Senden" würde ich gleich ein Mail an Dich senden. Dann bist Du über die Eintragungen immer informiert und kanst den Blödsinn löschen.
Das Ganze gaht so:
Beachte auch das JaveScript, strip_tags und preg_replace


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php include ("../headinclude-de.txt");
function mysql_die() {echo "Fehler: ";echo mysql_error();exit;}?>
<script type="text/javascript" language="JavaScript"><!--
function start(){ // setzt Curser in erstes Feld
document.forms['Gaesteeintrag'].Nachname.focus();
}
function testeFormular(){ // prueft Adresse
var formular = document.forms['Gaesteeintrag']; // kuerzt Namen zu formular
if (formular.Nachname.value == "" &&
formular.Ort.value == "" &&
formular.Beitrag.value == "" ){
alert("Bitte alle Felder mit * ausfüllen!");
document.forms['Gaesteeintrag'].Nachname.focus();
return false;
}
else{
if(formular.Nachname.value == ""){
alert("Bitte geben Sie Ihren Nachnamen ein!");
formular.Nachname.focus();
return false;
}
if(formular.Ort.value == ""){
alert("Bitte geben Sie Ihren Ort ein!");
formular.Ort.focus();
return false;
}
if(formular.Beitrag.value == ""){
alert("Bitte geben Sie Ihren Beitrag ein!");
formular.Beitrag.focus();
return false;
}
}
return true;
}
// Folgendes Script stammt im Wesentlichen von Ralf Pfeifer (www.arstechnica.de)
function IstZuLang(Feld, AnzZeichen){
var FehlerMeldung = "Fehler beim Ausfüllen des Formulars!nn"
var FeldLaenge = Feld.value.length
var OK = FeldLaenge <= AnzZeichen

if (!OK) {
FehlerMeldung += "Dieses Feld darf max. " + AnzZeichen
FehlerMeldung += " enthalten.nSie haben " + FeldLaenge + " Zeichen eingegeben"
alert(FehlerMeldung)
Feld.focus() }
return OK
}
function eMailAdresseOK(eMail){
if (eMail.value.length==0) { return true }
var FehlerMeldung = new String("Fehler in der eMail-Adressenn")
var PosEt = eMail.value.indexOf("@")
if (PosEt == -1) {
alert(FehlerMeldung + "Es fehlt ein @")
return eMail.focus() }
if (PosEt == 0) {
alert(FehlerMeldung + "Es fehlt der Empfänger")
return eMail.focus() }
if (eMail.value.indexOf("@", PosEt + 1) > PosEt) {
alert(FehlerMeldung + "Es darf nur ein @ enthalten sein")
return eMail.focus() }
var PosPt = eMail.value.indexOf(".", PosEt)
if ((PosPt == -1) || (PosPt - PosEt < 2) || (eMail.value.length - PosPt < 3)) {
FehlerMeldung += "Eine eMail-Adresse muß so aufgebaut sein: x@x.xx "
FehlerMeldung += "Jedes x steht für mindestens ein Zeichen"
alert(FehlerMeldung)
return eMail.focus() }
var ZugelasseneZeichen = new String("abcdefghijklmnopqrstuvwxyz")
ZugelasseneZeichen += ZugelasseneZeichen.toUpperCase() + "0123456789.-_@"
return PruefeZeichen(eMail, ZugelasseneZeichen, FehlerMeldung)
}
function PruefeZeichen(Feld, ZugelasseneZeichen, FehlerMeldung){
for (var Pos = 0; Pos < Feld.value.length; Pos++)
{
if (ZugelasseneZeichen.indexOf(Feld.value.charAt(Pos)) == -1)
{ FehlerMeldung += "nnIhre Eingabe enthält das Zeichen '"
FehlerMeldung += Feld.value.charAt(Pos)
FehlerMeldung += "'. Sie dürfen nur diese Zeichen verwenden:n"
FehlerMeldung += ZugelasseneZeichen
if (ZugelasseneZeichen.indexOf(" ") == -1)
{ FehlerMeldung += "nLeerzeichen sind nicht erlaubt" }
else
{ FehlerMeldung += "nund das Leerzeichen" }
alert(FehlerMeldung)
Feld.focus()
return
}
}
}
//--></script>
</head>
<body onLoad="init(); start()" onResize="positionierung()" onScroll="positionierung()">
<a name="top"></a><div id="Marke"></div>
<?php
include ("open.inc.php4");
if(isset ($submit)){
// Mail zur Ueberpruefung
$loeschlink = "http://www.xy.xy/xy.php";
$empfaenger = "xy@xy.xy";
$text = "Nachname: ".$Nachname."nVorname: ".$Vorname."nOrt: ".$Ort."nEMail: ".$EMail."nBeitrag:n".$Beitrag;
$extra = "MIME-Version: 1.0nContent-Type: text/plain; charset=iso-8859-1nContent-Transfer-Encoding: quoted-printablen";
@mail($empfaenger,"Gästebuch","Folgender Eintrag erfolgte:nn".$text."nnLöschen: ".$loeschlink,$extra."From:xy@xy.xynX-Mailer:PHP/".phpversion());
// Eintraege an db Newsletter
if ($EMail !=""){
$query= "insert into newsletter (Vorname,Nachname,Ort,EMail,Woher)
values('$Vorname','$Nachname','$Ort','$EMail','$woher')";
$result=mysql_query($query, $conn) or mysql_die();
}
// Eintraege an db Gaestebuch
$Beitrag = strip_tags($Beitrag);
$query= "insert into gaestebuch (Vorname,Nachname,Ort,EMail,Beitrag)
values('$Vorname','$Nachname','$Ort','$EMail','$Beitrag')";
$result=mysql_query($query, $conn) or mysql_die();
require("kopfzeil-de.txt");
echo "<p class="e5"><br>Erfolgreich eingef&uuml;gt!<br><br>
<a href='gaestebuch.php'><b>Zur&uuml;ck zu Erfassungsseite</b></a><br>";
}
else{
require("kopfzeil-de.txt");
?>
<noscript>
<p align="center"><font color="#FF0000">Ihr Browser unterst&uuml;tzt leider die Funktionen mit JavaScript nicht!<br>
Wahrscheinlich haben Sie eine alte Browser-Version, oder Sie haben JavaScript deaktiviert.<br>
Dadurch funktioniert das untenstehende Formular m&ouml;glicher weise nicht richtig.</font></p>
</noscript>
<form method="post" action="<?php echo $PHP_SELF; ?>" onsubmit="return testeFormular()" name="Gaesteeintrag">
<table border="0" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
<tr>
<td><p class="kl"><b>Nachname * </b></p></td>
<td><input type="text" name="Nachname" size="40" tabindex="1"></td>
</tr>
<tr>
<td><p class="kl"><b>Vorname</b></p></td>
<td><input type="text" name="Vorname" size="40" tabindex="2"></td>
</tr>
<tr>
<td><p class="kl"><b>Ort * </b></p></td>
<td><input type="text" name="Ort" size="40" tabindex="3"></td>
</tr>
<tr>
<td><p class="kl"><b>E-Mail</b></p></td>
<td>
<input type="text" name="EMail" size="40" OnBlur="eMailAdresseOK(this)" tabindex="4"></td>
</tr>
<tr>
<td valign="top"><p class="kl"><b>Beitrag * </b></p></td>
<td><textarea rows="9" name="Beitrag" cols="60" tabindex="5" wrap="soft"></textarea></td>
</tr>
</table>
<input type="hidden" name="woher" value="Gaestebuch">
<dir>
<input class="norm" type="submit" name="submit" value="Abschicken" tabindex="6">
<input class="norm" type="reset" name="reset" value="Zurücksetzen">
</dir>
</form>
<? // Verbindung mit db fuer Eintraege anzeigen
mysql_select_db("bank",$conn);
$query = "select *, DATE_FORMAT(Datum,'%d.%m.%y') as Datum_f from gaestebuch ORDER BY Datum DESC";
$result = mysql_query($query,$conn);
$num = mysql_numrows($result);
for ($i = 0; $i < $num; $i++){
$row = mysql_fetch_array($result);
echo "
<table border="0" cellpadding="1" cellspacing="1">
<tr>
<td width="60"><b>Name:</b></td>
<td width="300">$row[Vorname] $row[Nachname]</td>
<td width="60"><b>Ort:</b></td>
<td>$row[Ort]</td>
</tr>
<tr>
<td width="60"><b>Mail:</b></td>
<td width="300">";
$str = preg_replace('"([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})"i','<a href="mailto:1">1</a>', $row[EMail]);
print $str;
echo "
</td>
<td width="60"><b>Date:</b></td>
<td>$row[Datum_f]</td>
</tr>
</table>
<p>";
print nl2br($row[Beitrag]);
echo "
</p>
<hr>";
}
}
?>
</body></html>

Ich hoffe es hilft, bin aber überzeugt, das geht noch schöner.
Der Code läuft unter: http://www.tram-museum.ch/php/gaestebuch-D.php4
Viel Spass

MadMaX209
11.10.2003, 14:45:00
Hey, danke!
Bin durch deinen Vorschlag auf ne Lösung gekommen.
DANKE!