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

Umfangreiches Formular

Hallo,

ich habe deinee Code einfach mal eingebaut, ausgegeben wird allerdings nur einer. Ich hoffe ich hab hier nicht zuviel überflüssiges in der Datei.
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))
{

    $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);
    
    if(mysql_num_rows($result) > 0) 
    { /* schon vorhanden */ 
    
    echo "<h1>Anmeldung - Schritt 2</h1>\n";
    echo "<p>Der Abgleich der eingeben Spielerdaten ergab folgende Ergebnisse:</p>\n"; //Ausgabe-Text
    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
    echo "<p>Mit den hier ausgegeben Daten lautet die Empfehlung für die Turnierteilnahme: A-Klasse/B-Klasse/C-Klasse/D-Klasse/Jugend.<br />Es kann nur in einem Wettbewerb teilgenommen werden. Selbstverständlich kann man auch im nächst höheren Wettbewerb starten.</p>\n";
    echo "<input name=\"formposten\" type=\"submit\" value=\"Weiter zu Schritt 3 - Spielerdaten weiterverarbeiten\" class=\"button\" onclick=\"this.value='Bitte warten...';this.enabled=false;\"><br />\n";
    echo "</form>\n";


$kein_formular = 1;

} else 
{ /* nicht vorhanden */ }

$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    
    echo "<h1>Anmeldung - Schritt 2</h1>\n";
    echo "<p>Der Abgleich der eingeben Spielerdaten ergab folgende Ergebnisse:</p>\n"; //Ausgabe-Text
    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
    echo "<p>Mit den hier ausgegeben Daten lautet die Empfehlung für die Turnierteilnahme: A-Klasse/B-Klasse/C-Klasse/D-Klasse/Jugend.<br />Es kann nur in einem Wettbewerb teilgenommen werden. Selbstverständlich kann man auch im nächst höheren Wettbewerb starten.</p>\n";
    echo "<input name=\"formposten\" type=\"submit\" value=\"Weiter zu Schritt 3 - Spielerdaten weiterverarbeiten\" class=\"button\" onclick=\"this.value='Bitte warten...';this.enabled=false;\"><br />\n";
    echo "</form>\n";    
?>
<?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; ?>

<?php

                 }
                 }


mysql_close($link);

            

if( $kein_formular == 0 ) {
                echo "<h1>Anmeldung - Schritt 1</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 />Bitte Vorname, Nachname und das Feld für den Sicherheitscode ordnungsgemäß ausfüllen und danach auf \"Spielersuche beginnen - Weiter zu Schritt 2\" klicken.</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 - Weiter zu Schritt 2\" class=\"button\" onclick=\"this.value='Bitte warten...';this.enabled=false;\"><br />\n";
                echo "</form>\n";

}
else
{
  // Formular nicht anzeigen
}                 
                            
// include Ende
include "ende.php";
?>
 
HAllo,

kurzer Nachtrag:
- Tabellenstruktur für Tabelle `ttr_rangliste`
--

