2016-05-11 13 views
0

Derzeit sende ich Fehlermeldungen und speichern den Wert meiner Eingabefelder in Sitzungen.PHP Sitzung Array und Eingabe Validierung

Formular Beispiel

<label class="errormsg"><?php echo $_SESSION['msgProductPrice']; unset($_SESSION['msgProductPrice']); ?></label> 

<input type="text" name="product_price" value="<?php echo $_SESSION['val_ProductPrice']; unset($_SESSION['val_ProductPrice']); ?>" /> 

PHP

$Price = $_POST['product_price']; 
$errorcount = 0; 

if(empty($Price) === true){ 
    $PriceErrormsg = "empty"; 
    $errorcount++; 
} 

if($errorcount === 0) { 
    // success 
} else { 
    $_SESSION['val_ProductPrice'] = $Price; 
    $_SESSION['msgProductPrice'] = $PriceErrormsg; 
} 

Das funktioniert perfekt mit einem netten Eingabefeld. Wenn ich mehrere Eingabefelder mit demselben Namen versuche, funktioniert es nicht.

Formular Beispiel

<label class="errormsg"><?php echo $_SESSION['msgProductAmount']; unset($_SESSION['msgProductAmount']); ?></label> 
<input type="text" name="product_amount[]" value="<?php echo $_SESSION['val_ProductAmount']; unset($_SESSION['val_ProductAmount']); ?>" /> 

<label class="errormsg"><?php echo $_SESSION['msgProductAmount']; unset($_SESSION['msgProductAmount']); ?></label> 
<input type="text" name="product_amount[]" value="<?php echo $_SESSION['val_ProductAmount']; unset($_SESSION['val_ProductAmount']); ?>" /> 

Dies ist, wo ich bin mir nicht sicher, wie alle Eingabefelder zu validieren, wie der Wert in jedem Eingabefeld zu halten, wenn Sie einreichen getroffen und wie ein errormsg senden über jedes Feld?

PHP

$Amount= $_POST['product_amount']; 
$errorcount = 0; 

if(empty($Amount) === true){ 
    $AmountErrormsg = "empty"; 
    $errorcount++; 
} 

if($errorcount === 0) { 
    // success 
} else { 
    $_SESSION['val_ProductAmount'] = $Amount; 
    $_SESSION['msgProductAmount'] = $AmountErrormsg; 
} 

Antwort

1

Wenn ich Ihr Problem, mehrere Produktmengen werden vorgelegt, und Sie wollen verstehen, diese einzeln zu überprüfen und die Fehlermeldung angezeigt wird neben dem entsprechenden Textfeld?

Da Sie ein Array mit Werten erhalten, müssen Sie ein entsprechendes Array von Fehlermeldungen erstellen.

Es ist eine Weile her, seit ich eine PHP gemacht habe, so könnte dies nicht 100% richtig sein, aber ich glaube, Sie etwas in dieser Richtung brauchen ...

$AmountErrorMessage = Array(); 
foreach ($Amount as $key => $value) { 
    if (empty($value)) { 
     $AmountErrorMessage[$key] = 'empty'; 
    } 
} 

if ($AmountErrorMessage->count() > 0) { 
    // success 
} else { 
    $_SESSION['val_ProductAmount'] = $Amount; 
    $_SESSION['msgProductAmount'] = $AmountErrorMessage; 
} 

Sie würden dann müssen auch iterieren Durch das Array, um den HTML-Code für Ihr Formular zu generieren, erstellen Sie ein Label und ein Eingabefeld für jeden übergebenen Wert.

+0

Jetzt zeigt es eine Fehlermeldung angezeigt, aber es sagt nur Array, das gleiche mit dem Wert in meinen Eingabefeldern ein. [Imgur] (http://imgur.com/AY0ZRw8) @UberDoodles – Simon

+0

Wenn Sie die Fehlermeldung wiederholen, müssen Sie ein bestimmtes Element aus dem Array wiedergeben. Z.B. "echo $ _SESSION ['msgProductAmount'] [0];" – UberDoodles

+0

DANKE! Jetzt funktionieren die Nachrichten: D Wie würde ich das mit dem Wert arbeiten? versucht, das gleiche zu tun, aber es funktioniert nicht? ' $ ValueProductAmount = Array(); $ AmountErrorMessage = Array(); foreach ($ Betrag als $ key => $ value) { if (empty ($ value) { $ AmountErrorMessage [$ key] = 'leer'; $ ValueProductAmount [$ value]; } } ' @ UberDoodles – Simon

0

Dieser Code Hilfe Sie es nach Ihrem Wunsch zu tun ..

<?php 
    session_start(); 
    ?>  
    <html> 
     <head> 
      <title></title>  
     <style> 
     .errormsg{ 
     color:red; 
     } 
     </style> 
     </head> 
     <body>  
     <?php 
     if(isset($_POST['product_amount'])) 
     { 
      $errorcount = 0; 
      for($i=0;$i<count($_POST['product_amount']);$i++){ 
      $Amount[$i] = $_POST['product_amount'][$i]; 

      if(empty($Amount[$i]) === true){ 
       $_SESSION['msgProductAmount'][$i] = "empty"; 
       $errorcount++; 
      } 
      else 
       $_SESSION['val_ProductAmount'][$i] = $Amount[$i]; 
      } 
      if($errorcount === 0) { 
      unset($_SESSION['msgProductAmount']); 
      echo "success"; 
      } 
     } 
     ?> 
     <form action="" method="POST"> 
     <?php 
     $cnt = 10; 
     for($i=0;$i<$cnt;$i++){ 
     ?> 
     <input type="text" name="product_amount[<?=$i?>]" value="<?php echo isset($_SESSION['val_ProductAmount'][$i]) ? $_SESSION['val_ProductAmount'][$i] : '';?>" /> 
     <label class="errormsg"><?php echo $res = isset($_SESSION['msgProductAmount'][$i]) ? $_SESSION['msgProductAmount'][$i] : '' ; ?></label> 
     <br/> 
     <?php 
     } 
     ?> 
     <input type="submit" name="submit" value="submit" /> 
     </form> 
     </body> 
     </html> 
     <?php 
     unset($_SESSION['msgProductAmount'],$_SESSION['val_ProductAmount']); 
     ?>