PHPのif文で条件分岐する方法とは?

このQ&Aのポイント
  • PHPのif文を使用して、条件分岐を行う方法を解説します。
  • もし$row['aki']が0の場合に別の文を出力する方法について、詳しく説明します。
  • if文を使って、$row['aki']が0の場合に特定の文を表示する方法を実装することができます。
回答を見る
  • ベストアンサー

やや複雑なif

if($fd+$d==1 or $fd+$d==8 or $fd+$d==15 or $fd+$d==22 or $fd+$d==29 or $fd+$d==36){ $row = mysql_fetch_array($res); echo '<td width="150" align="150" height="70" bgcolor="#FF99CC">'.$d.'あ'.$row['aki'].'</td>'; }else{ $row = mysql_fetch_array($res); echo '<td width="150" align="150" height="70">'.$d.'<br>:'.$row['aki'].'</td>'; } $row['aki']が0だった場合にifで更に違う文を出力したいんですが、どうしたらいいですか??

  • PHP
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>更に違う文 の仕様がわからないとなんともいえないですね とりあえずこんな感じで $row = mysql_fetch_array($res); $bgcolo=""; if($row['aki']==0){ $val='・・・・'; }elseif(in_array($fd+$d,array(1,8,15,22,29,36))){ $bgcolo=" bgcolor=\"#FF99CC\""; $val=$d.'あ'.$row['aki']; }else{ $val=$d.'<br>:'.$row['aki']; } echo '<td width="150" align="150" height="70"'.$bgcolor.'>'.$val.'</td>';

その他の回答 (1)

  • t140
  • ベストアンサー率39% (59/150)
回答No.1

元文はこう書くこともできると思います。 $row = mysql_fetch_array($res); switch ($fd+$d) { case 1: case 8: case 15: case 22: case 29: case 36:  echo '<td width="150" align="150" height="70" bgcolor="#FF99CC">'.$d.'あ'.$row['aki'].'</td>';  break; default:  echo '<td width="150" align="150" height="70">'.$d.'<br>:'.$row['aki'].'</td>';  break; } それで$row['aki']で場合分けをするには $row = mysql_fetch_array($res); if (empty($row['aki'])) {  echo "違う文"; } else {  switch ($fd+$d) {  case 1:  case 8:  case 15:  case 22:  case 29:  case 36:   echo '<td width="150" align="150" height="70" bgcolor="#FF99CC">'.$d.'あ'.$row['aki'].'</td>';   break;  default:   echo '<td width="150" align="150" height="70">'.$d.'<br>:'.$row['aki'].'</td>';   break;  } } こんな感じになると思います。