CREATE TABLE IF NOT EXISTS `ttr_rangliste` (
`id` int(11) NOT NULL,
`rang` text NOT NULL,
`deutscherRang` text NOT NULL,
`vorname` text NOT NULL,
`nachname` text NOT NULL,
`geschlecht` text NOT NULL,
`geburtsjahr` text NOT NULL,
`ttr` text NOT NULL,
`anzahlEinzel` text NOT NULL,
`bezirk` text NOT NULL,
`verein` text NOT NULL,
`altersklasse` text NOT NULL,
`spielklasse` text NOT NULL,
`spielposition` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Ich glaube das meintest du.

LG schatzimausi
 
Ja, genau.

Ganz kurz und knapp:

PHP:
<?php

function renderEntry($entry)
{
    $s = '<pre>' . print_r($entry, true) . '</pre>';

    return $s;
}

mysql_connect('localhost', 'root', '');
mysql_select_db('test');

$searchPerformed = false;
$entries = array();

if (isset($_POST['form_id']) && $_POST['form_id'] === 'suche') {
    $searchPerformed = true;    

    $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']) . "'
        ");

    while ($row = mysql_fetch_assoc($result)) {
        $entries[] = $row;
    }
}

?><!DOCTYPE html>

<html lang="en">

<head>
    <meta charset="utf-8" />
    <title>New</title>
</head>

<body>

    <?php if ($searchPerformed === true) : ?>

        <h2>Suchergebnis</h2>

        <?php if (count($entries) === 0) : ?>

            <p>Keinen Eintrag gefunden.</p>

        <?php elseif (count($entries) === 1) : ?>

            <p>Einen Eintrag gefunden.</p>

            <?php foreach ($entries as $entry) : ?>

                <?php echo renderEntry($entry); ?>

            <?php endforeach; ?>

        <?php else : ?>

            <p>Mehr als einen Eintrag gefunden.</p>

            <?php foreach ($entries as $entry) : ?>

                <?php echo renderEntry($entry); ?>

            <?php endforeach; ?>

        <?php endif; ?>

    <?php endif; ?>



    <h2>Suchformular</h2>

    <form method="post" action="">

        <p>Vorname: <input name="vorname" type="text" /></p>
        <p>Nachname: <input name="nachname" type="text" /></p>

        <p><input type="hidden" name="form_id" value="suche" />
            <input type="submit" /></p>
    </form>

</body>

</html>

Zur Logik, einen von mehreren gefundenen Einträgen auszuwählen, fehlt mir gerade die Zeit.
 
Hallo,

ich danke dir erstmal dass du dir soviel Mühe mit mir gibst, sowas ist nicht selbstverständlich. Meine Datei kann ich dann in die Tonne treten, denn dein Code schaut ja komplett anderster aus.
Ich habe nun eingebaut, dass das Formular verschwindet, sofern ein Eintrag erfolgt ist, ich hoffe die passt so, jedenfalls wirds passend ausgegeben.
Ich habe nun versucht den Button zu verändern, dass anstatt von "Daten absenden" dies steht "Spielersuche beginnen - Weiter zu Schritt 2". Dies ist mir aber leider nicht gelungen.
Zusätzlich wollte ich Hinweise einbauen, wenn jemand nur den Vornamen eingibt, soll die Meldung erscheinen, dass der Nachnamen noch eingegeben muss und umgekehrt, wenn jemand nur den Nachnamen eingibt, dann dass der Vorname noch angegeben werden mußt. Auch wollte ich den Captcha-Code mit einbauen, dies schlug auch fehl.

PHP:
<?php

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

function renderEntry($entry)
{
    $s = '<pre>' . print_r($entry, true) . '</pre>';

    return $s;
}


$searchPerformed = false;
$entries = array();

if (isset($_POST['form_id']) && $_POST['form_id'] === 'suche') {
    $searchPerformed = true;    

    $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']) . "'
        ");
$kein_formular = 1;
    while ($row = mysql_fetch_assoc($result)) {
        $entries[] = $row;
    }
}

?><!DOCTYPE html>

<html lang="en">

<head>
    <meta charset="utf-8" />
    <title>New</title>
</head>

<body>

    <?php if ($searchPerformed === true) : ?>

        <h2>Suchergebnis</h2>

        <?php if (count($entries) === 0) : ?>

            <p>Keinen Eintrag gefunden.</p>

        <?php elseif (count($entries) === 1) : ?>

            <p>Einen Eintrag gefunden.</p>

            <?php foreach ($entries as $entry) : ?>

                <?php echo renderEntry($entry); ?>

            <?php endforeach; ?>

        <?php else : ?>

            <p>Mehr als einen Eintrag gefunden.</p>

            <?php foreach ($entries as $entry) : ?>

                <?php echo renderEntry($entry); ?>

            <?php endforeach; ?>

        <?php endif; ?>

    <?php endif; ?>

<?php
// irgendwo wo das Formular anfängt
if( $kein_formular == 0 ) {
?>

    <h2>Suchformular</h2>

    <form method="post" action="anmeldung.php">

        <p>Vorname: <input name="vorname" type="text" /></p>
        <p>Nachname: <input name="nachname" type="text" /></p>
        <p><img src="captcha/captcha.php" title="Sicherheitscode" alt="Sicherheitscode" /></p>
        <p>Sicherheitscode vom Bild: <input type="text" name="sicherheitscode" size="5" /></p>

        <p><input type="hidden" name="form_id" value="suche" />
            <input type="submit" /></p>
    </form>

<?php    
}
else
{
  // Formular nicht anzeigen
}  
?>
</body>

</html>
LG schatzimausi
 
Zuletzt bearbeitet:
Hallo,

Doppelposts und pushen wird sicher unerwünscht sein, trotzdem versuche ich mein Glück, da ich ohne Hilfe aufgeschmissen bin.

LG schatzimausi
 
Hier eine Version, die wohl halbwegs das tut, was dir vorschwebt. Muss als index.php in einem Verzeichnis liegen.

PHP:
<?php

function escape($string)
{
    return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
}

/**
 *
 * @param array $fields
 * @return array
 */
function getEntriesByFields($fields)
{
    $whereParts = array();

    foreach ($fields as $key => $value) {
        $whereParts[] = "`" . $key . "` = '"
                . mysql_real_escape_string($value) . "'";
    }

    $query = "
        SELECT
                id,
                rang,
                deutscherRang,
                vorname,
                nachname,
                geschlecht,
                geburtsjahr,
                ttr,
                anzahlEinzel,
                bezirk,
                verein,
                altersklasse,
                spielklasse,
                spielposition
        FROM
                ttr_rangliste
        WHERE
        ";

    $query .= implode(' AND ', $whereParts);

    $result = mysql_query($query);

    $entries = array();

    while ($row = mysql_fetch_assoc($result)) {
        $entries[] = $row;
    }

    return $entries;
}

/**
 *
 * @param int $id
 * @return array
 */
function getEntryById($id)
{
    $searchFields['id'] = $id;

    $entries = getEntriesByFields($searchFields);

    $entry = null;

    if (count($entries) === 1) {
        $entry = $entries[0];
    }

    return $entry;
}

mysql_connect('localhost', 'root', '');
mysql_select_db('test');

$action = (isset($_GET['action']))
        ? trim((string) $_GET['action'])
        : 'index';

// POST überschreibt GET
if (isset($_POST['action'])) {
    $action = trim((string) $_POST['action']);
}

$tpl = array();
$tpl['action'] = $action;
$tpl['showSearchForm'] = false;

switch ($action) {
    case 'index':
        $tpl['showSearchForm'] = true;
        break;

    case 'search':
        $searchFields = array();
        if (isset($_POST['vorname'])) {
            $searchFields['vorname'] = trim((string) $_POST['vorname']);
        }
        if (isset($_POST['nachname'])) {
            $searchFields['nachname'] = trim((string) $_POST['nachname']);
        }
        $entries = getEntriesByFields($searchFields);

        // Wenn nur ein Eintrag gefunden, zu view-Action weiterleiten
        if (count($entries) === 1) {
            $id = $entries[0]['id'];
            header('Location: http://' . $_SERVER['SERVER_NAME']
                    . pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_DIRNAME)
                    . '/?action=view&id=' . $id);
            exit;
        }

        $tpl['showSearchForm'] = true;
        $tpl['entries']        = $entries;
        break;

    case 'view':
        $id = (isset($_GET['id']))
            ? (int) $_GET['id']
            : 0;

        $entry = getEntryById($id);

        if ($entry === null) {
            die('Dieser Eintrag existiert nicht.');
        }

        $tpl['entry'] = $entry;
        break;
    
    default:
        die('Unknown action');
        break;
}

