Array Variablen

mkoeni1

Erfahrenes Mitglied
Hallo Leute,

ich habe ein Problem an meinem Formular. Ich habe als name ein Array definiert. Will ich mir dieses aber ausgeben, steht nichts darin.

Quelltext:
PHP:
<form name="anmeldung" method="POST" action="anmelden.php" id="anmelden">
<tr>
<td>
Name, Vorname</td>
<td><input type="text" name="name[]" size="15" maxlength="17" style="width:120px; padding: 2px 7px 2px 7px; font-size: 11px;" onFocus="style.backgroundColor = '#FFC'; " onblur="style.backgroundColor = '#FFF'"></td>
</tr>
<tr>
    <td>zus&auml;tzliche Person(en):</td>
    <td>
        <select name="wieviel" size="1" style="width:80px; padding: 2px 7px 2px 7px; font-size: 11px;" onFocus="style.backgroundColor = '#FFC';" onblur="style.backgroundColor = '#FFF'" onchange="document.anmeldung.submit();">
            <option value="0" <?php if($_POST['wieviel'] ==  '1'){ ?> selected <?php } ?>>keine</option>
      <option value="1" <?php if($_POST['wieviel'] ==  '1'){ ?> selected <?php } ?>>1</option>
      <option value="2" <?php if($_POST['wieviel'] ==  '2'){ ?> selected <?php } ?>>2</option>    
      <option value="3" <?php if($_POST['wieviel'] ==  '3'){ ?> selected <?php } ?>>3</option>
      <option value="4" <?php if($_POST['wieviel'] ==  '4'){ ?> selected <?php } ?>>4</option>
      <option value="5" <?php if($_POST['wieviel'] ==  '5'){ ?> selected <?php } ?>>5</option>
            <option value="6" <?php if($_POST['wieviel'] ==  '6'){ ?> selected <?php } ?>>6</option>
    </select> 
    </td>
</tr>
<tr>
<?php 
    switch($_POST['wieviel']){

    case 0:
    echo '<td colspan="2">&nbsp;</td></tr>';
    break;

    case 1:
    echo "<tr bgcolor=".$c."><td>Name, Vorname</td>";
    echo "<td><input type=\"text\" name=\"name[]\" size=\"15\" maxlength=\"17\" style=\"width:120px; padding: 2px 7px 2px 7px; font-size: 11px;\" onFocus=\"style.backgroundColor = '#FFC'; \" onblur=\"style.backgroundColor = '#FFF'\"></td></tr>";
    break;

    case 2: case 3: case 4: case 5: case 6:
    for($i=0; $i < $_POST['wieviel']; $i++){
            switch($i){
                case 0:
                case 2:
                case 4:
                case 6:
                    echo "<tr bgcolor=".$c."><td>Name, Vorname</td>";
                    echo "<td><input type=\"text\" name=\"name[]\" size=\"15\" maxlength=\"17\" style=\"width:120px; padding: 2px 7px 2px 7px; font-size: 11px;\" onFocus=\"style.backgroundColor = '#FFC'; \" onblur=\"style.backgroundColor = '#FFF'\"></td></tr>";

                break;
                case 1: case 3: case 5:
                    echo "<tr><td>Name, Vorname</td>";
                    echo "<td><input type=\"text\" name=\"name[]\" size=\"15\" maxlength=\"17\" style=\"width:120px; padding: 2px 7px 2px 7px; font-size: 11px;\" onFocus=\"style.backgroundColor = '#FFC'; \" onblur=\"style.backgroundColor = '#FFF'\"></td></tr>";
                 break;
                }
    }
    break;


    default:
    echo '<td colspan="2">&nbsp;</td></tr>';
}
?>
    
    <tr>
        <td></td>
        <td><textarea name="detail" size="15" maxlength="17" style="width:120px; padding: 2px 7px 2px 7px; font-size: 11px;" onFocus="style.backgroundColor = '#FFC'; " onblur="style.backgroundColor = '#FFF'">Hinweis an uns</textarea>
        </td>
    </tr>
    <tr>
        <td>&nbsp;</td><td><input type="submit" name="sending" value="Abschicken" onFocus="style.backgroundColor = '#FFC'; style.color = 'black';" onblur="style.backgroundColor = '#FFF'; style.color = '#777777';">
        </td>
    </tr></table>