関連するQ&A

  • if文が上手くいかない

    while($row = mysql_fetch_array($res)){ $st = $row['st']; } while($row2 = mysql_fetch_array($res2)){ if(!$st==""){ echo $row2['name'].'<br>出勤<br>'; }else{ echo $row2['name']; } } 上記のように$stが有る場合、無い場合を振り分けています。 一方は有る、一方は無い状態で上記を表示した所 タモリ 出勤 つるべ 出勤 と、両方でてしまいます。 タモリ 出勤 つるべ と片方にしか出ないようにしたいのですが、どうしたらいいでしょうか?? mysql_queryが一つの場合上手くいきましたが、二つの場合上記のようになります。

    • 締切済み
    • PHP
  • 入れ子のようにしてデータを作りたい。

    よろしくお願い致します。 次のようなコードを書きました。 京都(15) 大阪(18) 滋賀(6) 奈良(23) 和歌山(21) 兵庫(9) というようなファイルを作りたいのですが、 どうもカッコの中に入れる数字がうまく入りません。 また一般的な方法として下記のような発想の 記述でよいのか、御指導をお願い致します。 <table width="100%" align="left"> <?php $con = MYSQL_CONNECT("localhost","*****","*****"); mysql_select_db("net-jp00001"); $res = mysql_query("SELECT pref.pref_id, pref.pref_name FROM pref"); // 表示文字コード if (!$res) { die('クエリーが失敗しました。'.mysql_error()); } $i=0; // クエリの文字の表示 while ($row = mysql_fetch_assoc($res)) { if ( $i >= 3 ){ ?> <form method='POST' action='search_city.php'> <tr align="center" bgcolor="#FCFFD0"> <? $i=1; }else{ $i++; } ?> <td width="5" height="21" colspan="1" align="left" bordercolor="1" bgcolor="#FCFFD0"> <input type="radio" name="pref_id" value="<?php echo $row['pref_id'] ?>"> </td> <td width="200"colspan="11" align="left" bordercolor="1" bgcolor="#FCFFD0"> <label><font size="-1"><?php echo $row['pref_name'] ?></font></label> <?  //この部分でエラーが出て記述方法がわかりません。 $pref = $row['pref_name']; $res1 = mysql_query("SELECT count(*) as city_id FROM pref INNER JOIN city ON pref.pref_id = city.pref_id WHERE pref.pref_name = $pref_name"); list($num) = mysql_fetch_row($res1); echo "(".$num.")"; ?> </td> <? } ?> </tr> <tr align="left" bgcolor="#D0FFF8"> <td height="21" colspan="12" bordercolor="1"> <input name="submit" type='submit' value='市区エリアへ'> </td> </tr> </form> </table>

    • ベストアンサー
    • PHP
  • テーブルの内容を<a>タグでくるんだ時のアンカー

    下記のPHPスクリプトにおいて、テーブルの内容を<a>タグで 挟み、データベースの内容を表示しているのですが、 先頭レコードのアンカーだけが表示されず、ただのテキストになってしまいます。 二番目以降のレコードはテーブルの内容がアンカー付きで表示されるのですが、 先頭レコードにアンカーをつけるには、どこがまちがっているのか ご指導お願いいたします。 mysql_set_charset("utf-8"); //$sql = "SELECT * FROM hospytal;"; //$result = mysql_query($sql, $con) or die(mysql_error()); if($_POST['radio_btn']==="1"){ $sql = "SELECT * FROM hospytal order by manzokudo desc;"; // 満足度の降順 $result = mysql_query($sql, $con) or die(mysql_error()); }else{ $sql = "SELECT * FROM hospytal order by kuchikomi desc;"; // 口コミ数の降順 $result = mysql_query($sql, $con) or die(mysql_error()); } $rowco = mysql_num_rows($result); // テーブルの行数 for($i=0; $i<$rowco; $i++){ $row = mysql_fetch_row($result); // 取得された行に対応する配列を返し、内部のデータポインタを前に進める echo '<a href="'.$i.'.php?sid='.$row[0].'">'; echo '<table width="500" height="120" border="1">'; echo '<tr>'; echo '<td width="500" height="30">'.$row[1].'</td>'; echo '</tr><tr>'; echo '<td width="500" height="30">'.$row[4].'&nbsp;&nbsp;&nbsp;'.$row[5].'件</td>'; echo '</tr><tr>'; echo '<td width="500" height="30">'.$row[7].'</td>'; echo '</tr><tr>'; echo '<td width="500" height="30">'.$row[9].'</td>'; echo '</tr>'; echo '</table>'; echo '</a>'; } mysql_close($con); // データベースとの接続を解除する

    • ベストアンサー
    • PHP
  • if()文が上手くいかない。パート2

    $sql= 'SELECT a.id,a.name,a.ji,a.pass,b.id,b.name,b.day,b.st,b.sh,b.tday,b.tt,b.th,b.go FROM t AS a, ti AS b WHERE a.id=b.id group by a.id ORDER BY b.day DESC'; $res = mysql_query($sql); $sql2 = 'SELECT * FROM ti'; $res2 = mysql_query($sql2); while($row = mysql_fetch_array($res)){ $st = $row['st']; } while($row2 = mysql_fetch_array($res2)){ if(!$st==""){ echo $row2['name'].'<br>出勤<br>'; }else{ echo $row2['name']; } } 改善点御教授下さい。お願いします。 参考:http://okwave.jp/qa/q7424432.html

    • 締切済み
    • PHP
  • php

    while($row = mysql_fetch_array($res,MYSQL_NUM)) { echo $row[1]."\n"; ここの文字コードを調べたいのですがどう書いたらいいでしょうか? 又参考になるサイトがありましたらお願いします

  • mysqlの結果セットを配列に

    while($row=mysql_fetch_array($res)){ echo "<form action=kousin.php method=post>"; echo "<TD bgcolor=#FFFFFF><input type='text' name=zaiko[] value=". $row["注文"] . "></td>"; echo "<input type=hidden name=store1 value=". $row["注文"] .">"; --------------------------------------------------- $zaiko[]=$_POST["zaiko[]"]; 上記のようなイメージでフォームから送った結果セットを配列として格納したいのですが、どのようにしたら良いのでしょうか?よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでの検索機能実装について(フレームワーク無し

    PHP初心者です。 現在、PHPにてDBからアクセスし、DBの検索を実装するプログラムを作成しております。 参考HPを元に下記のプログラムを作成したのですが、参考HPのコードではフレームワークが組み込まれており、 フレームワークを組んでいない私のコードではエラーが発生してしまいます。 エラー内容: Warning: mysql_fetch_array() expects parameter 1 to be resource, (省略) line63 Warning: mysql_free_result() expects parameter 1 to be resource, (省略) line74 参考HPでは、search.phpの17行目'$search'が宣言されてない状態で記載されて おりましたので、search.phpの最初にて宣言しました($searchでは検索キーを格納して おります)。 恐れいりますが、ご教示願います。 input.php 検索ワードを送信 <form action="search.php" method="POST"> <input type="text" name="searchkey"> <input type="submit" name="searchid" value="検索"> </form> search.php <?php $search = htmlspecialchars($_POST['searchkey']); //データベースに接続 if (!$con = mysql_connect("ホスト名", "user名", "パスワード")) { echo "接続エラー"; exit ; } //データベースを選択 if (!mysql_select_db("db名", $con)) { echo "データベース選択エラー"; exit ; } //フォームで送られてきた条件を元にSELECT文を作成 $sql = "SELECT * FROM listwhere name LIKE '% . $search . %'"; //SELECT文を実行 if ($res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; } //検索結果<br> echo "<table border=1>" ; while($row = mysql_fetch_array($res)){ //エラー echo "<tr>" ; echo "<td>" . $row["id"] . "</td>" ; echo "<td>" . $row["name"] . "</td>" ; echo "<td>" . $row["date"] . "</td>" ; echo "<td>" . $row["registant"] . "</td>" ; echo "<td>" . $row["comment"] . "</td>" ; echo "</tr>" ; } echo "</table>" ; //結果セットの開放 mysql_free_result($res); //エラー //データベースから切断 mysql_close($con); ?>

    • ベストアンサー
    • PHP
  • ヒアドキュメントについて

    以前質問しましたが、解決できませんでした。 ヒアドキュメント内での多次元配列の扱いで悩んでいます。 ソースは <?php require_once("mysql.php");// MySQLへのID・パスワードの取得をするファイルへのアクセス function kensaku($str1,$str2,$str3,$str4){ $mysql = new MySQL; $sql = "SELECT * FROM tankanji WHERE kanji like '%$str1%' AND (onyomi like '%$str2%' OR kunyomi like '%$str2%') AND kakusuu like '%$str3%' AND busyu like '%$str4%'"; $row=$mysql->query($sql); echo <<<EOM <TABLE width="3000" frame="border" border="3" cellspacing="1" cellpadding="3"> <TBODY> <TR><TH>id</TH><TH>漢字</TH><TH>音読み</TH><TH>訓読み</TH> <TH>画数</TH><TH>部首</TH></TR> while ($row = $mysql->fetch()){ <TR> <TD align="center"><?={$row['id']}?></TD> <TD align="center"><?={$row['kanji']}?></TD> <TD align="center"><?={$row['onyomi']}?></TD> <TD align="center"><?={$row['kunyomi']}?></TD> <TD align="center"><?={$row['kakusuu']}?></TD> <TD align="center"><?={$row['busyu']}?></TD></TR> } </TBODY> </TABLE> EOM; } なんですが、うまくいきません。 $row=$mysql->query($sql); のあとでprint文で$rowの中身を表示させたらきちんと入っているのでecho <<<EOM以降がおかしいものと思います。 エラーの内容としてはsyntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRINGと表示されてしまいます。これがどうしてもやらないといけないことでしてものすごく困っています。。初心者の質問で大変申し訳ないです。

    • ベストアンサー
    • PHP
  • php 投票システム

    データベースと連動した投票システムを考えております。 phpとMySQLを使用したもので、対応するボタンを押すと1票投じられるというものです。 この仕組み自体は実現できたのですが、 ブラウザの更新ボタンを押すと、『情報を再送信する必要があります』と表示され、『はい』を押すと、自動的に1票投じられてしまいます。 スクリプトは以下のようになるのですが、上記のような不具合を修正するためにはどうすればよいのでしょうか。 アドバイス、具体的なソース、また、他の部分における修正すべき箇所など、ご指摘いただきたいと思います。 よろしくお願いいたします。 <?php echo "<table border=0>"; echo "<tr><td colspan=4 align=left><img src=logo-touhyou.gif></td></tr>"; echo "<tr><td><form method=post action="; echo $_SERVER["PHP_SELF"]; echo "><input type=hidden value=1 name=posi><input type=image src=logo-posi-s.gif border=0></form></td>"; echo "<td><form method=post action="; echo $_SERVER["PHP_SELF"]; echo "><input type=hidden value=1 name=deep><input type=image src=logo-deep-s.gif border=0></form></td></tr></table>"; $posi=$_POST["posi"]; $deep=$_POST["deep"]; if ($posi==1){ $server="mysql..jp"; $dbname="LA"; $user="LA"; $pass=""; $conn = mysql_connect($server,$user,$pass); $conndb = mysql_select_db($dbname); $sql="SELECT posi FROM test WHERE id =1 LIMIT 1"; $res=mysql_query($sql); while($row = mysql_fetch_assoc($res)) { $row_con=mb_convert_encoding($row["posi"], "shift_jis", "auto"); echo $row_con; echo "<br>"; $number1=1; $after=$row_con+$number1; echo $after; echo "<br>"; mysql_query("LOCK TABLES test WRITE"); $sql_1="UPDATE test SET posi='$after3' WHERE id =1 LIMIT 1"; $ins=mysql_query($sql); mysql_query("UNLOCK TABLES"); if ($ins_1){ echo "ポジティブ投票完了"; } $sql_2="SELECT posi FROM test WHERE id =1 LIMIT 1"; $res_2=mysql_query($sql_2); while($row_2 = mysql_fetch_assoc($res_2)) { $row_con_2=mb_convert_encoding($row_2["posi"], "shift_jis", "auto"); echo $row_con_2; } } mysql_close($conn); } if ($deep==1){ $server="mysql..jp"; $dbname="LA"; $user="LA"; $pass=""; $conn = mysql_connect($server,$user,$pass); $conndb = mysql_select_db($dbname); $sql2="SELECT deep FROM test WHERE id =2 LIMIT 1"; $res2=mysql_query($sql2); while($row2 = mysql_fetch_assoc($res2)) { $row_con2=mb_convert_encoding($row2["deep"], "shift_jis", "auto"); echo $row_con2; echo "<br>"; $number1=1; $after2=$row_con2+$number1; echo $after2; echo "<br>"; mysql_query("LOCK TABLES test WRITE"); $sql2_2="UPDATE test SET deep='$after2' WHERE id =2 LIMIT 1"; $ins2=mysql_query($sql2_2); mysql_query("UNLOCK TABLES"); if ($ins2){ echo "ディープ投票完了"; } $sql2_2="SELECT deep FROM test WHERE id =4 LIMIT 1"; $res2_2=mysql_query($sql2_2); while($row2_2 = mysql_fetch_assoc($res2_2)) { $row_con2_2=mb_convert_encoding($row2_2["deep"], "shift_jis", "auto"); echo $row_con2_2; } } mysql_close($conn); } ?>

    • ベストアンサー
    • PHP
  • PHP+MYSQLで検索画面を作成しています。プルダウンとキーワードを使用していますがうまくいきません。

    住所録を作成し、プルダウンとキーワードで作成しましたがうまくいきません。実行すると最後に記載のエラーがでます。教えてください。フリーワードだけの検索はうまくいきましたが。 ---kensaku.php--- <?php extract($_POST); $dfrom = sprintf("%04d-%02d-%02d",$year1,$mon1,$date1); $dto = sprintf("%04d-%02d-%02d",$year2,$mon2,$date2); if($kai == ''){ }else{ $jouken = "(ocrdate between '$dfrom' and '$dto')"; if ($kai <> "*"){ $jouken = "$jouken and kai like '%$kai%'"; } if ($fuk <> "*"){ $jouken = "$jouken and fuk like '%$fuk%'"; } if ($jic <> "*"){ $jouken = "$jouken and jic like '%$jic%'"; } if ($key1 <> ""){ $jouken = "$jouken and (keyword like '%$key1%' or detail like '%$key1%' or treat like '%$key1%' or remark like '%$key1%')"; if (key2 <> ""){ $jouken = "$jouken and (keyword like '%$key2%' or detail like '%$key2%' or treat like '%$key2%' or remark like '%$key2%')"; if (key3 <> ""){ $jouken = "$jouken and (keyword like '%$key3%' or detail like '%$key3%' or treat like '%$key3%' or remark like '%$key3%')"; } } } mysql_connect('localhost','***','****'); mysql_select_db('****'); $sql = "select * from jyusho where $jouken"; $result = mysql_query($sql); $num = mysql_num_rows($result); if ($num == 0){ echo "該当データがありません<br>"; exit; }else { echo "<table border=\"1\">\n"; echo "<tr>\n"; echo "<th>加入日</th>\n"; echo "<th>加入地域<br></th>\n"; echo "<th>加入県</th>\n"; echo "</tr>\n"; while($row = mysql_fetch_array($result)){ $id = $row["id"]; echo "<tr>"; echo "<td align=\"right\"><a href=\"meisai.php?id=$id\">",$id,"</a>\n"; echo "</td><td>"; echo $row["kai"]; echo "</td><td>"; echo $row["fuk"]; echo "</td><td>"; echo $row["jic"]; echo "</td></tr>"; }(ここまで170行目、次は、/htmlとなっています) ---ここまで--- エラーは、「Parse error: parse error, unexpected $end in c:\(省略)\kensaku.php on line 171」

専門家に質問してみよう