• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Umfangreiches Formular

schatzimause

Neues Mitglied
Hallo zusammen,

ich habe etwas großeres vor, weiß allerdings nicht ob dies umsetzbar ist und ob ich überhaupt in der Lage bin dies umzusetzen. Ich würde mich daher über Anregungen sehr freuen.
Ich möchte ein Anmeldeformular erstellen. In das Anmeldeformular soll der Besucher seinen Vornamen und seinen Nachnamen eingeben sowie einen Sicherheitscode (Captcha). Dann soll auf einen Button geklickt werden und anschließend soll eine Datenbank durchsucht werden ob diese Person in der Datenbank ist. Falls es diese Person mehrmals gibt, soll eine erneute Abfrage des Vornamen und des Nachnames sowie einens zusätzlichen Feldes (Drop-Down-Menü zur Auswahl einiger Bezirke). Danach sollen die Daten erneut mit der Datenbank abgelichen werden.
Nach erfolgreicher Abfrage, sollen die Daten die in der Datenbank zu der jeweilgen Person hinterlegt sind, auf der Seite angezeigt werden. Dazu soll ein Button erscheinen, welcher die angezeigten Daten in ein Formular überträgt. Diese im Formular eingetragenen Daten soll dann in einer Datenbank gespeichert werden und zusätzlich per Email versendet werden.
Ist das Ganze in einer Datei realisierbar oder benötige ich dazu mehrere?

Ich habe gedacht, ich fange mal Step by Step an, eins nach dem anderen.

Mit dem Formular habe ich auch schon ein wenig angefangen. Allerdings weiß ich nun nicht genau, wie ich Vorname und Nachname aus mit dem Inhalt der Datenbank vergleiche.

PHP:
<?php
session_start();

//Datenbank anwählen
include "zugang_ppc.php.inc";

                        $vorname="";
                        $nachname="";
                        $meldung="";

if(isset($_POST['sicherheitscode']))
{
    $code=$_POST['sicherheitscode'];
    $vorname=mysql_real_escape_string($_POST['vorname']);
    $nachname=mysql_real_escape_string($_POST['nachname']);

    $meldung = "";

if(empty($_SESSION['captcha_spam'] ) || $code != $_SESSION['captcha_spam'])
   $meldung .= "<rot><b>Sicherheitscode falsch eingegeben!</b></rot><br />";
if(empty($vorname))
   $meldung .= "<rot><b>Bitte Vornamen eingeben!</b></rot><br />";
if(empty($nachname))
   $meldung .= "<rot><b>Bitte Nachnamen eingeben!</b></rot><br />";

if(empty($meldung))
{

                   $meldung="<p><b>Ok</b></p>\n";

                 }
                 }


mysql_close($link);


                echo "<h1>Anmeldung - Schritt 2</h1>\n";
                if ($meldung != "") {echo $meldung;}
                echo "<form name=\"kontaktform\" action=\"anmeldung_schritt_2.php\" method=\"POST\">\n";
                echo "<table width=\"10\">\n";
                echo "<tr>\n";
                echo "<td align=\"left\" colspan=\"2\"><br />Alle Felder sind Pflichtfelder.</td>\n";
                echo "</tr>\n";
                echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
                echo "<tr>\n";
                echo "<td align=\"left\">Vorname:</td><td align=\"left\"><input name=\"vorname\" type=\"text\" id=\"vorname\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$vorname."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Nachname:</td><td align=\"left\"><input name=\"nachname\" type=\"text\" id=\"nachname\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$nachname."\"";
                echo "></td>\n";
                echo "</tr>\n";

                echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";

//eingefügt aus www.stoppt-den-spam.info
                echo "<tr>\n";
                echo "<td align=\"left\"><img src=\"captcha/captcha.php\" title=\"Sicherheitscode\" alt=\"Sicherheitscode\" /></td>\n";
                echo "<td align=\"right\">Sicherheitscode vom Bild: <input type=\"text\" name=\"sicherheitscode\" size=\"5\"></td>\n";
                echo "</tr>\n";
//hier ende des einfügens
                echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
                echo "</table>\n";
                echo "<input name=\"formposten\" type=\"submit\" value=\"Spielersuche beginnen\" class=\"button\" onclick=\"this.value='Bitte warten...';this.enabled=false;\"><br />\n";
                echo "</form>\n";
                echo "<br />\n";

// include Ende
include "ende.php";
?>

Ich danke euch schon mal im vorraus fürs lesen ;)

Mit freundlichen Grüßen schatzimausi
 
Das hängt davon ab wie die Datenbank aufgebaut ist und was es für eine ist. Bei einer MySQL-Datenbank könntest Du z.B. mit einem einfachen SELECT-Statement prüfen, ob schon ein Eintrag vorhanden ist.

