- 20.07.2010 16:48 #21
Stimmt auch wieder, klappt aber nun.
Nun möchte ich aber, dass in zwei Feldern (name & text) was stehen muss, ansonsten soll eine Fehlermeldung kommen.
Nur wie?
if ($_POST['absenden']){ if(empty($_POST['name']) || empty($_POST['text'])){die("Bitte Name und / oder Nachricht eingeben.")}}
Damit klappt es nicht.
- 20.07.2010 19:18 #22Erfahrener Benutzer Meilensteine


- Registriert seit
- 28.06.2008
- Ort
- Kuhkaff in Niedersachsen
- Beiträge
- 246
- Blog-Einträge
- 1
- Renommee-Modifikator
- 0
- 20.07.2010 22:44 #23
Ich krieg die Krise, das klappt nicht.
Der von dir gepostete Codeschnipsel ist nun verbaut, aber wenn nix eingetragen wird, wird die Meldung angezeigt (Namen und Text eingeben) und der Eintrag dennoch in die DB geschrieben. Schei*e!
Code:if($_POST['absenden']) { $eintragen = mysql_query("INSERT INTO guestbook (name, text, hp, email, ip, timestamp) VALUES ('$name', '$text', '$hp', '$email', '$ip', '$timestamp')"); if (empty($_POST['name']) OR empty($_POST['text'])) die("<div style=\"margin-left:30px;\"><span class=\"gen2\">Bitte Namen und Text eingeben :-)</span></div>"); echo "<div style=\"margin-left:30px;\"><span class=\"gen2\"><img src=\"img/info.png\"> Eintrag erfolgreich. Vielen Dank.</span></div>"; }
- 21.07.2010 00:26 #24Erfahrener Benutzer Meilensteine


- Registriert seit
- 28.06.2008
- Ort
- Kuhkaff in Niedersachsen
- Beiträge
- 246
- Blog-Einträge
- 1
- Renommee-Modifikator
- 0
Du hast els fasch eingebaut ^^
Du musst es so machen:
Bei deinem Code wird ja schon in die DB geschrieben, bevor das Skript mit die abgebrochen wird.Code:if($_POST['absenden']) { if (empty($_POST['name']) OR empty($_POST['text'])) die("<div style=\"margin-left:30px;\"><span class=\"gen2\">Bitte Namen und Text eingeben :-)</span></div>"); $eintragen = mysql_query("INSERT INTO guestbook (name, text, hp, email, ip, timestamp) VALUES ('$name', '$text', '$hp', '$email', '$ip', '$timestamp')"); }
- 21.07.2010 00:53 #25
Soweit klappt deine Version nun aber, allerdings fehlt (warum auch immer) der Footer der Seite. Die Seite endet aprubt mit der Ausgabe der Meldung "Bitte Namen und Text eingeben". Keine Ahnung warum.
Danke
- 21.07.2010 07:52 #26HTML-Guru Meilensteine