</form>

wenn ich mir die Array Variable ausgeben lassen will:
PHP:
var_dump(name);

steht nur string(4) "name" im Browser.


Danke und Gruß
Matze
 
Zuletzt bearbeitet:
Da dein Array ebenfalls über dein Formular übermittelt wird, solltest du es auch richtig ansprechen.

PHP:
var_dump($_POST['name']);

Es wird ein numerischer Array erzeugt von 0 - (Feldanzahl - 1)

Um einzelnd anzusprechen also:
PHP:
echo $_POST['name']['0'];
 
Hallo,

das sieht doch schon viel besser aus. Ich probiere das heute Abend mal aus.

Vielen Dank fürs erste

ich kann ich auf das array problemlos zugreifen

Vielen Dank
Matze
 
Zuletzt bearbeitet:
Hallo,

ich habe noch ein weiteres Problem mit dem validieren der Eingaben. Das mache ich mit JavaScript:
PHP:
<script language="JavaScript">
// Funktion Formular Eingaben auf dem Client pruefen
function check_login(){

  var fFelder = new Array(7);
for (var i = 0; i < fFelder.length; ++i){
  fFelder[i] = document.forms['anmeldung'].elements[i].value;
}
  // Vorsicht: Fuehrende Leerzeichen aus dem Bentzernamen entfernen
  // benutzer ueberpruefen ob gesetzt ist
for (var j = 0; j <= 7; ++j){
  if(fFelder[j] == ""){
    window.document.forms['anmeldung'].elements[j].focus();
    document.forms['anmeldung'].elements[j].value = "Bitte einen Namen eingeben";
    document.forms['anmeldung'].elements[j].value;
    return false;
  }
    }
} // Ende Funktion Formular Eingaben auf dem Client pruefen
  //-->


Im Case 0,1,2 wird aber aus irgendeinem Grund nicht validiert.
PHP:
<form name="anmeldung" method="POST" action="anmelden.php" id="anmelden" onSubmit="return check_login()">
<tr>
<td>
Name, Vorname</td>
<td><input type="text" name="name[]" size="15" maxlength="17" style="width:120px; padding: 2px 7px 2px 7px; font-size: 11px;" onFocus="style.backgroundColor = '#FFC'; document.forms['anmeldung'].elements[0].value = ''" onblur="style.backgroundColor = '#FFF'"></td>
</tr>
<tr>
    <td>zus&auml;tzliche Person(en):</td>
    <td>
        <select name="wieviel" size="1" style="width:80px; padding: 2px 7px 2px 7px; font-size: 11px;" onFocus="style.backgroundColor = '#FFC';" onblur="style.backgroundColor = '#FFF'" onchange="document.anmeldung.submit();">
            <option value="0" <?php if($_POST['wieviel'] ==  '0'){ ?> selected <?php } ?>>keine</option>
      <option value="1" <?php if($_POST['wieviel'] ==  '1'){ ?> selected <?php } ?>>1</option>
      <option value="2" <?php if($_POST['wieviel'] ==  '2'){ ?> selected <?php } ?>>2</option>    
      <option value="3" <?php if($_POST['wieviel'] ==  '3'){ ?> selected <?php } ?>>3</option>
      <option value="4" <?php if($_POST['wieviel'] ==  '4'){ ?> selected <?php } ?>>4</option>
      <option value="5" <?php if($_POST['wieviel'] ==  '5'){ ?> selected <?php } ?>>5</option>
            <option value="6" <?php if($_POST['wieviel'] ==  '6'){ ?> selected <?php } ?>>6</option>
    </select> 
    </td>