PHP:
$result = mysql_query("SELECT * FROM tabelle WHERE vorname = '".mysql_escape_string($_POST["vorname"])."' AND nachname = '".mysql_escape_string($_POST["nachname"])."'");

und das Ergebnis kann dann z.B. mit mysql_fetch_row() oder ähnlichem ausgelesen werden.
 
Hallo,

ich danke dir erstmal. Ich nutze eine MySQL-Datenbank. Ich habe nun meine ganzen Überschriften hinter das SELECT gesetzt und den Tabellennamen hinter das FROM.

Aktuell bekomme ich eine Fehlermeldung ausgegeben:
Ungültige Abfrage: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #3' at line 1
Leider kann ich damit nicht viel anfangen. So schaut der Code-Teil aktuell aus:

PHP:
if(empty($meldung))
{

    $sql = mysql_query("SELECT id, rang, deutscherRang, vorname, nachname, geschlecht, geburtsjahr, ttr, anzahlEinzel, bezirk, verein, altersklasse, spielklasse, spielposition FROM ttr_rangliste WHERE vorname = '".mysql_escape_string($_POST["vorname"])."' AND nachname = '".mysql_escape_string($_POST["nachname"])."'");  
    $db_erg = mysql_query( $sql );
    if ( ! $db_erg )
    {
    die('Ungültige Abfrage: ' . mysql_error());
    }
    
    $result = mysql_query( $sql );
    $row = mysql_fetch_row($result);
    
    echo $row[0];
    echo $row[1];

LG Scahtzimausi
 
$sql = mysql_query(<string>); füllt die Variable $sql bereits mit der Rückgabe der Query. Du willst vermutlich: $sql = <string>;

$db_erg und $result sind redundant.
 
Hallo,

ich danke dir für deine Rückmeldung. Nun wird Alles ausgegeben. Allerdings sollte das Formular an dieser Stelle nicht mehr auftauchen. Wie kann ich dies ausschließen?

PHP:
    $result = mysql_query("SELECT id, rang, deutscherRang, vorname, nachname, geschlecht, geburtsjahr, ttr, anzahlEinzel, bezirk, verein, altersklasse, spielklasse, spielposition FROM ttr_rangliste WHERE vorname = '".mysql_escape_string($_POST["vorname"])."' AND nachname = '".mysql_escape_string($_POST["nachname"])."'");  
    
    $row = mysql_fetch_row($result);
    
    echo "Datenbank ID: $row[0]<br>\n"; //Datenbank-ID
    echo "TTR-Rang: $row[1]<br>\n"; // Datenbank TTR-Rang
    echo "Detscher Rang: $row[2]<br>\n"; // Datenbank Deutscher Rang
    echo "Vorname: $row[3]<br>\n"; // Datenbank Vorname
    echo "Nachname: $row[4]<br>\n"; // Datenbank Nachname
    echo "Geschlecht: $row[5]<br>\n"; // Datenbank Geschlecht
    echo "Geburtsjahr: $row[6]<br>\n"; // Datenbank Geburtsjahr
    echo "TTR-Punkte: $row[7]<br>\n"; // Datenbank TTR-Punkte
    echo "Anzahl der Einzel: $row[8]<br>\n"; // Datenbank Anzahl der Einzelspiele des Spielers
    echo "Bezirk: $row[9]<br>\n"; // Datenbank Bezirk
    echo "Verein: $row[10]<br>\n"; // Datenbank Verein
    echo "Altersklasse: $row[11]<br>\n"; // Datenbank Altersklasse: Herren, Damen, etc.
    echo "Spielklasse $row[12]<br>\n"; // Datenbank Spielklasse 10/11
    echo "Position Saison 2010/11: $row[13]<br>\n"; // Datenbank Aufstellung 10/11

Wenn eine Person nun 2 Mal in der DB vorhanden ist, dann sollte keine Ausgabe erfolgen. Sondern ein Formular mit den Feldern Vorname, Nachname und der Bezirk als Drop-Down-Feld (als weiteres Kriterium).

Kann mir dazu jemand Informationen geben? Danke schon mal.

LG schatzimausi
 
Ergänze um das Formular (welches Du gerade nicht gezeigt hast) eine if-Bedingung die die Anzeige ausschließt. Beispiel:

PHP:
// Dein SQL-Statement
// Dein Quellcode der Inhalte aus der DB anzeigt
$kein_formular = 1;
// irgendwo wo das Formular anfängt
if( $kein_formular == 0 ) {
  // Formular anzeigen
}
else
{
  // Formular nicht anzeigen
}

Gleiches gilt auch für die nachträgliche Anzeige eines Dropdown-Feldes für den Bezirk.
 
Hallo,

auch dir ein Danke. Mein Formular war im ersten Post, daher hab ich es nicht erneut mit gepostet. Nach erfolgreichem Absenden, werden die Daten nun aufgelistet und das Formluar bleibt fern :)

