Webdesign in Siegen

Problem mit Newsletterscript

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

Problem mit Newsletterscript

Beitragvon smarty am 21.08.2008, 15:36

Hallöchen,

ich habe ein Formular, dass ich an die Datei "newsletterergebnis.php" gesendet wird. Die PHP soll dann den Namen des Besuchers der Seite und seine Email in die Datenbank speichern. Ich finde den Fehler nicht und die newsletterergebnis.php zeigt bei einem Eintrag an, dass die Datenbank nicht existiert.

Nun poste ich die einzelnen Dateien:

1. Das Formular:
Code: Alles auswählen
<form action="newsletterergebnis.php" method="post">
                           <fieldset style="width: 320px; border-color: #FF0000; border-width: 1px;
border-style: solid" align=center>
    <legend><font color=#FF0000>Newsletter</font></legend>
                                  <table width="312" border="0" cellpadding="5" cellspacing="0">
                                    <tr>
                                      <td width="72" align="left">Name:</td>
                                      <td width="220"><input name="name" type="text" size="31" maxlength="30" /></td>
                                    </tr>
                                    <tr>
                                      <td align="left">Email:</td>
                                      <td><input name="email" type="text"  size="31" maxlength="40" /></td>
                                    </tr>
                                   
                                      <input type="text" name="test" class="klasse_unsichtbar">
                                   
                                    <tr>
                                      <td align="right">&nbsp;</td>
                                      <td><input name="submit" type="submit" value=" Bestellen " /></td>
                                    </tr>
                                  </table>
                              </fieldset></form>


2. Die "newsletterergebnis.php":
Code: Alles auswählen
<?php
$link = mysql_connect("db.....de","...","...")or die ("Keine Verbindung moeglich");
mysql_select_db("db.....de ") or die ("Die Datenbank existiert nicht");

$name = $_POST["name"];
$email = $_POST["email"];
$test = $_POST["test"];

$datum = time();
$aktiv = 1; //1: Einträge werden aktiviert gespeichert, 2: Einträge werden deaktiviert gespeichert

//Wurden die benötigten Felder ausgefüllt?
if($name == "" AND $email == "" OR $test !== "")
    {
   echo "<br><a href=\"http://www.....de/kontakt.html\">Zurück</a>";
   exit; //Script Ablauf wird unterbrochen, Eintrag wird nicht gespeichert
   }
   

$eintrag = "INSERT INTO newsletter (name, email, datum, aktiv) VALUES ( '$name', '$email', '$datum', '$aktiv')";
$eintragen = mysql_query($eintrag);

//Wurde der Eintrag erfolgreich gespeichert?
if($eintragen == true)
   {
   echo "<span class=\"Stil1\">Sie werden über Neuigkeiten von ... informiert.</span>";
   }

if (( $name != "") && ($email != ""))
{
$empfaenger = "....com";
$betreff = "Newslettereintrag";
$from = "From: ... <www....de>";
$text = "Ein Besucher wuenscht einen Newsletter";

mail($empfaenger, $betreff, $from, $text);

else
   {
   echo "<span class=\"Stil1\">Fehler beim Speichern</span>";
   }

echo "<br><a href=\" http://www.....de/kontakt.html \">Zurück</a>";   

?>


3. Der Code der Datenbank:
Code: Alles auswählen
CREATE TABLE `newsletter` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `name` varchar(40) character set latin1 NOT NULL,
  `email` varchar(40) character set latin1 NOT NULL,
  `datum` int(11) unsigned NOT NULL default '0',
  `aktiv` tinyint(1) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `name` (`name`,`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci AUTO_INCREMENT=1 ;


Wer kann helfen?

Gruß,

Smarty
smarty
Mitglied
 
Beiträge: 5
Registriert: 19.08.2008, 14:32

Re: Problem mit Newsletterscript

Beitragvon ahmet93 am 21.08.2008, 15:56

Ich würde erstmal dies bei der Datenbank machne machen, sonst erkennt der SQL Code deine Datenbank nicht:
wo ich db...de bei USE hingeschrieben habe, würde ich erstmal mein Datenbankname hinschreiben

Code: Alles auswählen
--
-- Datenbank: `db...de`
--
USE `db...de`;
CREATE TABLE `newsletter` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `name` varchar(40) character set latin1 NOT NULL,
  `email` varchar(40) character set latin1 NOT NULL,
  `datum` int(11) unsigned NOT NULL default '0',
  `aktiv` tinyint(1) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `name` (`name`,`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci AUTO_INCREMENT=1 ;
Nichts ist so wie es scheint..
Nobody is perfect!
ahmet93
Mitglied
 
Beiträge: 34
Registriert: 18.08.2008, 16:47
Wohnort: Heilbronn

Re: Problem mit Newsletterscript

Beitragvon smarty am 21.08.2008, 16:03

Hallo Ahmet,

der Code stammt direkt aus der MYSQL Datenbank. Der Code muß also nicht erst an die Datenbank gesendet werden.

Gruß,

Smarty
smarty
Mitglied
 
Beiträge: 5
Registriert: 19.08.2008, 14:32

Re: Problem mit Newsletterscript

Beitragvon Manuel am 22.08.2008, 02:35

Na ob das <input type="text" name="test" class="klasse_unsichtbar"> zwischen 2 TableRows wirklich valide ist...ich packe sowas unsichtbares immer mit ins letzte td mit rein.

Zur eigentlichen Frage: Wo der Fehler genau passiert ist denke ich klar, denn die Fehlermeldung gibst du ja selbst mit deinem Script aus. Irgendwas scheint da bei der Wahl des Datenbanknamens nicht zu stimmen. Meiner Meinung nach hast du einfach vergessen, den Link zu verwenden, wobei ich mir gerade nicht sicher bin ob dieser zwingend erforderlich ist, da er dann die aktuelle Connection nehmen dürfte. Dennoch sollte man immer schreiben:

Code: Alles auswählen
$db = mysql_connect("localhost","...","...") or die ("Keine Verbindung moeglich");
mysql_select_db("datenbankname",$db) or die ("Die Datenbank existiert nicht");


Falls es daran nicht liegt, überprüfe unbedingt nochmals den Tabellennamen.

Ein paar kleine Anmerkungen:
Anstatt "!==" schreibt man nur "!=". Das reicht aus. Dann verwendet man in PHP meist anstatt "AND" einfach "&&" bzw. für "OR" "||". Hab diese Schreibweise so noch nie gesehen muss ich gestehen, aber es kann sein, dass auch das funktioniert. Man kann ja nicht alles kennen. ;)
Auch bei deinem mysql_query würde ich immer die $db angeben. Das mag so klappen, aber wenn du mal mit mehreren Arbeitest bist du froh, wenn du es schon vorher so gemacht hast. Aber das ist natürlich jedem selbst überlassen. ;)