- Registriert seit
- 20.07.2009
- Ort
- Düsseldorf
- Alter
- 24
- Beiträge
- 1.272
- Renommee-Modifikator
- 3
Edit:
Oh wieso habe ich die 3. Seite nicht gesehen? Komisch. Aber der Beitrag unten sollte dir trotzdem helfen.
Und wegen deines Problems. Wir bräuchten den aktuellen Quellcode. Und wenn das Problem gelöst ist, klären wir dich über SQL Injection auf
Denn dein Code ist unsicher. Und zwar sehr 
--------------
Oh mein Gott. 3 Abfragen ? Wieso?
Ich glaube dir fehlt noch die Logik für PHP.
Wenn nach einem if, einer schleife oder ähnlichen kein {} folgt, wird nur der erste Befehl, der danach steht ausgeführt.
Deswegen machst du 3 Abfragen?
Vorerst merke dir bitte den unterschied zwischen Datenbank, Tabelle und Feldern. In einer Datenbank befinden sich Tabellen. Tabellen beinhalten Felder, welche Werte enthalten, die du dann auslesen willst. Also:
Die `` schreib ich nur, damit es klar ist, dass ein Name gemeint ist und es nicht mit einem SQL-Befehl verwechselt werden kann. In deinem fall gibt es nämlich den Befehl TIMESTAMP und somit könnte da etwas schief gehen. Somit rate ich dazu Tabellennamen und Felder immer in `` zu schreiben.PHP-Code:<?php
mysql_select_db("datenbank"); // Datenbank
mysql_query("SELECT `feld1`, `feld2` FROM `tabelle1`");
?>
Nun zu deinem Statement.
Du kannst ein Select für alle 3 Felder machen. Und wie Furien schon sagte: cid existiert nicht bei dir
Schau dir den Query an, den ich für dich geschrieben habe und probiere daraus zu lernen
Denke so wolltest du es auch haben, denn bei deinem Query hätte es folgendermaßen ausgesehenPHP-Code:<?php
$query = mysql_query("SELECT `name`, `hp`, `text` FROM `guestbook` ORDER BY `timestamp` DESC LIMIT 100");
while($row = mysql_fetch_object($query)) {
echo "<b>Name:</b> ".$row->name." - ";
// Abfragen, ob eine HP eingetragen wurde
if($row->hp && $row->hp != "")
echo "<b>Homepage:</b> <a href=\"$row->hp\" class=\"gengb\">".$row->hp."</a><br />";
echo "<b>Text:</b> ".$row->text."<br />";
}
?>
Bei deiner Version hätte er immer probiert einen Link auszugeben, auch wenn keiner da gewesen wäre. Und was ist wenn jemand http mit ausgibt. Dann sieht es schlecht aus. Meine geschrieben Variante ist noch nicht perfekt. Ich würde an deiner Stelle mit einem regulären Ausdruck da drüber laufenName: Johnny - Homepage: <a href="http://http://meinepageusw.de" class="gengb">http://meinepageusw.de</a>
Text: Mein Link funktioniert irgend wie nicht.
Aber das sollte es vorerst tun. Hoffe konnte dir helfen.
- 21.07.2010 10:17 #27
Danke, das andere Problem (Post 25) ist nun gelöst.
Der Code sieht nun folgendermaßen aus:
und zur Ausgabe der Einträge sieht es so aus:PHP-Code:$abfrage = mysql_query("SELECT * FROM guestbook ORDER BY timestamp DESC LIMIT 100");
while($row = mysql_fetch_array($abfrage)){
$name = $row['name'];
$email = $row['email'];
$hp = $row['hp'];
$date = date('d.m.Y - H:i',$row['timestamp']);
$text = $row['text'];
echo "<div style=\"border: solid #aaaaaa 1px; padding:5px; width:347px;\"><span class=\"gen5\">$date - von: <a href=\"mailto:$email\" class=\"gengb\">$name</a> -
<a href=\"http://$hp\" class=\"gengb\" target=\"_blank\">$hp</a></span><br />
<span style=\"font-family:Lucida Console; font-size:10pt; line-height:15pt;\"><img src=\"http://pics-upload.de/img/ar2.png\"> $text</span></div><br />
";
}
Und ich muss sagen, ich wüsste nicht, wo ich den Code zur Abfrage, ob eine HP existiert oder nicht, hintun mussHTML-Code:<td valign="top" width="450px"><ul id="headlinep"><center><span class="gen2"><b>Eintragen</b></span></center></ul><br /> <div style="margin-left:30px;"> <form action="gb.php" method="post"> <table><tr> <td><span class="gen5">Name</span></td> <td><input type="text" name="name" maxlength="15" style="font-family:Tahoma; font-size:8pt; border: solid #aaaaaa 1px;" size="25"></td> </tr><tr> <td><span class="gen5">E-Mail</span></td> <td><input type="text" name="email" style="font-family:Tahoma; font-size:8pt; border: solid #aaaaaa 1px;" size="25"></td> </tr><tr> <td><span class="gen5">HP <u>www.</u></span></td> <td><input type="text" name="hp" maxlength="26" style="font-family:Tahoma; font-size:8pt; border: solid #aaaaaa 1px;" size="25"></td> </tr><tr> <td valign="top"><span class="gen5">Text</span></td> <td><textarea name="text" style="font-family:Tahoma; font-size:8pt; border: solid #aaaaaa 1px;" cols="40" rows="5"></textarea></td> </tr><tr> <td></td> <td><input type="submit" style="font-family:Tahoma; font-size:8pt;font-weight:bold;border: solid #aaaaaa 1px; background-color:#ffffff;" name="absenden" value="Eintrag absenden" /></td> </tr></table> </form>
Aber habe es ja nun so gelöst, dass anstelle von "Homepage" dort direkt der Domainname steht, und wenn keiner eingegeben wurde, steht halt nichts da. Und im Formular habe ich vor das Feld "HP www." geschrieben, sodass nur noch die Domain selbst eingegeben werden muss.
Zur Sache mit cid - eine solche Zeile existiert. "Primärschlüssel" steht daneben. Wollte das eigentlich mal für die Durchnummerierung der Einträge nehmen, aber wenn man einen Eintrag löscht wird ja einfach weitergezählt, nun ist der Wert da schon bei 50 durch meine ganzen wieder gelöschten Testeinträge...
Gruß
Danke & GrußGeändert von Tobi44 (21.07.2010 um 10:23 Uhr)
- 21.07.2010 16:33 #28Erfahrener Benutzer Meilensteine