?><!DOCTYPE html>

<html lang="en">

<head>
    <meta charset="utf-8" />
    <title>New</title>
</head>

<body>

    <?php if ($tpl['action'] === 'search') : ?>

        <?php if (count($tpl['entries']) === 0) : ?>

            <p>Keine Einträge gefunden!</p>

        <?php else : ?>

            <p>Mehr als ein Eintrag gefunden:</p>

            <ul>

            <?php foreach ($tpl['entries'] as $entry) : ?>

                <li><a href="?action=view&amp;id=<?php echo $entry['id']; ?>"><?php
                echo $entry['id'] . ': ' . escape($entry['vorname'])
                   . ' ' . escape($entry['nachname'])
                   . ' (' . escape($entry['verein']) . ')'; ?></a></li>

            <?php endforeach; ?>

            </ul>

        <?php endif; ?>



    <?php elseif ($tpl['action'] === 'view') : ?>

        <h1><?php echo escape($tpl['entry']['vorname']) . ' '
                     . escape($tpl['entry']['nachname']); ?></h1>

        <p>Verein: <?php echo $tpl['entry']['verein']; ?></p>

        <p><a href="./">Zurück zur Suche</a></p>

    <?php endif; ?>



    <?php if ($tpl['showSearchForm']) : ?>
        <h2>Suchformular</h2>

        <form method="post" action="">
            <p>Vorname: <input name="vorname" type="text" /></p>
            <p>Nachname: <input name="nachname" type="text" /></p>

            <p><input type="hidden" name="action" value="search" />
                <input type="submit" /></p>
        </form>
    <?php endif; ?>
        
</body>

</html>

Ich kann das aber unmöglich alles erklären, tut mir Leid.

PS: Ja, zu schnelles Pushen usw. empfinde zumindest ich als extrem demotivierend.
 
Zuletzt bearbeitet:

Neueste Beiträge

Zurück
Oben