php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Kleiner fehler mit abfrage


 
Markus26
22-02-2003, 18:24 
 
hi, ich habe mir ein formular gebastelt, das eine abfrage an die Mysql DB schickt, ob die email schon vorhanden ist. er gibt mir jetzt zwar den fehler aus, aber trägt trotzdem die daten wieder in die db ein. habe es auch schon mit if probiert, aber hat nicht wirklich funktioniert.

was mache ich falsch???

<?php
$db = mysql_connect($host.":".$port,$user,$password);
mysql_select_db($datenbankname,$db);

$abfrage = mysql_query("select * from sqlform_data where email='$email'");

$eintrag = "INSERT INTO sqlform_data (anrede, name, vorname, strasse, land, plz, ort, telefon, telefon2, mobil, fax, lastschrift, email, kontoinh,
paketwahl, geldinsti, ktnr, blz, agb) VALUES ('$anrede', '$name', '$vorname', '$strasse', '$land', '$plz', '$ort', '$telefon', '$telefon2', '$mobil', '$fax', '$lastschrift', '$email', '$kontoinh',
'$paketwahl', '$geldinsti', '$ktnr', '$blz', '$agb')";


$eintragen = mysql_query($eintrag);
$error="";

if ( isset($gesendet)) {

// Felder die nicht ausgewertet werden sollen
// einfach hier mittels // kommentieren

if ($anrede=="") { $error .=" Anrede,";}
if ($vorname=="") { $error .=" Vorname,";}
if ($name=="") { $error .=" Nachname,";}
//if ($land=="") { $error .=" Land,";}
if ($plz=="") { $error .=" PLZ,";}
if ($ort=="") { $error .=" Ort,";}
if ($strasse=="") { $error .=" Straße,";}
if ($telefon=="") { $error .=" Telefonnummer,";}
//if ($fax=="") { $error .=" Faxnummer,";}
if ($email=="") { $error .=" eMail-Adresse,";}
if ($paketwahl=="") { $error .=" Paketauswahl,";}
if ($agb=="") { $error .=" AGB,";}
if (!eregi("@",$email)) {$error .=" '@' bei E-Mail fehlt,";}
if (mysql_num_rows($abfrage) > 0) {$error .=" email vorhanden";}

//=================checkbox u. option==auswahl==========================

if (!empty($paketwahl)) {$select="selected";}
if (!empty($status)) {$select="selected";}

// Wenn keine Eingabefehler aufgetreten
// sind Bestätigung ausgeben
// ======================================
if ($error=="") {
$Nachricht = " Inhalt der Nachricht:\n\n";
$Nachricht .=":::::::::::::::::::::::::::::::\n";
$Nachricht .= " Kontakt von:\n";
$Nachricht .=":::::::::::::::::::::::::::::::\n";
$Nachricht .=" Anrede: $anrede\n";
$Nachricht .=" Vorame: $vorname\n";
$Nachricht .=" Name: $name\n";
$Nachricht .=" Land: $land\n";
$Nachricht .=" PLZ: $plz\n";
$Nachricht .=" Ort: $ort\n";
$Nachricht .=" Strasse: $strasse\n";
$Nachricht .=" eMail: $email\n";
$Nachricht .=" Telefon: $telefon\n";
$Nachricht .=" Telefon2: $telefon2\n";
$Nachricht .=" Handy: $mobil\n";
$Nachricht .=":::::::::::::::::::::::::::::::\n";
$Nachricht .=" Paketauswahl\n";
$Nachricht .=":::::::::::::::::::::::::::::::\n";
$Nachricht .=" Paket: $paketwahl\n";
$Nachricht .=":::::::::::::::::::::::::::::::\n";
$Nachricht .=" Bankverbindung\n";
$Nachricht .=":::::::::::::::::::::::::::::::\n";
$Nachricht .=" Kontoinhaber: $kontoinh\n";
$Nachricht .=" Bank: $geldinsti\n";
$Nachricht .=" Kontonummer: $ktnr\n";
$Nachricht .=" Bankleitzahl: $blz\n";
$Nachricht .=":::::::::::::::::::::::::::::::\n";
$Nachricht .=" AGB: $agb\n";
$Nachricht .="$kommentar\n";

$Domain=eregi_replace(".*\.([a-z0-9\-]*)\.([a-z]*)$","\\1.\\2",getenv("SERVER_NAME"));
$Empfaenger = "$webmaster@stepart.de";
$subject = "anmeldung";
$Header = "From: Anmeldeformular <$webmaster@$Domain>\n";
mail($Empfaenger,$subject,$Nachricht,$Header);

//Hier wird die logdatei (selbststaendig) angelegt und die mail eingetragen

//=================================================================================



$fp=fopen("$savenachricht",'a');
fwrite($fp, "$Nachricht\n\n");
fclose($fp);


//=================================================================================

/*Hier wird dieser Antworttext zurueckgemailt (an Absender Kontaktformular)

Es kann auch der Name etc. mit zurueckgegeben werden

oder eine beliebige txtDatei includen

====================================================================================*/

$subject1 = "Anmeldung ";

//include("$nachricht1");

$nachricht1="Sehr geehrter ,


mit freundlichen Grüßen



James Bond)";

//email an Absender

mail($email,$subject1,$nachricht1,$Header);

/*=================================================================================================== ==============*/

?>
<div align="center">
<center>
<table cellspacing=0 cellpadding=0 border=1 style="border-collapse: collapse; border: 3px outset #000080" bordercolor="#111111" bgcolor="#F7F7F7" width="381">
<tr>
<td width="375">
<p align="center"><font color="#000000" face="Arial">Sehr
geehrte/er
<?php echo "$anrede $vorname $name";?>
<br>
Wir bedanken uns für Ihr Interesse an einem</font><font color="#FFFF66" face="Arial"><br>
</font> <font face="Arial" color="#ff0000" size="+2">
<?php echo "$paketwahl $r_TYP";?>
</font> <font color="#FFFF66" face="Arial"><br>
</font><font color="#000000" face="Arial">Ihre Nachricht
wird von uns in Kürze bearbeitet.</font>
<p align="center"> <font face="Arial" color="#000000" size="1">Falls
Sie in 4 sec. nicht automatisch weitergeleitet werden,
klicken sie bitte <b><a href="index.htm" onClick="if(this.blur)this.blur()"><font color="#FF0000">hier</font></a></b></font>
</td>
</tr>
</table>
</center>
</div>
<meta http-equiv="Refresh" content="6; URL=http://www.">
<?php
// ENDE: if ($error=="")
}
// ENDE: if gesendet
}
?>
<?php

