質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

3回答

1114閲覧

特定行の削除

eatomochi

総合スコア8

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/08/17 03:05

編集2016/08/17 04:37

###前提・実現したいこと
特定行削除したい。

###発生している問題・エラーメッセージ

エラーはとくにありませんが1行目しか消えない状態です。
また、色々試していますが、連続チェックだと消せたり
1行目3行目と飛んでチェックつけると消えません。

###該当のソースコード

PHP

1for($i=0; $i<count($this->request['a']); $i++) 2 3if($this->request['a'][$i]== "ok")

###試したこと
html側のvalueは「"ok"」になってます。

###補足情報(言語/FW/ツール等のバージョンなど)
初心者で情報不足でしたら申し訳ありません。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2016/08/17 06:52

回答が付いた質問の編集は慎重に行ってください。回答でタイプミスについての指摘がある場合は「直したこと」がわかるようにしてください。
guest

回答3

0

ところで、

for($i=0; $i<count($this->request['checkbox']); $i++)

の意味は、理解されていますか?

プログラムが一部だけなので、推測部分が多いですが、count($this->request['checkbox']) は、チェックをつけた数しか返さないと思います。

この for ループでは、データの先頭から、チェックボックスをチェックした数しかループ処理されません。

例えば、チェックボックスが、5行あったとして、1行目と5行目に チェックした場合、チェックが2個なので、1行目と2行目しかループで、処理されません。

count の部分を 「全行のデータがある項目」にしたら、想定する動作をするようになると思います。

投稿2016/08/17 03:51

CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

eatomochi

2016/08/17 04:39

ご回答頂きありがとうございます。 ご指摘の通り$this->request['checkbox']の部分が違っていたようです・・・ こちらを修正すると無事思い通りの動きになりました。 丁寧にご説明いただきありがとうございました。
guest

0

ここのif文が正しく処理されていないような気がします。

PHP

1if(false == $rs = mysql_query($sql))

このようにしたらどうでしょうか?

PHP

1$rs = mysql_query($sql); 2if($rs === FALSE){

投稿2016/08/17 03:53

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ぱっとみて思ったことは、$i++の位置正しいでしょうか?
for文が繰りかえす度に1ずつ増えるようにしているのに、最初のifに入った時にさらに増えるということになっているので、チェックによって動きが安定しないのかなと思いました。

言いたいことは以下の通りです。

PHP

1//ここの$i++でforが1回まわるたびにiが増える設定をしている 2for($i=0; $i<count($this->request['checkbox']); $i++) 3 { 4 5 if($this->request['checkbox'][$i]== "ok") 6 { 7 8 $sql = "DELETE 9 FROM 10 YASAI 11 WHERE 12 kyuuri='".$this->request['kyuuri'][$i]."';"; 13 14               //ここの書き方も気になる・・・これ大丈夫ですかね?? 15 if(false == $rs = mysql_query($sql)) 16 { 17 return false; 18 } 19      //ここでさらにiが+1される(最初のifでtrueの時のみ増える)のでいらない?? 20 $i++; 21 }

よって、まずは下の方の$i++を削除してみて動きを確認してみてはいかがでしょうか。
参考になれば幸いです!

投稿2016/08/17 03:37

編集2016/08/17 03:57
SASAHARA

総合スコア247

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

eatomochi

2016/08/17 04:38

ご回答頂きありがとうございます。 書き直しました。また$i++も削除行いました。 ご指摘ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問