</tr>
<tr>
<?php 
    switch($_POST['wieviel']){

    case 0:
    echo '<td colspan="2">&nbsp;</td></tr>';
    break;

    case 1:
    echo "<tr bgcolor=".$c."><td>Name, Vorname</td>";
    echo "<td><input type=\"text\" name=\"name[]\" size=\"15\" maxlength=\"17\" style=\"width:120px; padding: 2px 7px 2px 7px; font-size: 11px;\" onFocus=\"style.backgroundColor = '#FFC'; \" onblur=\"style.backgroundColor = '#FFF'\"></td></tr>";
    break;

    case 2: case 3: case 4: case 5: case 6:
    for($i=0; $i < $_POST['wieviel']; $i++){
            switch($i){
                case 0:
                case 2:
                case 4:
                case 6:
                    echo "<tr bgcolor=".$c."><td>Name, Vorname</td>";
                    echo "<td><input type=\"text\" name=\"name[]\" size=\"15\" maxlength=\"17\" style=\"width:120px; padding: 2px 7px 2px 7px; font-size: 11px;\" onFocus=\"style.backgroundColor = '#FFC'; \" onblur=\"style.backgroundColor = '#FFF'\"></td></tr>";
                break;

                case 1: case 3: case 5:
                    echo "<tr><td>Name, Vorname</td>";
                    echo "<td><input type=\"text\" name=\"name[]\" size=\"15\" maxlength=\"17\" style=\"width:120px; padding: 2px 7px 2px 7px; font-size: 11px;\" onFocus=\"style.backgroundColor = '#FFC'; \" onblur=\"style.backgroundColor = '#FFF'\"></td></tr>";
                 break;
                }
    }
    break;


    default:
    echo '<td colspan="2">&nbsp;</td></tr>';
}
?>
    
    <tr>
        <td></td>
        <td><textarea name="detail" size="15" maxlength="17" style="width:120px; padding: 2px 7px 2px 7px; font-size: 11px;" onFocus="style.backgroundColor = '#FFC'; " onblur="style.backgroundColor = '#FFF'">Hinweis an uns</textarea>
        </td>
    </tr>
    <tr>
        <td>&nbsp;</td><td><input type="submit" name="sending" value="Abschicken" onFocus="style.backgroundColor = '#FFC'; style.color = 'black';" onblur="style.backgroundColor = '#FFF'; style.color = '#777777';">
        </td>
    </tr></table>
</form>
</body>

Kann mir jemand sagen wo hier mein Denkfehler liegt?

Vielen Dank und Gruß
Matze
 
Also wenn du den case bei deiner PHP switch Anweisung meinst, dann müsste case 3-6 ja auch nicht gehen und nur der default, was dann an einem falschen wert in der Post Variable 'wieviele' zurück zuführen ist.

Und
PHP:
<option value="4" <?php if($_POST['wieviel'] ==  '4'){ ?> selected <?php } ?>

wäre so besser
PHP:
<option value="4" <?php if($_POST['wieviel'] ==  '4') echo 'selected'; ?>
 
ich habe noch ein weiteres Problem mit dem validieren der Eingaben. Das mache ich mit javascript:

Also Valdierung per Javascripte kanste gleich mal wieder vergessen birng nähmlich genau null. Das kann so leicht von jeden 2 User umgangen werden so als hätte man keine Validierung.
Macht das lieber über php ist sicherer.

Im Case 0,1,2 wird aber aus irgendeinem Grund nicht validiert.

Im Case selbst führt du überhaupt gar keine Valdierung durch ledlich eine Ausgabe. Dazu solltes du bedenken das beim ersten Aufruf des Formular kein Post wert vorhanden ist.Daher wird dann der default wert ausgeführt.