Für "if($eingetragen == true)" kannst du "if($eingetragen)" schreiben. Da die Variable true ist, wirds ausgeführt. Falls du willst, dass es false ist und ausgeführt werden soll, schreibst du einfach "if(!$eingetragen)".

Falls du bei deinen Ausgaben mit echo nicht immer \" machen willst, verwende einfach echo 'Test'; Das finde ich persönlich viel schöner, vor allem da es meist übersichtlicher ist. Einziger Unterschied: Der Text wird nicht mehr auf Variablen getestet. Somit sind einzelne Anführungszeichen nicht spürbar schneller, aber dennoch meist schöner, da du nicht mehr \" schreiben musst. Variablen bindest du einfach so ein:

Code: Alles auswählen
echo 'Test: '.$number.' Punkte';


Aber das sind alles nur Vorschläge. ;)

Lg,
Manuel ;-]
Benutzeravatar
Manuel
Site Admin
 
Beiträge: 9114
Registriert: 10.12.2004, 19:29
Wohnort: Asbach

Re: Problem mit Newsletterscript

Beitragvon Avedo am 22.08.2008, 02:53

Aber sinnvolle Vorschläge. Zudem würde ich etwas auf die Dokumentierung deines Quelltexts und vorallem auf die Formatierung achten. Dann steigen wir schneller durch deinen Quelltext durch und können dir schneller helfen. Bin leider momentan etwas am Ende, aber ich kann, wenn ich morgen die Zeit finde, gerne nochmal über deinen Quellcode fliegen und ihn etwas verbessern bzw. aufpeppen. Hast du PHP5 auf deinem Webspace?
MfG, Andy
Ich bin zu Mimis Religion konvertiert!
I'm so tired of slitting the throats of people calling me a violent psychopath.
Benutzeravatar
Avedo
Mitglied
 
Beiträge: 613
Registriert: 09.12.2007, 20:12
Wohnort: Göttingen

Re: Problem mit Newsletterscript

Beitragvon smarty am 22.08.2008, 11:26

Leute,

ich danke Euch für Eure Hilfe. Das Script funzt jetzt !!! Wenn Ihr weitere Anregungen habt, nehme ich die gerne entgegen.

Hier seht Ihr wofürs gut war: http://www.viersitzer.de/kontakt.html Wer Lust hast, sieht uns am 2. November beim hessischen Landesfinale im Batschkapp in Frankfurt.

Herzlich,

smarty
smarty
Mitglied
 
Beiträge: 5
Registriert: 19.08.2008, 14:32

Re: Problem mit Newsletterscript

Beitragvon Manuel am 22.08.2008, 14:38

Na und woran hat es gelegen? Das wäre doch mal schön zu erfahren. ;)
Benutzeravatar
Manuel
Site Admin
 
Beiträge: 9114
Registriert: 10.12.2004, 19:29
Wohnort: Asbach


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast