• 締切済み

半角数字で入力されているかチェックしたいのですが。。。

<br><br><font size="5">日付<font color = "#ff0000">(半角入力):</font>:</font> <input style=font-size="100%" width = "90" type="text" name="hiduke" size="20"></font><br> 上のログイン画面のコードで数字を入力して、 <?php //選択した日付 $_GET["hiduke"] = $hiduke; //日付の入力確認 if (!entchk($_GET)) { return; } // -- ページ内容の表示 switch ($hyouji) { default: gamen_ichiran(); } ?> </body> </html> <?php closedb(); ?> <?php // ================================================= // ----- /一覧表示画面 // ================================================= function gamen_ichiran() { global $conn; global $sinnsatuken; global $yoyakusha; global $hiduke; global $timeid; global $jikan; $array = cnv_formstr($_POST); extract($array, EXTR_SKIP); $sql = "SELECT * FROM yoyaku WHERE hiduke = '" . $hiduke . "' ORDER BY timeid, caid"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); $i = 0; while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { if ($row["yoyakusha"] != "×") { $jikan[$i] = getjikan($row["timeid"]); yoyakusha[$i] = $row["yoyakusha"]; $sinnsatuken[$i] = $row["caid"]; $i++; } } ?> <center> <font size = "5" color = "#DC143C">1日分予約確認画面</font> <br> <br><font size = "5"><font color ="#4682b4" ><b><?php print $hiduke; ?></b></font>の予約は以下のとおりです。</font> <br> <br> <table width = 600 border="1"> <td width = "150" align = "center" bgcolor="#ffd700"><font size = "5">時間</font></td> <?php for($j = 0; $j <= $i-1 ; $j++) { ?> <tr><td><center><font size = "5"><?php echo $jikan[$j] ?></font></center></td> <?php } ?> <?php } ?> </center> </font> </table> <?php // ================================================= // ----- 登録データチェック // ================================================= function entchk($array) { ?> <font size ="5" color = "#ff0000"> <?php $strerr = ""; if ($array["hiduke"] == "") { echo "<p> 日付が入力されていません!もう一度入力してください。<br><br><br>"; print "<a href = index.php>● 日付入力画面へ</a>\n"; $strerr = "1"; } if ($strerr == "1") { return FALSE; } else { return TRUE; } ?> </font> <?php } 日付を受け取る側で、半角入力されているかチェックしたいのですが、できずに困っています。 見やすいサイトや、いいやり方があったら教えてください。お願いします。

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

みんなの回答

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

聞きたいところをもう少し簡潔にしたほうがよいのでは? とても読む気になりません。 で、しょっぱなの >$_GET["hiduke"] = $hiduke; からしておかしいですね? $hiduke=$_GET["hiduke"]; じゃないの? で、$hidukeのバリデートをすればよいということでしょうか? preg_match("/[^0-9]/",$hiduke)とかで数字以外の文字がヒット したらエラーにすればよいような気がします。 あとは日付データの形をどうしたいかによりますね。 MySQLだと、yyyy-mm-ddやyyyy/mm/ddなどでうけてくれますので 適当な整形をすればよいでしょう

fufufumi98
質問者

補足

yambejpさん、ご指摘ありがとうございます。 プログラムの書き方にも今後は注意していきたいと思います。 preg_matchを使うと良いのですね。ぜひやってみます。

関連するQ&A

  • 一行で表示させたい。

    質問は2つあります。 (1) <table border="1"> <td>日付</td> <td>曜日</td> <?php // 時間表示 while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $timeid = $row["timeid"]; $jikan = cnv_dispstr($row["jikan"]); ?> <td><?php echo $jikan ?></td> <?php } ?> </tr> <?php  $lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy)); for ($i = 1; $i <= $lastd; $i++) { $ts = mktime(0, 0, 0, $mm, $i, $yyyy); $ymd = date("Y/m/d", $ts); //予約者を表示してる $ymdstr = strftime("%Y年%m月%d日(%a)", $ts); ?> <td><?php echo $ymd ?></td> <?php //曜日表示 $aday = array("日", "月", "火", "水", "木", "金", "土"); $w = date("w", $ts); printf('<td style="color:%s;background-color:%s;"><span style = "font-size:15pt">%s</span></td>' ,$textcolor[$w],$backcolor[$w], $aday[$w]); ?> <?php// 時間ごとの予約表示 $res = mysql_query($sql, $conn) or die("データ抽出エラー"); while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $timeid = $row["timeid"]; $jikan = cnv_dispstr($row["jikan"]); $link = $_SERVER["PHP_SELF"]. "?hyouji=kousin&hiduke=".$ymd."&timeid=".$timeid; ?> <td><a href="<?php echo $link //予約者からリンクが外れる ?>"> <?php echo yoyakuchk($ymd,$timeid) ?></a></td> <?php } ?> </tr> <?php } ?> </table> を実行すると 9:00|9:30|10:00|.... 12/1 ○  ○  ○ 12/2鈴木  ○  ○ 12/3 ○ 山田 ○ と実行されます。 これを今日の日付だけを表示させたいのでうがうまくいかずに困っています。 (2)カレンダーの日付をクリックしたら、(1)の一行で表示している予約できる画面を表示させたいのこっちもうまくいかずに困っています。 例えば、 カレンダーで12月1日をクリックしたら、 9:00|9:30|10:00|.... 12/1 ○  ○  ○ が表示できるようにしたいです。 いい方法がありましたら、よろしくお願いします。

    • 締切済み
    • PHP
  • PHPのカレンダーに曜日をつけられづに困っています。

    <?php // 日付 if (!isset($hiduke)) { $hiduke = date("Y-m-d"); } if (!isset($yyyy)) { $yyyy = date("Y", strtotime($hiduke)); } if (!isset($mm)) { $mm = date("m", strtotime($hiduke)); } if (!isset($dd)) { $dd = date("d", strtotime($hiduke)); } // 表示ページ if (isset($_GET["act"])) { $act = $_GET["act"]; } if (!isset($act)) { $act = ""; } // ================================================= //  処理開始 ?> <?php conndb();?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> <title>予約システム</title> </head> <body> <h2>予約システム</h2> <?php // -- ページ内容の表示 switch ($act) { case "upd": // 更新 gamen_upd(); break; case "updconf": // 更新確認 gamen_updconf(); break; case "delconf": // 削除確認 gamen_delconf(); break; case "det": // 詳細表示 gamen_detail(); break; default: gamen_iti(); } ?> </body> </html> <?php closedb(); ?> <?php // ================================================= // ----- 一覧表示画面 function gamen_iti() { global $conn; global $hiduke; global $yyyy; //年 global $mm; //月 $array = cnv_formstr($_POST); extract($array, EXTR_SKIP); if (isset($kbn)) { if ($kbn == "upd" or $kbn == "del") { update_yoyaku($kbn); } } $sql = "SELECT * FROM jikan ORDER BY timeid"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>"> <table border="1"> <tr> <td><?php setmonth(); ?></td> <td><input type="submit" name="sub" value="予約表示"></td> </tr> </table> <input type="hidden" name="act" value="iti"> <input type="hidden" name="kbn" value="go"> </form> <p><?php echo date("Y 年 m 月 ", mktime(0, 0, 0, $mm, 1, $yyyy)) ?>予約一覧 <table border="1"> <tr bgcolor="#ffd700"> <td>日付</td> <?php // 時間表示 while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $timeid = $row["timeid"]; $jikan = cnv_dispstr($row["jikan"]); ?> <td><?php echo $jikan ?></td> <?php } ?> </tr> <?php //カレンダー $lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy)); for ($i = 1; $i <= $lastd; $i++) { ?> <tr> <?php $ts = mktime(0, 0, 0, $mm, $i, $yyyy); $ymd = date("Y/m/d" ,$ts) ; $ymdstr = strftime("%Y年%m月%d日(%a)", $ts); ?> <td><?php echo $ymd ?></td> <?php   <?php } ?> </table> <?php } // ================================================= // ----- 年月選択リスト表示 function setmonth() { global $yyyy; global $mm; $array = cnv_formstr($_POST); extract($array, EXTR_SKIP); echo "<table><tr><td>"; // 年 echo "<select name=\"yyyy\">"; for ($i = 2008; $i <= 2025; $i++) { echo "<option"; if ($i == $yyyy) { echo " selected "; } echo ">$i"; } echo "</select>年"; // 月 echo "<select name=\"mm\">"; for ($i = 1; $i <= 12; $i++) { echo "<option"; if ($i == $mm) { echo " selected "; } echo ">$i"; } echo "</select>月"; echo "</td>"; echo "</tr></table>"; } ?> と参考書を見ながら、作っています。 PHPはまったくの初心者です。カレンダーの日付に曜日をつけられづに困っています。コードを含め詳しくをしえてもらえると助かります。よろしくお願いします。

    • 締切済み
    • PHP
  • 先日テーブルの質問をした者です。

    先日テーブルの中に画像を入れたいと相談した初心者です。 何とか形になりましたが、「画像の下のテキスト部分の選手名とポジションのすき間が上下のかけ線に近すぎた」ので自己流で離してみましたが、もっとちゃんとした正式な方法が知りたくて質問しました。 私のヘボソースを参考にご教授お願い致します。(汗) <html> <head> <title>○○メンバー紹介</title> </head> <br> <br> <th><center><i><font size="6px" color="white" face="IMPACT" >MEMBER</font></i></center></th> <center><i><font size="5px" color="white" face="IMPACT" >(2005年チーム)</font></i></center> <br> <br> <body bgcolor=navy> <center><table border="1" cellpadding="0" cellspacing="0"> <tr> <td><img src="1234.jpg" width="280" height="210" alt="選手の画像"></td> <td><img src="1235.jpg" width="280" height="210" alt="選手の画像"></td> <td><img src="1236.jpg" width="280" height="210" alt="選手の画像"></td> </tr> <TR BGCOLOR="#696969"> <Td Align="center" Valign="middle"><font color=white>&nbsp;<br>キャプテン○○○<br>○○○<br>ガード<br>&nbsp;</font></td> <Td Align="center" Valign="middle"><font color=white>副キャプテン×△○<br>×○△<br>ガード</font></td> <Td Align="center" Valign="middle"><font color=white>2年○××<br>○××<br>フォワード</font></td> </tr> </table> </body> </html>

    • ベストアンサー
    • HTML
  • 入力したHTMLがちゃんと表示されるか確認したい

    以下のように入力したHTMLをちゃんとブラウザで表示されるか確認したいのですが、どうすれば良いのでしょうか?(下の入力内容は気にしないでください) -------------------------------------------------------------------------------------------------- <table align="center" style="border-spacing: 0px;width:100%;"><tr><td><div id="EBdescription"> <!-- Begin Description --><table border="6" bordercolor="#72799E" cellspacing="0" cellPadding="10" width="70%" align="center"> <!-タイトル+写真 ここから--> <tr><td> <center> <font size="6" face="Tunga" color="#122276"> <b>◆FANTA GRAPE◆</b> </font> </center> </td></tr> <tr><td><br> <center> <font face="Arial">

    • ベストアンサー
    • HTML
  • チェックボックスと入力フォームが一致しない

    チェックボックスにチェックを入れた箇所のみ入力フォームがあり、 入力フォームにテキストを入れ、チェックを入れた箇所のみDBにデーターがSETされるような形で作りたいのですが、以下のコードですと、 チェックされた部分にデータは入るのですが、ずれてデータがセットされてしまいます。 チェック如何に関わらず、チェックボックスのデータを上から、チェックしたボックスに順番にデータが入ってしまうような形です。 ループの部分がおかしいのでしょうか? 昨日からいろいろ試しているのですが、うまくいきません、、、 よろしくお願いします。 ★入力前 □ [あああ] □ [いいい] □ [ううう] □ [えええ] □ [おおお] ★データ入力 □ [あああ] ■ [イイイ] □ [ううう] ■ [エエエ] □ [おおお] ★データ反映後 □[あああ] □[あああ] □[ううう] □[イイイ] □[おおお] ソースコードはこのような形になっています。 ■入力フォーム部分 <?php while ($row = mysql_fetch_array($result)) { //登録状態判別 if($row[reg] == 0){ $reg_status = '<span style="color:#ff0000;">未入金</span>'; }elseif($row[reg] == 1){ $reg_status = '<span style="color:#0000ff;">会員</span>'; } $clo_date =$row["clo_date"]; $clo_date2 = str_replace('-', '', $clo_date); echo ' <tr> <td><input type="checkbox" value="'.$row["reg"].','.$row["dispName"].','.$row["userName1"].','.$row["userName2"].','.$row["userID"].','.$row["tel"].','.$row["email"].','.$row["add_date"].','.$row["up_date"].','.$row["clo_date"].','.$row["no"].','.$row["passwordCheck"].'" name="user[chk][]" /></td> <td>'.$reg_status.'</td> <td>'.$row["dispName"].'</td> <td>'.$row["userName1"].''.$row["userName2"].'</td> <td>'.$row["userID"].'<input type="hidden" name="userID[]" value="'.$row["userID"].'" /></td> <td>'.$row["tel"].'</td> <td>'.$row["email"].'<input type="hidden" name="user[email][]" value="'.$row["email"].'" /></td> <td>'.$row["add_date"].'</td> <td>'.$row["up_date"].'</td> <td><input type="text" size="8" value="'.$clo_date2.'" name="user[clo_date][]" /> </tr> '; } ?> ■MYSQL接続データSET部分 $i = 0; foreach($_POST['user']['chk'] as $val){ $clos = $_POST['user']['clo_date'][$i]; //valueの値を配列に分割 $split = explode(",", $val); $sql = "UPDATE user SET reg =1 WHERE userID = '$split[4]'"; $sql2 = "UPDATE user SET clo_date ='$clos' WHERE userID = '$split[4]'"; mysql_query("SET NAMES utf8",$mysql_con); mysql_query($sql,$mysql_con); mysql_query($sql2,$mysql_con); }

    • 締切済み
    • PHP
  • phpでのアンケート編集

    社員旅行のアンケート編集のphpです。 (???)のところがどうしてもわからなくて上手く動きません。 どなたか回答お願いします。 <?php session_start(); ?> <html> <head> <body> <font size=5><b>社員旅行アンケート集計</b></font><br><br> <?php $db = mysql_connect("localhost","",""); mysql_select_db("syain_db"); $query = "SELECT * FROM trvl_t"; $result = mysql_query($query); if(mysql_num_rows($result) == 0) print"<br>無し"; else{ for($i = 0;$i <4;$i++) $cnt[$i] = 0; while($row = mysql_fetch_array($result))(???) mysql_close($db); echo "<table border =1>"; echo "<tr><td>旅行先</td><td>希望者数</td></tr>"; for($i=0;$i<4;$i++){ echo "<tr align=center>"; if($i == 0) echo "<td>北海道</td>"; elseif($i == 1) echo"<td>沖縄</td>"; elseif($i == 2) echo"<td>韓国</td>"; elseif($i == 3) echo"<td>香港</td>"; echo "<td>".(???)."</td>"; echo"</tr>"; } echo "</table>"; } ?>

    • ベストアンサー
    • PHP
  • HTMLについて

    HTML初心者です。いろいろ調べながら下記の画像のテンプレートを作っているのですが、1枠と2枠の頭が揃いません。わかる方教えてください。画像が見づらいかもしれませんが宜しくお願い致します。 <html> <body> <br><center> <font size="6" color="#00000"> <b>タイトル</b> </font> <hr> <br><br> <table width="800" height="500" cellpadding="15" cellspacing="10" BORDER="4" bgcolor="F3F30E"> <tr> <td width="50%" rowspan="4" BGCOLOR="F2F276" ALIGN="left" VALIGN="top"> <font color="#00000" size="4"><b><u> 1 </u></b></font> <br><br> <font size="3" color="#00000"> </font> </td> </tr> <tr> <td width="50%" bgcolor="F2F276" ALIGN="left" VALIGN="top"> <font color="#00000" size="4"><b><u> 2 </b></u></font> <br><br> <font size="3" color="#00000"> </font> </td> </tr> <tr> <td width="50%" bgcolor="F2F276" ALIGN="left" VALIGN="top"> <font color="#00000" size="4"><b><u> 3 </b></u></font> <br><br> <font size="3" color="#00000"> </font> </td </tr> <tr> <td width="50%" bgcolor="F2F276" ALIGN="left" VALIGN="top"> <font color="#00000" size="4"><b><u> 4 </b></u></font> <br><br> <font size="3" color="#00000"> <b></b> </font> </td> </tr> </table> </body> </html>

    • ベストアンサー
    • HTML
  • php修正について

    下記のPHPの'y_name'の並びをあ~昇順で表示したいのですが どこを追加修正すればよいか教えてください。 <?php require_once('../../Connections/harada_drag_store.php'); ?> <?php $currentPage = $_SERVER["PHP_SELF"]; $maxRows_rs_kusuri = 20; $pageNum_rs_kusuri = 0; if (isset($_GET['pageNum_rs_kusuri'])) { $pageNum_rs_kusuri = $_GET['pageNum_rs_kusuri']; } $startRow_rs_kusuri = $pageNum_rs_kusuri * $maxRows_rs_kusuri; mysql_select_db($database_harada_drag_store, $harada_drag_store); $query_rs_kusuri = "SELECT * FROM kusuri ORDER BY id DESC"; $query_limit_rs_kusuri = sprintf("%s LIMIT %d, %d", $query_rs_kusuri, $startRow_rs_kusuri, $maxRows_rs_kusuri); $rs_kusuri = mysql_query($query_limit_rs_kusuri, $harada_drag_store) or die(mysql_error()); $row_rs_kusuri = mysql_fetch_assoc($rs_kusuri); if (isset($_GET['totalRows_rs_kusuri'])) { $totalRows_rs_kusuri = $_GET['totalRows_rs_kusuri']; } else { $all_rs_kusuri = mysql_query($query_rs_kusuri); $totalRows_rs_kusuri = mysql_num_rows($all_rs_kusuri); } $totalPages_rs_kusuri = ceil($totalRows_rs_kusuri/$maxRows_rs_kusuri)-1; $queryString_rs_kusuri = ""; if (!empty($_SERVER['QUERY_STRING'])) { $params = explode("&", $_SERVER['QUERY_STRING']); $newParams = array(); foreach ($params as $param) { if (stristr($param, "pageNum_rs_kusuri") == false && stristr($param, "totalRows_rs_kusuri") == false) { array_push($newParams, $param); } } if (count($newParams) != 0) { $queryString_rs_kusuri = "&" . htmlentities(implode("&", $newParams)); } } $queryString_rs_kusuri = sprintf("&totalRows_rs_kusuri=%d%s", $totalRows_rs_kusuri, $queryString_rs_kusuri); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title>お薬情報【全リスト】</title> </head> <body bgcolor="#006699" text="#333333" link="#0000CC" vlink="#0000CC" alink="#FF0000"> <table border="0" align="center" cellpadding="1" cellspacing="2"> <tr bgcolor="#CC6600"> <td height="25" colspan="10"><div align="center"><strong><font color="#FFFFFF" size="3">お薬情報 ≪リスト≫</font></strong></div></td> </tr> <tr> <td colspan="10"><div align="center"><font color="#CCCCCC" size="2">登録ID順(降順)で表示しています。</font></div></td> </tr> <?php do { ?> <tr bgcolor="#FFCC99"> <td><div align="right"><font size="2"><a href="kusuri_details.php?id=<?php echo $row_rs_kusuri['id']; ?>&pageNum_rs_kusuri=<?php echo ($pageNum_rs_kusuri); ?>"> <?php echo $row_rs_kusuri['id']; ?> </a></font></div></td> <td align="center"><font size="2"><?php echo $row_rs_kusuri['date']; ?></font></td> <td align="center"><font size="2"> <?php $value = $row_rs_kusuri['view']; switch ($value) { case "00": echo "×"; break; case "01": echo "○"; break; default: echo "-"; break; } ?> </font></td> <td align="center"><font size="2"><?php echo $row_rs_kusuri['date_open']; ?></font></td> <td align="center"><font size="2"><?php echo $row_rs_kusuri['date_close']; ?></font></td> <td align="center"><font size="2"><?php echo $row_rs_kusuri['name']; ?></font></td> <td align="center"><font size="2"><?php echo $row_rs_kusuri['y_name']; ?></font></td> <td align="center"><font size="2"><?php echo $row_rs_kusuri['y_seibun_name']; ?></font></td> <td align="center"><font size="2"><?php echo $row_rs_kusuri['y_meker']; ?></font></td> <td><font size="2"><?php echo $row_rs_kusuri['y_konou']; ?></font></td> </tr> <?php } while ($row_rs_kusuri = mysql_fetch_assoc($rs_kusuri)); ?> </table> <br> <</table> </body> </html> <?php mysql_free_result($rs_kusuri); ?>

    • ベストアンサー
    • PHP
  • データベース内容が表示されない

    <br>検索結果<br> <?php if($num_rows== 0){ $message="該当するデータはありませんでした"; } else $message=$num_rows ."件ヒットしました"; echo $message; ?> <br> <?php while($row = mysql_fetch_array($result));?> <br> <?php echo"{$row['tiiki']}"; ?> <?php print"<td>{$row['syoku']}</td>"; ?> <?php print"<td>{$row['koyou']}</td>"; ?> <?php print"<td>{$row['kai']}</td>"; ?> <br> <a href="html.html">再検索</a> とすると、三件ヒットしました、などは表示されますが、肝心のtiiki,syoku等の情報が表示されず、空白のままです。記述ミス等ありますでしょうか??

    • ベストアンサー
    • PHP
  • ホームページビルダー14で作成しています。

    初心者に毛が生えたレベルだと思っています。 今まで問題なかったのですが、自分のホームページをIE8で見るとずれています。 今ではそんなことはなかったのですが・・・。 スタイルシートを入れて作っています。 4つぐらいに区切っており、<!--cont--->の部分で、表(テーブルというのでしょうか)を入れると、それだけが、左揃えにくるのです。表にしていない部分はなか揃えになっています。 ビルダーのプレビューでは、きちんとすべてが中揃えになります。 <!-- cont --> <div id="cont"><BR> <BR> <BR> <BR> <IMG src="06093001.gif" width="275" height="27" border="0" alt="oooooooooooo"><BR> <FONT size="-1">oooooooooooo</FONT><BR> <BR> <BR> <FONT color="#330000" size="-1">oooooooooooooooooooooooooooooo<BR> ooooooooooooooooooooooooooooooooooooooooooooooooooo。<BR> <BR> <B>oooooooooooooooooooooooooooooooooooooo</B></FONT><BR> <BR> <BR> <BR> <BR> <BR> <table border="0"> <tbody> <tr> <td><IMG src="qrcode1.gif" width="60" height="60" border="0" alt="http://bbs9.fc2.com/php/e.php/bbs~oooooooooooooo/"></td> <td valign="bottom"><font size="-2">携帯用掲示板QRコード<br> </font></td> </tr> </tbody> </table> <BR> <TABLE> <TBODY> <TR> <TD><font color="#330000" size="-1"><b><font color="#999999">since 2005.9.30</font></b></font></TD> </TR> </TBODY> </TABLE> </div> <!-- end cont --> 他のパそこんでは、中揃えで見えます。 下半分の<TABLE>が左に寄ってしまいます。 I-phone5で見てもずれています。 CSSに問題があるのでしょうか? 修正できるでしょうか?

専門家に質問してみよう