PHP:
switch($_POST['wieviel']){

    case 0:
    echo '<td colspan="2">&nbsp;</td></tr>';
    break;

    case 1:
    echo "<tr bgcolor=".$c."><td>Name, Vorname</td>";
    echo "<td><input type=\"text\" name=\"name[]\" size=\"15\" maxlength=\"17\" style=\"width:120px; padding: 2px 7px 2px 7px; font-size: 11px;\" onFocus=\"style.backgroundColor = '#FFC'; \" onblur=\"style.backgroundColor = '#FFF'\"></td></tr>";
    break;
	
    case 2: case 3: case 4: case 5: case 6:
    for($i=0; $i < $_POST['wieviel']; $i++){
            switch($i){
                case 0:
                case 2:
                case 4:
                case 6:
                    echo "<tr bgcolor=".$c."><td>Name, Vorname</td>";
                    echo "<td><input type=\"text\" name=\"name[]\" size=\"15\" maxlength=\"17\" style=\"width:120px; padding: 2px 7px 2px 7px; font-size: 11px;\" onFocus=\"style.backgroundColor = '#FFC'; \" onblur=\"style.backgroundColor = '#FFF'\"></td></tr>";

                break;
                case 1: case 3: case 5:
                    echo "<tr><td>Name, Vorname</td>";
                    echo "<td><input type=\"text\" name=\"name[]\" size=\"15\" maxlength=\"17\" style=\"width:120px; padding: 2px 7px 2px 7px; font-size: 11px;\" onFocus=\"style.backgroundColor = '#FFC'; \" onblur=\"style.backgroundColor = '#FFF'\"></td></tr>";
                 break;
                } }
    
    break;
   
    default:
          echo '<td colspan="2">&nbsp;</td></tr>';
		    
};

Alternative statt: case 2: case 3: case 4: case 5: case 6:
kanst du auch das so schreiben
case ($_POST['wieviel'] >1 && $_POST['wieviel']<=6):

Würde dann in deinen Code so aussehen:

PHP:
switch($_POST['wieviel']){

    case 0:
    echo '<td colspan="2">&nbsp;</td></tr>';
    break;

    case 1:
    echo "<tr bgcolor=".$c."><td>Name, Vorname</td>";
    echo "<td><input type=\"text\" name=\"name[]\" size=\"15\" maxlength=\"17\" style=\"width:120px; padding: 2px 7px 2px 7px; font-size: 11px;\" onFocus=\"style.backgroundColor = '#FFC'; \" onblur=\"style.backgroundColor = '#FFF'\"></td></tr>";
    break;
	
    case ($_POST['wieviel'] >1 && $_POST['wieviel']<=6):
    for($i=0; $i < $_POST['wieviel']; $i++){
            switch($i){
                case($_POST['wieviel']==1 || $_POST['wieviel']==3 || $_POST['wieviel']==5 ):
                    echo "<tr><td>Name, Vorname</td>";
                    echo "<td><input type=\"text\" name=\"name[]\" size=\"15\" maxlength=\"17\" style=\"width:120px; padding: 2px 7px 2px 7px; font-size: 11px;\" onFocus=\"style.backgroundColor = '#FFC'; \" onblur=\"style.backgroundColor = '#FFF'\"></td></tr>";
                break;
                default:
                	echo "<tr bgcolor=".$c."><td>Name, Vorname</td>";
                    echo "<td><input type=\"text\" name=\"name[]\" size=\"15\" maxlength=\"17\" style=\"width:120px; padding: 2px 7px 2px 7px; font-size: 11px;\" onFocus=\"style.backgroundColor = '#FFC'; \" onblur=\"style.backgroundColor = '#FFF'\"></td></tr>";
 				break;
                } }
    
    break;
   
    default:
		echo '<td colspan="2">&nbsp;</td></tr>';
		    
};

Mfg Splasch
 
Zuletzt bearbeitet:
Zurück