- Registriert seit
- 28.06.2008
- Ort
- Kuhkaff in Niedersachsen
- Beiträge
- 246
- Blog-Einträge
- 1
- Renommee-Modifikator
- 0
Span-Tag ist veraltet und ich an deiner Stelle würde alles ordentlich mit einer
echo "<div style=\"border: solid #aaaaaa 1px; padding:5px; width:347px;\"><span class=\"gen5\">$date - von: <a href=\"mailto:$email\" class=\"gengb\">$name</a> -
<a href=\"http://$hp\" class=\"gengb\" target=\"_blank\">$hp</a></span><br />
<span style=\"font-family:Lucida Console; font-size:10pt; line-height:15pt;\"><img src=\"http://pics-upload.de/img/ar2.png\"> $text</span></div><br />
";
Css-Datei formatieren.
Zu dem fehlenden Footer.
Ich weiß zwar nicht wie du es gelöst hast, aber das ist der Sinn
von die("");, dass danach das ganze Skript sofort abgebrochen wird.
Damit auch der Footer include und alle Ausgaben die danach kommen.
Nun dein jetziges Problem versteh ich nicht ganz.
Du weiß nicht, wo du
hintun sollst?PHP-Code:if (empty($_POST['hp'])) die("Bitte gib deine HP ein");
mfg furien
- 21.07.2010 22:50 #29
Danke, aber so blöd bin ich nun auch wieder nicht. Natürlich existiert eine CSS-Datei, allerdings war ich zu faul, diese für diese eine kleine Textformatierung zu erweitern...Span-Tag ist veraltet und ich an deiner Stelle würde alles ordentlich mit einer
Css-Datei formatieren.
Problem mit fehlendem Seitencontent & Footer nach der Fehlermeldung ist behoben.
Und zu dem HP Zeugs Code. Von dem von dir genannten Code war nie die Rede. Der User MUSS keine Hp eingeben. Viel mehr wurde hier von Gilles angesprochen, dass bei der Ausgabe des Eintrages bei meinem Code grundsätzlich der Link "Homepage" angezeigt wird, ob eine eingegeben wurde oder nicht. Wenn keine eingegeben wurde, wird halt ins Leere verlinkt, wenn eine eingegeben wurde, wird diese verlinkt.
Habe das Problem nun so gelöst, dass ich anstelle des Link-Textes "Homepage" bei der Eintragsausgabe einfach die HP/Domain einfach als Linktext genommen habe, sodass nur dann etwas als Homepage angezeigt wird, wenn was eingegeben wurde. Zwar nicht die beste Lösung, aber klappt.
Gruß
- 22.07.2010 07:36 #30HTML-Guru Meilensteine



- Registriert seit
- 20.07.2009
- Ort
- Düsseldorf
- Alter
- 24
- Beiträge
- 1.272
- Renommee-Modifikator
- 3
Guten Morgen.
Also zunächst einmal eine Sache. Du lässt die Email des Users öffentlich ausgeben? Denke das ist keine gute Idee (Ich sag nur Spambots).
Doch mal zu deinem Link Problem. Als Ausgabe hast du ein komplettes echo genommen.
Dabei kannst du das doch splitten. Nur mal als grobe Anschauung dieses Beispiel:
Du darfst nicht alles in ein echo packen, wenn du nach Konditionen gehen willst, ob etwas dargestellt wird oder nicht.PHP-Code:echo "Name: $name";
// Abfrage ob Email angegeben wurde
if($email && $email != "") {
echo " - Email: $email";
}
echo "<br/>";
// Abfrage für Homepage
if($hp && $hp != "") {
echo "Homepage: $hp <br/>";
}
// Nun Nachricht ausgeben
echo $nachricht;
Aktive Benutzer
Aktive Benutzer
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Ähnliche Themen
-
Daten aus einer CSV Datei mit einem Suchfeld auslesen
Von hagesbach im Forum PHPAntworten: 1Letzter Beitrag: 12.07.2010, 11:48 -
Ordner Auslesen und in Tabelle+Link+Infos wiedergeben.
Von Nayz im Forum PHPAntworten: 2Letzter Beitrag: 28.10.2008, 10:55 -
[Delphi] Daten aus einer Excel Tabelle auslesen
Von krumme im Forum C/C++/C#, Java, Visual BasicAntworten: 8Letzter Beitrag: 11.10.2007, 19:20 -
DB auslesen und in PHP wiedergeben
Von FireDuck im Forum PHPAntworten: 20Letzter Beitrag: 02.01.2006, 22:42 -
HTML - Datei als Schrift wiedergeben
Von FireDuck im Forum HTML und XHTMLAntworten: 6Letzter Beitrag: 27.09.2005, 14:19



LinkBack URL
About LinkBacks

Zitieren


Lesezeichen