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

Durchlaufen von Mehrdimensionalen Arrays

Pah, ich habe das jetzt nicht umsonst getippt. ;)

PHP:
<?php

$var = 'foo';

$array = array(
    $var => array(
        'wert1' => 'wert2'
    )
);

foreach ($array as $key => $value) {
    echo $key . "\n";

    foreach ($value as $innerKey => $innerValue) {
        echo "\t" . $innerKey . ': ' . $innerValue . "\n";
    }
}

Ausgabe:

Code:
foo
	wert1: wert2
 
Okay, dann hatte ich es fast richtig. So dann ensteht nun ein weiteres Problem.
PHP:
$pflichtfelder = array(
    $name                => array('name'                =>'Name'),
    $vorname            => array('vorname'            =>'Vorname'),
    $geschlecht            => array('geschlecht'        =>'Geschlecht'),
    $birth                => array('birth'            =>'Geburtstag'),
    $verein                => array('verein'            =>'Verein'),
    $vereinsposition    => array('vereinsposition'    =>'Vereinsposition'),
    $strasse            => array('strasse'            =>'Stra&szlig;e'),
    $hausnummer            => array('hausnummer'        =>'Hausnummer'),
    $plz                => array('plz'                =>'PLZ'),
    $ort                => array('ort'                =>'Ort'),
    $email                => array('email'            =>'E-Mail'),
    $kfs                => array('kfs'                =>'Kreisfachschaft')
);
echo "<div align=\"center\" width=\"50%\"><ul>";
foreach($pflichtfelder as $aarray => $barray){
    foreach($barray as $inhalt => $var){
        if(!filter_has_var(INPUT_POST, "'$inhalt'")){
            echo "<li>$var-Quelle existiert nicht.</li>";
            $error = true;
        }
        echo $aarray ." - ". $inhalt ." - ". $var;
        if($var == "email"){
            $email = preg_replace('((?:\n|\r|\t|%0A|%0D|%08|%09)+)i', '', $email);
            $email = filter_var($email, FILTER_SANITIZE_EMAIL);
        }
        echo $email;
    }
}
Es werden willkürliche Array-Elemente ausgegeben. :-(

MfG Marcel
 
Beschreib mal bitte in Prosa (oder mehr Code), was du da erreichen möchtest. Und beschreib, was die Funktionen, Konstanten und Variablen erledigen, die nicht sichtbar definiert sind.
 
Die Variable in array $pflichtfelder sind die _POST übergeben Variablen aus einem Formular. im unterarray ist der 1. Wert der name des Input-feldes <input name="1. Wert im unterarray"> und der 2. Die Bezeichnung dafür.
PHP:
<form action="index.php?action=add" method="post">
    <center>
        <table width="50%">
            <tr>
                <td>Name: *</td>
                <td>
                    <input type="text" name="name" />
                </td>
               </tr>
            <tr>
                <td>Vorname: *</td>
                <td>
                    <input type="text" name="vorname" />
                </td>
            </tr>
            <tr>
                <td>Geschlecht: *</td>
                <td>
                       <?php
                    echo '<select name="geschlecht">';
                      foreach ($geschlecht as $eintrag){
                        echo '<option value="'.$eintrag.'">'.$eintrag.''."\n";
                    }
                     echo '</select>'; 
                     ?>
                </td>
            </tr>
            <tr>
                <td>Stra&szlig;e: *</td>
                <td>
                       <input type="text" name="strasse" />
                </td>
            </tr>
            <tr>
                <td>Hausnummer: *</td>
                <td>
                       <input type="text" name="hausnummer" size="3" />
                </td>
            </tr>
            <tr>
                <td>PLZ: *</td>
                <td>
                       <input type="text" name="plz" size="5" maxlength="5" />
                </td>
            </tr>
            <tr>
                <td>Ort: *</td>
                <td>
                       <input type="text" name="ort" />
                </td>
            </tr>
            <tr>
                <td>E-Mail: *</td>
                <td>
                       <input type="text" name="email" />
                </td>
            </tr>
            <tr>
                <td>Geburtstag: *</td>
                <td>
                       <input type="text" name="birth" />&nbsp;&nbsp;<small>Format: 01.01.1900</small>
                </td>
            </tr>
             <tr>
                <td>Verein: *</td>
                <td>
                       <?php
                        echo '<select name="verein" size="1">';
                         sort($verein);
                        foreach ($verein as $eintrag){
                            echo '<option value="'.$eintrag.'">'.$eintrag.''."\n";
                        }
                        echo '</select>';
                    ?>
                </td>
            </tr>
             <tr>
                <td>Vereinsposition: *</td>
                <td>
                       <?php
                        echo '<select name="vereinsposition" size="1">';
                        foreach($vereinsposition as $eintrag){
                            echo '<option value="'.$eintrag.'">'.$eintrag.''."\n";
                        }
                        echo '</select>';
                    ?>
                </td>
            </tr>
             <tr>
                <td>Kfs-Mitglied: *</td>
                <td>
                       <?php
                        echo '<select name="kfs" size="1">';
                        foreach($kfs as $vor => $eintrag){
                            echo '<option id=\"kfs\" value="'.$vor.'">'.$eintrag.''."\n";
                        }
                        echo '</select>';
                    ?>
                </td>
            </tr>
            <div id="kfs_ja" style="display:none">Hy
            </div>
            <tr id="kfs_ja" style="display:none">
                <td>Kfs-Position:</td>
                <td>
                    <?php
                        echo '<select name="kfs_position" size="1">';
                        foreach($kfs_position as $eintrag){
                            echo '<option value="'.$eintrag.'">'.$eintrag.''."\n";
                        }
                        echo '</select>';
                    ?>
                </td>
            </tr>
            <tr>
                <td>Telefon (privat):</td>
                <td>
                       <input type="text" name="tel_p" />
                </td>
            </tr>
            <tr>
                <td>Telefon (dienstlich):</td>
                <td>
                       <input type="text" name="tel_d" />
                </td>
            </tr>
            <tr>
                <td>Handy (privat):</td>
                <td>
                       <input type="text" name="ha_p" />
                </td>
            </tr>
            <tr>
                <td>Handy (dienstlich):</td>
                <td>
                       <input type="text" name="ha_d" />
                </td>
            </tr>
            <tr>
                <td>Fax (privat):</td>
                <td>
                       <input type="text" name="fax_p" />
                </td>
            </tr>
            <tr>
                <td>Fax (privat):</td>
                <td>
                       <input type="text" name="fax_d" />
                </td>
            </tr>
            <tr>
                <td>Homepage (privat):</td>
                <td>
                       <input type="text" name="url_p" value="http://" />
                </td>
            </tr>
            <tr>
                <td>Homepage (dienstlich):</td>
                <td>
                       <input type="text" name="url_d" value="http://" />
                </td>
            </tr>
            <tr>
                <td>Homepage (Verein):</td>
                <td>
                       <input type="text" name="url_v" value="http://" />
                </td>
            </tr>
            <tr>
                <td colspan="2" align="center">
                    <input type="submit" name="submit" value="speichern">
                </td>
            </tr>
dies da.
Und es soll Überprüft werden ob alle Formularfelder (anhand des ersten Wertes im Unterarray)ausgefüllt wurden. Wenn nein, soll die Bezeichnung ausgegeben werden, welche fehlt.

Oje ist das kompliziert zu erklären ^^

MfG Marcel
 
Du denkst da glaube ich etwas zu kompliziert.

PHP:
<?php

// Testdaten
$_POST = array(
    'name'            => 'Meyer',
    //'vorname'         => 'Hubert',
    'geschlecht'      => 'm',
    'birth'           => '1972-10-25',
    'verein'          => 'City Name Sports Team',
    //'vereinsposition' => 'Praesident',
    'strasse'         => 'An der Kerbe',
    'hausnummer'      => '9a',
    'plz'             => '55555',
    //'ort'             => 'Bieberach an der Rinse',
    'email'           => '[email protected]',
    'kfs'             => 'Nordwest'
);

$pflichtfelder = array(
    'name'            =>'Name',
    'vorname'         =>'Vorname',
    'geschlecht'      =>'Geschlecht',
    'birth'           =>'Geburtstag',
    'verein'          =>'Verein',
    'vereinsposition' =>'Vereinsposition',
    'strasse'         =>'Stra&szlig;e',
    'hausnummer'      =>'Hausnummer',
    'plz'             =>'PLZ',
    'ort'             =>'Ort',
    'email'           =>'E-Mail',
    'kfs'             =>'Kreisfachschaft'
);

$missing = array();

// Wenn Formular abgeschickt, dann...

$keys = array_keys($pflichtfelder);

foreach ($keys as $key) {
    if (!isset($_POST[$key]) || trim($_POST[$key] == '')) {
        $missing[] = $key;
    }
}

// ...wenn ende

?>


<?php
if (count($missing) > 0) :
?>
<div class="something">
<?php
    foreach ($missing as $key) :
?>
    <p>Feld "<?php echo $pflichtfelder[$key]; ?>" nicht gesetzt.</p>
<?php
    endforeach;
?>
</div>
<?php
endif;
?>
 
Zurück
Oben