213行目から227行目までを以下に置き換えてください。
PHP
1 break;
2 }
3 if(!$_POST['command'] == 'search'){
4 $sql = $pdo->query('select * from words order by id desc');
5 }
6 foreach ($sql->fetchAll() as $row){
7 echo '<tr>';
8// echo '<td width="30" height="35" align="center" width="110" height="35">', h($row['id']), '</td>';
9 echo '<td class="font3"><b>', h($row['word']), '</b></td>';
10 echo '<td width="150" class="font3">', h($row['sense']), '</td>';
11 echo '<td width="150" class="font3">', h($row['memo']), '</td>';
12 echo '</tr>';
13 echo "\n";
14 }
1つ1つツッコミます。
もとのコードの213〜215行目
PHP
1 foreach ($sql->fetchAll() as $row){
2 break;
3 }
おそらく直前の処理を見るに、このfetchAllで得られる行は「検索対象としてひっかかった行」のはずです。それを画面にechoで出すはずが、for文の頭でいきなりbreakしているのでこのforは即終了です。それどころか215行目でforが閉じられているので、breakを消しても空ループが回るだけでなにも起きません。
breakはswitchにも使いますが、forやforeachにも使います。そして、優先されるのはそのbreakが書かれた場所に一番近いものです。つまり、switchを抜けるのではなくforeachを抜けます。
もとのコードの216行目
PHP
1if(isset($_POST['command']) && !$_POST['command'] == 'search'){
すでにこのswitch文に入る前に$_POSTの存在チェック、commandの有無がチェック済みであるため、searchでないことを確認するだけで済みます。
もとのコードの217行目
PHP
1 echo "foreach ($pdo->query('select * from words order by id desc') as $row){";
なぜPHPコードをechoで画面に出そうとしたのですか?おそらくsearchでないときは全件表示したいから、trの出力部分をsearchでないときだけやりたい、ということなのでしょうが、そんな書き方はできません。226行目のあたりも同じです。
新しいコードの解説
まずswitch内のsearchの処理は$sqlを得るだけでfetchAllせずにbreakで抜けます。こうすることで以後の処理に$sqlを持ち越すことができます。
PHP
1 if(!$_POST['command'] == 'search'){
2 $sql = $pdo->query('select * from words order by id desc');
3 }
searchでないときだけ、$pdo->queryで全件検索する結果を$sqlに入れます。これで、searchのときは絞り込み結果、そうでないときは全件のデータが$sqlに入ることになります。
PHP
1 foreach ($sql->fetchAll() as $row){
2 echo '<tr>';
3// echo '<td width="30" height="35" align="center" width="110" height="35">', h($row['id']), '</td>';
4 echo '<td class="font3"><b>', h($row['word']), '</b></td>';
5 echo '<td width="150" class="font3">', h($row['sense']), '</td>';
6 echo '<td width="150" class="font3">', h($row['memo']), '</td>';
7 echo '</tr>';
8 echo "\n";
9 }
あとは出力したい形はsearchでもsearchでなくても同じなので、fetchAllで取れる件数が絞込後なのか、全件なのかしか違いはないため、この処理だけで同じことができるはずです。