Wenn der Fall nun eintreten sollte das exakt der gleiche Vorname und Nachname in der DB stehen, wie muß ich dies anbringen?
if vorname und nachname gleich doppelt -
Meldung nach ausfüllen von Formular: Es gibt mehrere Spieler mit dem selben Namen, daher erfolgt eine neue Spielersuche mit einer zusätlichen Angabe. Und dann das Formular mit Drop-Down-Feld.

Ich muß die Community hier echt mal loben, super schnelle und kompetente Hilfe. Vielen Dank.

LG schatzimausi
 
Dann musst Du in der Datenbank schauen, ob Vorname und Nachname schon vorhanden sind (glaube das habe ich weiter oben schon gepostet) und das Ergebnis prüfen ("wenn mehr als 0 Ergebnisse gefunden wurden" == "if(mysql_num_rows($result) > 0) { /* schon vorhanden */ } else { /* nicht vorhanden */ }").
 
Hallo,

der Name ist zu 99,9% in der Datenbank. Jedoch besteht die Möglichkeit, dass der Name (bzw. Spieler) 2 oder sogar 3 mal in der Datenbank steht.

LG schatzimausi
 
Zuletzt bearbeitet:
Hallo,

da dieser Name ja zu 99,9% in der DB steht, müßte eine Prüfung erfolgen, ob der Name mehrmals in der DB ist, und wenn ja, dann müßte ein neues Formular mit einem zusätzlichen Drop-Downfeld aufgerufen werden. Dein o.g. Code schaut für mich so aus, als wenn geprüft wird ob der Name in der DB ist und wenn ja passt alles und wenn nciht gehts wieder zum Ausgangformular, oder verstehe ich da was falsch?

LG schatzimausi
 
Hallo,

hier hab ich euch mal den Beispiellink, so schauts aktuell aus: tspies.de/ppc_test/anmeldung_schritt_2.php
Ich hab den Namen Max Mustermann nun 2x in die Datenbank geschrieben, es wird jedoch nur ausgegeben, welcher die niedrigere ID hat.
Wenn euch was auffällt bitte auch mitteilen, danke.

LG schatzimausi
 
Hallo,

wie ich umsetzen kann, dass wenn der Name 2x in der DB ist, dass keine erfolgreiche Ausgabe erfolgt bzw. erfolgen kann, sondern der Hinweis, dass der Name 2x vorhanden ist und einer weiteres Kriterium (in Form eines neuen Formluares) abgefragt werden muß.

LG schatzimausi
 
HAllo,

du meinst dass hier:
Dann musst Du in der Datenbank schauen, ob Vorname und Nachname schon vorhanden sind (glaube das habe ich weiter oben schon gepostet) und das Ergebnis prüfen ("wenn mehr als 0 Ergebnisse gefunden wurden" == "if(mysql_num_rows($result) > 0) { /* schon vorhanden */ } else { /* nicht vorhanden */ }").
Wenn ich dass richtig verstehe, dann wird damit geprüft, ob es schon vorhanden ist, wenn ja, dann wird Namen und Vornamen (sowie alles was in der sql-Query steht). Wenn nicht dann, erscheint nichts.
Wenn der Name nun aber Doppelt in der DB steht, dann würde die Abfrage nicht direkt was bringen oder? Stehe ich da auf dem Schlauch? Verstehe ich was falsch?

LG schatzimausi
 
mysql_num_rows gibt dir zurück, wie viele Datensätze zu deiner Query gefunden wurden. Damit lässt sich beispielsweise feststellen, ob es keiner, einer oder mehr als einer ist.
 
Hallo,

ich steh zwar weiter auf dem Schlauch wie ich weitermachen muss, aber gut zu wissen was mysql_num_rows zurück gibt.

LG schatzimausi
 
Ganz grob schematisch:

PHP:
<?php

// Abfrage usw…

$numberOfEntries = mysql_num_rows($result);

?>

<?php if ($numberOfEntries === 0) : ?>

    <p>Es wurde kein Eintrag gefunden!</p>

<?php elseif ($numberOfEntries === 1) : ?>

    <p>Es wurde ein Eintrag gefunden!</p>

    <p>Eintrag ausgeben…</p>

<?php else : ?>

    <p>Es wurden mehrere Einträge gefunden!</p>

    <p>Bitte korrekten auswählen:</p>

    <form method="post" action="">
        <select name="entry_id">
            <?php foreach ($entries as $entry) : ?>
                <option value="<?php echo $entry->id; ?>">
                    <?php echo $entry->id . ' - ' . $entry->name; ?>
                </option>
            <?php endforeach; ?>
        </select>
    </form>

<?php endif; ?>
 

Neueste Beiträge

Zurück
Oben