PHP echo Text
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfragen
adresse
code
datenbank
eintrag
email
feld
formular
funktioniert code
http
logik
mache
nachname
programmieren
sprache
text
trage
url
verstehen
vorname
-
Hi !
Ich habe mal wieder ein kleines Problem. Folgendes Script habe ich mir eben gemacht:
<?php $sql = "insert into newsletter (email, vorname, nachname) values ('".$_POST['email']."', '".$_POST['vorname']."', '".$_POST['nachname']."')"; mysql_query($sql); echo "<font size='2'>Ihre Emailadresse wurde erfolgreich eingetragen!</font>"; ?>
Allerdings wird der echo Text auch angezeigt, wenn garnichts eingetragen wurde. Wie kann ich es machen, dass dieser Text nur angezeigt wird, wenn es erfolgreich in die Datenbank eingetragen wurde? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
$sql = "insert into newsletter (email, vorname, nachname) values ('".$_POST['email']."', '".$_POST['vorname']."', '".$_POST['nachname']."')"; if(mysql_query($sql)) { echo "<font size='2'>Ihre Emailadresse wurde erfolgreich eingetragen!</font>"; } else { echo "sorry, hat nicht funktioniert"; }
-
trueweb schrieb:
$sql = "insert into newsletter (email, vorname, nachname) values ('".$_POST['email']."', '".$_POST['vorname']."', '".$_POST['nachname']."')"; if(mysql_query($sql)) { echo "<font size='2'>Ihre Emailadresse wurde erfolgreich eingetragen!</font>"; } else { echo "sorry, hat nicht funktioniert"; }
Es wird aber immernoch dieser Text angezeigt, wenn nichts eingetragen wurde.
Ich schreibe mal das ganze Formular:
<form method="POST" action=""><div align="center"> <center> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="50%" id="AutoNumber3"> <tr> <td width="50%"><b><font face="Arial">Vorname: </font></b></td> <td width="50%"><b><font face="Arial"> <input type="text" name="vorname" size="20"></font></b></td> </tr> <tr> <td width="50%"><b><font face="Arial">Nachname:</font></b></td> <td width="50%"><b><font face="Arial"> <input type="text" name="nachname" size="20"></font></b></td> </tr> <tr> <td width="50%"><b><font face="Arial">E-Mail Adresse:</font></b></td> <td width="50%"><b><font face="Arial"> <input type="text" name="email" size="20"></font></b><br></td> </tr> </table> <p><b><font face="Arial"><input type="submit" value="Abschicken" name="B1"></font></b></p> </center> </div> </form> <?php $sql = "insert into newsletter (email, vorname, nachname) values ('".$_POST['email']."', '".$_POST['vorname']."', '".$_POST['nachname']."')"; if(mysql_query($sql)) { echo "<font size='2'>Ihre Emailadresse wurde erfolgreich eingetragen!</font>"; } else { echo "Sorry, hat nicht funktioniert"; } ?>
-
Ich sehe hier noch ein generelles Problem, Du prüfst das Formular nicht ob nicht ggf. unerwünschte Einträge gemacht wurden. Stichwort SQL Injections. Faustregel hier ist, traue keiner Eingabe! Sprich Du solltest prüfen ob der Name wirklich ein Name ist und so weiter. Tutorials solltest Du ohne Probleme via Google finden können.
-
Ich hab grad bemerkt, dass das Script bei jedem Aufruf von diesem Formular einen leeren Eintrag in die DB schreibt.
Wie kriege ich das weg? -
Ich hab grad bemerkt, dass das Script bei jedem Aufruf von diesem Formular einen leeren Eintrag in die DB schreibt.
und hast du schon gecheckt, ob in $_POST['...'] überhaupt was drin ist? und warum schreibst eine tabelle in ein formular? was bringt das? du wilst damit etwa nicht formatieren? -
Hat jemand noch eine Idee?
`
Ich will, dass der echo Text nur ausgegeben wird, wenn was eingetragen wurde und nicht immer.
-
czibere hat dir bereits die Antwort gegeben. Du solltest erst einmal die Grundlagen lernen, sonst wirst du nie selbständig ein Script schreiben können und wir nehmen dir hier sicherlich nicht die Arbeit ab!
-
trueweb schrieb:
czibere hat dir bereits die Antwort gegeben. Du solltest erst einmal die Grundlagen lernen, sonst wirst du nie selbständig ein Script schreiben können und wir nehmen dir hier sicherlich nicht die Arbeit ab!
Ich finde in dem Script keinen Fehler. Außerdem funktioniert es ja, bis auf das, das bei jedem Aufruf eine leere Zeile in die DB gespeichert wird. Ich will ja erst einen Eintrag in die Datenbank schreiben, wenn man auf Abschicken klickt. -
dadurch dass IMMER die qry ausgeführ wird, EGAL was bzw ob was in den textfeldern respektive im $_POST stehet, ist es wohl naheliegend, dass leere datensätze in die db eingetragen werden.
wie schon erwähnt: fang erst mal mit den basics an, dann wage dich an datenbanken
mfg -
syberpsace schrieb:
dadurch dass IMMER die qry ausgeführ wird, EGAL was bzw ob was in den textfeldern respektive im $_POST stehet, ist es wohl naheliegend, dass leere datensätze in die db eingetragen werden.
wie schon erwähnt: fang erst mal mit den basics an, dann wage dich an datenbanken
mfg
Wie kann ich das Problem denn lösen? -
wurde doch schon vorgeschlagen
einfach prüfen ob was im $_POST drinnen ist;
und achte darauf, dass keine sql-injections getätigt werden können
mfg -
syberpsace schrieb:
wurde doch schon vorgeschlagen
einfach prüfen ob was im $_POST drinnen ist;
und achte darauf, dass keine sql-injections getätigt werden können
mfg
Im $_POST ist natürlich nichts drinnen, wenn ich die Seite aufrufe. Wenn ich was in die Felder eintrage und abschicke, wird es problemlos eingetragen. Ich will nur, dass beim Seitenaufruf keine leere Zeile eingetragen wird.
mfg -
DANN MUSST DU EINE ABFRAGE MACHEN; OB IM POST WAS DRINN IST!!!!
wie oft denn noch???????????????????????????????????? -
Es zeigt es momentan schon richtig an es wird ja eine Spalte erstellt , aber du möchest deine Datensätze natürlich auch eintragen.
Versuche ma mit dieser Vorlange vlt etwas weiterzukommen.
Versuche mal nicht sofort das $_POST einzutragen leg es erst in einer variable fest
$vorname = $_POST['vorname'];
$nachname = $_POST['nachname'];
$email = $_POST['email'];
$eintrag = "INSERT INTO newsletter
(email,vorname,nachname)
VALUES
('$email', '$vorname',
'$nachname')";
$eintragen = mysql_query($eintrag);
-
kyzu schrieb:
$vorname = $_POST['vorname'];
$nachname = $_POST['nachname'];
$email = $_POST['email'];
$eintrag = "INSERT INTO newsletter
(email,vorname,nachname)
VALUES
('$email', '$vorname',
'$nachname')";
$eintragen = mysql_query($eintrag);
das kommt aufs KOMPLETT gleiche raus (bis auf die tatsache, dass der server gaaanz wenig mehr speicher für das anlegen der variablen verbrät)
du musst mit isset($variablenname) abfragen, ob überhaupt was drinn steht, sonst wirst du dir bis in alle ewigkeit die datenbank mit leerzeilen anfüllen.
ich darf dir php.net empfehlen bevor du weitermachst, auch nur irgendwas mit php zu machen, wenn du nichtmal weißt, wie man richtig abfragt ob eine $_POST variable belegt ist
mfg -
davy schrieb:Ich will nur, dass beim Seitenaufruf keine leere Zeile eingetragen wird.
dann schau mal hier rein: http://czibere.lima-city.de/davy/index.php und mache es einfach nach, aber versuch's, die logik dahinter reinzuziehen :o) -
Ich habe mir folgendes zusammengebastelt:
<?php }elseif(!isset($_POST['vorname']) || $_POST['vorname'] == ""){ echo '<p align="center"><br><br><br>Bitte gib deinen Vornamen an!<br><br><a href="javascript:history.back()">Zurück</a><br><br><br></p>'; }elseif(!isset($_POST['nachname']) || $_POST['nachname'] == ""){ echo '<p align="center"><br><br><br>Bitte gib deinen Nachnamen an!<br><br><a href="javascript:history.back()">Zurück</a><br><br><br></p>'; }elseif(!isset($_POST['email']) || $_POST['email'] == ""){ echo '<p align="center"><br><br><br>Bitte gib deine E-Mailadresse an!<br><br><a href="javascript:history.back()">Zurück</a><br><br><br></p>'; if($insert = @mysql_query("INSERT INTO newsletter SET email = '".$_POST['email']."', vorname = '".$_POST['vorname']."', nachname = '".$_POST['nachname']."'")) { echo '<p align="center"><br><br>Deine Emailadresse wurde erfolgreich eingetragen.<br></p>'; }else{ echo '<p align="center"><br><br><br>Der Eintrag war leider nicht erfolgreich!<br>Bitte probieren Sie es erneut!<br><br><a href="index.php?site=anmelden">Zurück</a><br><br><br></p>'; } ?>
Allerdings kommt nur eine weiße Seite. Was mache ich falsch? -
davy schrieb:
Was mache ich falsch?
Du versuschst PHP anzuwenden, ohne die Logik und die Sprache zu verstehen. Solange du das nicht tust, wirst du nie selbständig programmieren können. -
trueweb schrieb:
davy schrieb:
Was mache ich falsch?
Du versuschst PHP anzuwenden, ohne die Logik und die Sprache zu verstehen. Solange du das nicht tust, wirst du nie selbständig programmieren können.
Wenn ihr mir nicht zeigt, was ich falsch mache, lern ich ja auch nicht -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage