2017-02-27 10 views
0

mySQLからPHPが<input type="text" readonly value="' . $row[$item] . '">';を作成したリストがあります。データベーステーブルのフィールドが空の場合もあるので、入力は次のようになります。<input type="text" readonly value>';ですが、値はありません。 空の入力を削除するだけです。 私はこのコードを使用してみました:値が設定されていないときに入力を削除する

function clearEmpty(){ 
    var input = $('.plannerlist input').val(); 
    if(input < 0){ 
    $('.plannerlist input').remove(); 
    }  
} 

.plannerlistは、以下のリストである:私は上記に書いた

<ul class="plannerlist" id="plannerlist1"> 
    <input type="text" readonly value="Some value here"> 
    <input type="text" readonly value> 
    <input type="text" readonly value="or no value like above"> 
    <input type="text" readonly value> 
</ul> 

機能が全く機能していません。入力が削除されず、コンソールエラーもなくなりました... 何が問題なのですか?私のPHPのだ

(私はそれが混乱を知っているが、それは動作します;)):

<?php 
$host = "********"; 
$user = "********"; 
$pass = "********"; 
$db_name = "********"; 

//create connection 
$connection = mysqli_connect($host, $user, $pass, $db_name); 

//test if connection failed 
if(mysqli_connect_errno()){ 
die("connection failed: " 
. mysqli_connect_error() 
. " (" . mysqli_connect_errno() 
. ")"); 
} 
echo '<div id="content"> 
<form action="save.php" method="post"> 
<section class="tabcontent"> 
<ul class="plannerlist" id="plannerlist1">'; 
//get results from database 
$result = mysqli_query($connection,"SELECT FR_PM FROM anmeldungen"); 
$all_property = array(); //declare an array for saving property 

//showing property 
while ($property = mysqli_fetch_field($result)) { 
array_push($all_property, $property->name); //save those to array 
} 
echo '</tr>'; //end tr tag 

//showing all data 
while ($row = mysqli_fetch_array($result)) { 
foreach ($all_property as $item) { 
echo '<input type="text" readonly value="' . $row[$item] . '">'; //get items using property value 
} 
} 
echo '</ul> 

</section> 
<section class="tabcontent"> 
<ul class="plannerlist" id="plannerlist2">'; 
//get results from database 
$result = mysqli_query($connection,"SELECT SA_AM FROM anmeldungen"); 
$all_property = array(); //declare an array for saving property 

//showing property 
while ($property = mysqli_fetch_field($result)) { 
array_push($all_property, $property->name); //save those to array 
} 
echo '</tr>'; //end tr tag 

//showing all data 
while ($row = mysqli_fetch_array($result)) { 
foreach ($all_property as $item) { 
echo '<input type="text" readonly value="' . $row[$item] . '">'; //get items using property value 
} 
} 
echo '</ul> 
</section> 
<section class="tabcontent"> 
<ul class="plannerlist" id="plannerlist3">'; 
//get results from database 
$result = mysqli_query($connection,"SELECT SA_PM FROM anmeldungen"); 
$all_property = array(); //declare an array for saving property 

//showing property 
while ($property = mysqli_fetch_field($result)) { 
array_push($all_property, $property->name); //save those to array 
} 
echo '</tr>'; //end tr tag 

//showing all data 
while ($row = mysqli_fetch_array($result)) { 
foreach ($all_property as $item) { 
echo '<input type="text" readonly value="' . $row[$item] . '">'; //get items using property value 
} 
} 
echo '</ul> 
</section> 
<section class="tabcontent"> 
<ul class="plannerlist" id="plannerlist4">'; 
//get results from database 
$result = mysqli_query($connection,"SELECT SO_AM FROM anmeldungen"); 
$all_property = array(); //declare an array for saving property 

//showing property 
while ($property = mysqli_fetch_field($result)) { 
array_push($all_property, $property->name); //save those to array 
} 
echo '</tr>'; //end tr tag 