// Formular nur ausgeben wenn noch nicht gesendet worden ist
// oder wenn ein Eingabefehler vorlag
// ==========================================================

if ($error !="" || (! isset($gesendet)) ) {

?>
<form action="<?php echo $target; ?>" method=get>
<input type="hidden" name="gesendet" value="1">
<center>
<table border="0" width="516" height="450" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<?php
// Eingabe-Fehler behandeln
// -------------------------
if ($error !="") {

// Komma am Ende entfernen
// ========================

$error=ereg_replace(",$" , "<br>" , $error);
$error = "Folgende Felder wurden nicht ausgefüllt: <br>\n".$error;
?>
<tr>
<td width="86">&nbsp;</td>
<td width="144" ><font color="Red">
<?php echo $error;
if (mysql_num_rows($abfrage) > 0)

?>

</font></td>
</tr>
<?php

}

?>

 
goth
22-02-2003, 18:58 
 
Und Du bist Dir sicher das du nicht selber absurd findest was Du da zusammen programmiert hast?

Erklär' mal die Logik die dahinter steckt!!!

Du erstellst ein Statement um abzufragen ob ein entsprechender Datensatz vorhanden ist:
$abfrage = mysql_query("select * from sqlform_data where email='$email'");

Was schon scheiße ist weil es zu viele Daten überträgt ... SELECT COUNT(*) würde vollkommen reichten ... !

Dann erstellst Du ein Statemen um einen Datensatz einzufügen:
$eintrag = "INSERT INTO sqlform_data (anrede, name, vorname, strasse, land, plz, ort, telefon, telefon2, mobil, fax, lastschrift, email, kontoinh,
paketwahl, geldinsti, ktnr, blz, agb) VALUES ('$anrede', '$name', '$vorname', '$strasse', '$land', '$plz', '$ort', '$telefon', '$telefon2', '$mobil', '$fax', '$lastschrift', '$email', '$kontoinh',
'$paketwahl', '$geldinsti', '$ktnr', '$blz', '$agb')";

