2013-06-28 7 views
0

Проблема в том, что при отображении второй формы проверка не выполняется так, как мне нужно. Независимо от того, у меня есть значение или нет в TextBoxEntry Я получаю сообщение Saved. В идеале, если текстовое поле не пустое, то только я должен иметь сообщение Saved, но даже если у меня ничего нет, я получаю сообщение SavedПроверка значений массива динамических текстовых полей в PHP

Может ли кто-нибудь помочь?

Благодаря

Вот код:

<?php 
SESSION_start(); 
include ("../connection/index.php"); 
?> 

<!DOCTYPE html> 
<html> 
<head><title></title> 
</head> 
<body> 
<div id="One"> 
     <form name="form1" method="post" action=""> 

     <?php 
     $SQLbrands="SELECT * FROM brands"; 
     $runBrands=mysqli_query($db, $SQLbrands) or die ("SQL Error"); 
     $noRow=mysqli_num_rows($runBrands); 
     $brndTable = "<table border='1' cellspacing='0' cellpadding='1' id='brndTable1' class='brndTable1'>"; 
     $brndTable .= "<thead><tr><th class='brT11'>Brand Name</th><th class='brT21'>Variant</th><th class='brT31'>SKU</th><th class='brT41'></th></tr></thead>"; 
     $brndTable .= "<tbody>"; 
     while ($reK = mysqli_fetch_array($runBrands)) 
     { 
      $wec = $reK['id']; $wec2 = $reK['bvariant']; $wec3 = $reK['bsku']; 
      $brndTable .= "<tbody class='colormine'><tr>"; 
      $brndTable .= "<td class='brT1'>".$reK["name"]."</td>"; 
      $brndTable .= "<td class='brT2'>".$reK["address"]."</td>"; 
      $brndTable .= "<td class='brT3'>".$reK["tphone"]."</td>"; 
      $brndTable .= "<td class='brT4'><input type='checkbox' name='checkedMe[]' value='$wec' /></td>"; 
      $brndTable .= "</tr>"; 
     } 
     $brndTable .= "</tbody>"; 
     $brndTable .= "</table>"; 


     echo $brndTable; 
     ?> 

     <input type="submit" name="sendone" id="sendone" value="OneClick"> 
     </form> 
</div> 

<div id="two"> 
     <?php 

      if(isset($_POST['sendone'])) 
      { if(!isset($_POST['checkedMe'])) 
       {echo 'No check boxes are selected!'; return;} else 
       { 
       $mohan = "<form method='post' action=''><table border='1' id='myTad' cellspacing='0' cellpadding='2'> 
        <tr class='tabColor'> 
        <td>Name</td> 
        <td>Address</td> 
        <td>Phone</td> 
        </tr>"; 
       foreach($_POST['checkedMe'] as $checkedMe) 
          { 
           $checkedMe=mysqli_real_escape_string($db,$checkedMe); 
           $QR = "SELECT bname, bvariant, bsku FROM brands WHERE id='$checkedMe'"; 
           $rr = mysqli_query($db,$QR) or die ("SQL Error"); 
           $roV = mysqli_num_rows($rr); 
           $rr = $rr->fetch_assoc(); 

           $mohan .= "<tr class='sc_eght' ><td class='sc_five'>".$rr['bname']." ".$rr['bvariant']." ".$rr['bsku']; 
           $mohan .="</td> 
            <td><textarea style='width:80px;' name='schema[]' id='vtext' class='sc_one' rows='1' cols='1' maxlength='100'></textarea></td> 
            <td><input style='width:80px;' type='text' name='TextBoxEntry[]' id='vtext' class='sc_two' size='80' maxlength='5'></td> 
            </tr>"; 

          } 
           $mohan .= "<input type='submit' name='sendMe' id='sendMe' value='Save'></table></form>"; 
           $_SESSION['cb'] = $mohan; } 

           if(isset($_SESSION['cb'])) 
           echo $_SESSION['cb']; 
      } 


     if(isset($_POST['sendMe'])) 
     { 
      if(!(isset($_POST['TextBoxEntry']) || $_POST['TextBoxEntry'] == '')) 
      {echo $_SESSION['cb']; echo "Empty!"; return;} else { echo $_SESSION['cb']; echo "Saved!"; return;} 
     } 

      ?> 
</div> 
</body> 
</html> 

ответ

0

изменение if(!(isset($_POST['TextBoxEntry']) || $_POST['TextBoxEntry'] == ''))

в

if(!isset($_POST['TextBoxEntry']) || $_POST['TextBoxEntry'] == '')

+0

infact У меня было ваше предложение раньше, но все же я думаю, что проблема в другом месте. –

+0

@JohnEnglish это утверждение неверно. Сделайте то, что сказал drarkayl. – Carlos

+0

@jackflash Спасибо, человек! Это изменится. Однако проблема все еще сохраняется –

0

Попробуйте

if(empty($_POST['TextBoxEntry'])) 
    { 
     echo $_SESSION['cb']; 
     echo "Empty!"; 
    } else { 
     echo $_SESSION['cb']; 
     echo "Saved!"; 
    } 

Я просто понял, что «TextBoxEntry» - это массив. Надеюсь, что это поможет.

Cheers !!

+0

Если $ foo == '', тогда пуст ($ foo) === true. Когда-либо. – Carlos

+0

ну, я просто понял, что «TextBoxEntry» - это массив –

+0

, есть ли дополнительная скобка на вашей первой строке? Да, это массив. Поэтому, когда в массиве это не работает. это? –

0

if(!(isset($_POST['TextBoxEntry']) || $_POST['TextBoxEntry'] == '')) равно if(!isset($_POST['TextBoxEntry'] && $_POST['TextBoxEntry'] != ''), но вы должны изменить его на

if(!isset($_POST['TextBoxEntry'] || $_POST['TextBoxEntry'] == '') 

Другое дело, я не думаю, что вам нужно return заявление в своем коде.

+0

TextBoxEntry - это массив! этот метод не работает @ Moein7tl –

0

Вместо этой строки кода

if(!(isset($_POST['TextBoxEntry']) || $_POST['TextBoxEntry'] == '')) 

вы должны иметь это один

if((!(isset($_POST['TextBoxEntry'])) || $_POST['TextBoxEntry'] == '')) 

, потому что, когда вы были вы код, программа взяла отрицание всех условий. Поэтому вам нужно другое(), чтобы сохранить отрицание только для первой части.

Просто попробуйте эту штуку. Надеюсь, что это работает!

Смежные вопросы