//showing all data 
while ($row = mysqli_fetch_array($result)) { 
foreach ($all_property as $item) { 
echo '<input type="text" readonly value="' . $row[$item] . '">'; //get items using property value 
} 
} 
echo '</ul> 
</section> 
<section class="tabcontent"> 
<ul class="plannerlist" id="plannerlist5">'; 
//get results from database 
$result = mysqli_query($connection,"SELECT SO_PM FROM anmeldungen"); 
$all_property = array(); //declare an array for saving property 

//showing property 
while ($property = mysqli_fetch_field($result)) { 
array_push($all_property, $property->name); //save those to array 
} 
echo '</tr>'; //end tr tag 

//showing all data 
while ($row = mysqli_fetch_array($result)) { 
foreach ($all_property as $item) { 
echo '<input type="text" readonly value="' . $row[$item] . '">'; //get items using property value 
} 
} 
echo '</ul> 
</section> 
<section class="tabcontent"> 
<ul class="plannerlist" id="plannerlist6">'; 
//get results from database 
$result = mysqli_query($connection,"SELECT MO_AM FROM anmeldungen"); 
$all_property = array(); //declare an array for saving property 

//showing property 
while ($property = mysqli_fetch_field($result)) { 
array_push($all_property, $property->name); //save those to array 
} 
echo '</tr>'; //end tr tag 

//showing all data 
while ($row = mysqli_fetch_array($result)) { 
foreach ($all_property as $item) { 
echo '<input type="text" readonly value="' . $row[$item] . '">'; //get items using property value 
} 
} 
echo '</ul> 
</section> 
<input name="plannersubmit" id="plannersubmit" type="submit"> 
</form> 
</div>'; 

?> 
+0

'$( 'plannerlist入力')'リストを返す 'リスト)(、あなただけの' .valすることはできません。リスト内のすべての項目を取得する必要があります。 –

+0

@VitaliiStrimbanuああ、それは本当です... –

+0

あなたの試行されたソリューションの実際の目的は何ですか?私は、javascriptで入力を取り除くよりも、これを処理する良い方法があるように感じます。あなたの解決策は、空のフィールドの回避策のように見えるので、http://xyproblem.info/を読んで質問を考えてください。 – dognose

答えて

1

//あなたのPHPでforeachをこのようにすることはできますか?

foreach ($all_property as $item) { 
if($row[$item] != NULL || $row[$item] != '') 
{ 
    echo '<input type="text" readonly value="' . $row[$item] . '">'; 
} 

}

+0

'&&' - それは 'and'でなければなりません。 '($ x!= null || $ x!= '') 'は常に' true'なので、 'NULL'と' ''を同時に指定することはできません。 :-) – dognose

+0

ありがとうございましたGian!完璧に動作します。 @dognoseあなたのコメントで何を意味しますか?それは私のようにそのように働く。 –

+0

@TobiasGlaus問題を説明するのは難しいです:PHPは '!='のみを使っているときに、いくつかの "自動マジック"レンダリングを '' 'と ''ヌル ''と同等にします。したがって、たとえブール言語では正しくないとしても、これは機能します。このスニペットを参照してください:https://3v4l.org/Mre2U 'OR'との厳密な比較ではなく、厳密な比較を「AND」と共に行うケースが正しい解決策になります。考えてみましょう:あなたが要素を '隠す 'ようにしたい場合それはどちらも空ではない - 空である - したがって、あなたは2つの条件をチェックする必要があるので、" AND "が必要です。 PHPが "魔法"をしないと、いつでもコンテンツが表示されます(1/2) – dognose

1

$('.plannerlist input')は、入力の配列を返します。

これをループして、要素を見つける必要があります。val() == ''です。

var inputs = $('.plannerlist input'); 
for (var i = 0; i < inputs.length; i++) { 
    var input = inputs[i]; 
    if ($(input).val() == '') { 
     $(input).remove(); 
    } 
} 
+0

あなたの答えをありがとう。それは残念なことに私のためにもうまくいきません:/ –

+0

私はちょうどそれに気づいた。私はそれを修正しました。それは今働きますか? –

+0

いいえ、それはありません:/私は最初の変数入力を定義する必要がありますか? ( 'var inputs = $( '。plannerlist input').val();') –

関連する問題