Und sendest Dieses an die Datenbank:$eintragen = mysql_query($eintrag);

Um dann im nachhinein zu prüfen ob alle Eingaben richtig sind ... und ob auch wirklich kein solcher Datensatz vorhanden ist ... und dann wunderst Du Dich warum der Datensatz geschrieben wird?!?!?

Herzlichen Glückwunsch! Dafür kriegst Du die volle Punktzahl!!

Sorry ... aber 'ne vernünftige Antwort gibt's vielleicht von "MelloPie" oder "Troublegum" ... !

 
wahsaga
22-02-2003, 19:05 
 
erst schiessen, dann fragen - willkommen im wilden westen der programierung *g*

 
Markus26
22-02-2003, 19:24 
 
tja, bin halt ziemlich frisch hier und hoffe das ich es bald besser hin kriege. gibt es denn eine einfache lösung für mein problem??? muss ja nicht gleich ne vollständige anleitung sein, aber so kl stichpunkte würden mir echt weiterhelfen.


mfg

markus

 
Günni
22-02-2003, 20:22 
 
$abfrage = mysql_query("select count(*) from sqlform_data where email='$email'");

$eintrag = "INSERT INTO sqlform_data (anrede, name, vorname, strasse, land, plz, ort, telefon, telefon2, mobil, fax, lastschrift, email, kontoinh,
paketwahl, geldinsti, ktnr, blz, agb) VALUES ('$anrede', '$name', '$vorname', '$strasse', '$land', '$plz', '$ort', '$telefon', '$telefon2', '$mobil', '$fax', '$lastschrift', '$email', '$kontoinh',
'$paketwahl', '$geldinsti', '$ktnr', '$blz', '$agb')";

if(mysql_num_rows($abfrage) > 0)
{
$eintragen = mysql_query($eintrag);
...
}

 
goth
22-02-2003, 20:42 
 
@Günni: Das reicht nur noch nicht ... weil SELECT COUNT(*) immer genau einen Datensatz liefert ... es sei denn im Statement selber ist ein Fehler ...

if ( $abfrage = mysql_query("select count(*) from sqlform_data where email='$email'") ) {
if( $row=mysql_fetch_row($abfrage) && $row[0] > 0) {
$eintrag = "INSERT INTO sqlform_data (anrede, name, vorname, strasse, land, plz, ort, telefon, telefon2, mobil, fax, lastschrift, email, kontoinh, paketwahl, geldinsti, ktnr, blz, agb) VALUES ('$anrede', '$name', '$vorname', '$strasse', '$land', '$plz', '$ort', '$telefon', '$telefon2', '$mobil', '$fax', '$lastschrift', '$email', '$kontoinh', '$paketwahl', '$geldinsti', '$ktnr', '$blz', '$agb')";
$eintragen = mysql_query($eintrag);

...

}
mysql_free_result($abfrage);
}

 
Günni
22-02-2003, 20:57 
 
@goth
Sorry, hast recht. So würde es gehen wenn er die daten mit SELECT * FROM XYZ ... abfragen würde.

 
goth
22-02-2003, 21:00 
 
Genau ... :)

 
Markus26
22-02-2003, 22:11 
 
okay okay, bis hier hin hab ich das ja schon fast verstanden, aber wo pack ich das hier hin????

}
mysql_free_result($abfrage);
}



sorry für die dumme frage aber ich komme nicht weiter


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:36 Uhr.