自動で増えてくれるPHP

このQ&Aのポイント
  • PHPを使用して、データファイルの内容を自動的に増やす仕組みを作りたいと考えています。
  • 現在のコードでは、データファイルの内容を手動で追加する必要がありますが、配列を使用することで自動的に増やすことができます。
  • 自動的に増えるデータを表示するためには、配列にデータを追加し、表示部分のコードを修正する必要があります。
回答を見る
  • ベストアンサー

自動で増えてくれるPHP

以前に質問させて頂いた内容をもとに、以下のようなものを作成しました。 以前の質問 → http://okwave.jp/qa/q6858703.html 作成したもの ↓ 【Aサーバ】「a.txt」(データ用) $name01='一子'; $age01='11'; $name02='二郎'; $age02='22'; 【Bサーバ】「b.html」(表示用) <?php $data = file_get_contents ('http://www.A/a.txt'); foreach (explode("\n" , $data) as $value) { if (preg_match ("/\\$(.+)='(.+)'/", $value, $matches)) { $$matches[1] = $matches[2]; } } echo '<table>'; echo '<tr><th>'.$name01.'</th><td>'.$age01.'</td></tr>'; echo '<tr><th>'.$name02.'</th><td>'.$age02.'</td></tr>'; echo '</table>'; ?> ここで質問なのですが、↑のような仕組みで、a.txtの中身が $name03='三太'; $age03='33'; $name04='~~'; $age04='~~'; と増えていった場合、b.htmlの echo '<tr><th>'.$name~~.'</th><td>'.$age~~.'</td></tr>'; が自動的に増えてくれるようなものを作りたいと考えています。 配列(?)を使うという方法も調べてみたのですが、分からず……。 ご教示願います。

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

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

可変変数を使えばいいのでは? <?php $name01 = 'aaaaa'; $name02 = 'bbbbb'; $name03 = 'ccccc'; $name04 = 'ddddd'; $i = 1; $namew = 'name' . str_replace(' ', '0', sprintf('%2d', $i)); while (isset(${$namew})) { print $namew . '--->' . ${$namew} . "<br>" . PHP_EOL; $i++; $namew = 'name' . str_replace(' ', '0', sprintf('%2d', $i)); }

mi-tsu-ki
質問者

お礼

$nameと$ageを組み合わせる場合は?という点に少し苦戦しましたが、 色々試してみた結果、何とか思い通りの表示が出来そうです。 助かりました。 ありがとうございます!

関連するQ&A

  • form id、nameの番号振りなおし

    jqueryとphpにてフォームを作成しています。 フォームの追加、削除できるシステムを作っており、 フォームの追加はできたので、削除した際のinputのnameやidの番号を振り直しができず困っています。 商品1<br> <a href="javascript:void(0);" class="del" id="del_1">削除</a> <table> <tr> <th>商品番号</th> <td><input type="text" name="item[data][1][sir]" value="<?php echo $item[data][1][sir]; ?>"></td> </tr> <tr> <th>商品名</th> <td><input type="text" name="item[data][1][name]" value="<?php echo $item[data][1][name]; ?>"></td> </tr> <tr> <th>商品個数</th> <td> <select name="item[data][1][num]"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> </td> </tr> </table> <a href="javascript:void(0);" id="add">フォームの追加</a> としており、 「フォームの追加」をクリックすると 商品2<br> <a href="javascript:void(0);" class="del" id="del_2">削除</a> <table> <tr> <th>商品番号</th> <td><input type="text" name="item[data][2][sir]" value="<?php echo $item[data][2][sir]; ?>"></td> </tr> <tr> <th>商品名</th> <td><input type="text" name="item[data][2][name]" value="<?php echo $item[data][2][name]; ?>"></td> </tr> <tr> <th>商品個数</th> <td> <select name="item[data][2][num]"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> </td> </tr> </table> 商品3<br> <a href="javascript:void(0);" class="del" id="del_3">削除</a> <table> <tr> <th>商品番号</th> <td><input type="text" name="item[data][3][sir]" value="<?php echo $item[data][3][sir]; ?>"></td> </tr> <tr> <th>商品名</th> <td><input type="text" name="item[data][3][name]" value="<?php echo $item[data][3][name]; ?>"></td> </tr> <tr> <th>商品個数</th> <td> <select name="item[data][2][num]"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> </td> </tr> </table> ができるようにPHPにてSESSION管理をおこなっています。 追加はできたのですが、 上記のフォーム4つほど出した後に商品2を削除した場合の商品1、商品3、商品4の各nameの番号(item[data][*][sir]、item[data][*][name]、item[data][*][num]の*部分) 振りなおしができず困っています。 いくらやってもできないため、どなたかソースを教えていただけないでしょうか。 宜しくお願いいたします。

  • PHPの構文

    名前と年齢をフォームページから入力して 名前・年齢、そして成人・未成年の表示をするPHPのサンプルがあります。 初学者で無駄な部分が多く複雑になってしまったのですが ここをもっとこうしたほうが良いなど もっとシンプルで分かりやすい構文にできるのでしょうか? よろしくお願いいたします。 in.php ----------------------------------------------- <html> <body> <form action="out.php" method="post"> <table><tr><td>名前入力: <input type="text" name="name"></td></tr> <tr><td>年齢入力: <input type="text" name="age"></td></tr> </table> <input type="submit" value="ボタン"> </form> </body> </html> ----------------------------------------------- out.php ----------------------------------------------- <html> <body> <?php $name = htmlspecialchars($_POST["name"], ENT_QUOTES); $agen = mb_convert_kana($_POST["age"], "a"); $age = htmlspecialchars($agen, ENT_QUOTES); If($name == ""){ if($age == ""){ echo "名前、年齢の入力がありません。"; }else{ echo "名前を入力してください。"; } }else{ if($age == ""){ echo "年齢を入力してください。"; }else{ echo "あなたの名前は{$name}、年齢は{$age}です。"; if($age<20){ echo "あなたは未成年です。"; }else{ echo "あなたは成人です。"; } } } echo "<p><a href='in.php'>フォームに戻る</a>"; ?> </body> </html> -----------------------------------------------

    • ベストアンサー
    • PHP
  • phpの絞り込みデータを最初から表示させない

    phpでテキストタブ区切りのデータを読み込み、javascriptで絞り込みを行うページを作成しました。 初心者ですが、欲しいソースを組み合わせ、 何とか絞り込みは可能になったのですが、最初に全データが表示されます。 最初ページを開いたときにあらかじめ設定したデータのみを表示させておくことは可能でしょうか? どの部分を表示すれば良いかわからず、 ソースは、phpの部分を表記させていただきました。 ─php─ <form> <? $fn = 'books.txt'; $line = file($fn); for ($a = 1; $a < count($line); $a++) { $data = split("\t", $line[$a]); for ($b = 0; $b < count($data); $b++) $array[$b][] = $data[$b]; } $data = split("\t", $line[0]);," echo '<table id="SampleData"><thead><tr> <th>日<br><br> <label> <select id="cell1" name="cell1" class="cellIndex0"> <option value="*">-</option> <option value="上">上旬</option> <option value="中">中旬</option> <option value="下">下旬</option> </select> </label> </th> <th>title</th> <th>IMG<br><br><br></th> </tr>'; for ($a = 0; $a < count($line) - 1; $a++) { echo '</thead><TR>'; for ($b = 0; $b < count($data); $b++) echo '<td>' . $array[$b][$a] . '</td>'; echo '</tr>'; } echo '</TABLE>'; ?> </form> こちらのサイトのように、最初は何も表示されない感じがよいです。 http://javascript.maxux.com/js104.htm (こちらはプルダウンが一つしかなかったので、既存のものを編集しようと考えていました) 参考になるページでもかまいません、ご存知の方、どうかよろしくお願いいたします。 質問ばかりで申し訳ないですが、データ数が現段階で10,000を越します。 mysqlも考えてはいましたが、データはcsvやタブ区切りの方が早く作れることと、htmlタグもcsv内にあるので変換が大変かと思うのですが・・・csvやタブ区切りでは難しいでしょうか。

  • PHPでMySQLにデーターを追加するところで壁に当たってしまいました

    PHPでMySQLにデーターを追加するところで壁に当たってしまいました。 PHP5.3&MYSQL5.1 1.フォームへ入力 2.確認画面 3.MySQLへデーター追加 1.form <html> <head><title></title></head> <body> <form method="post" action="conf.php"> <table> <tr><th>番号</th><td><input type="text" name="id" /></td></tr> <tr><th>タイトル</th><td><input type="text" name="title" /></td></tr> <tr><th>テキスト</th><td><textarea name="cont" cols="40" rows="5" /></textarea></tr> <tr><th>日付け</th><td><input type="text" name="update" size="10" /></td></tr> </table> <input type="submit" value="送信" /><input type="reset" value="リセット" /> </form> </body> </html> 2.確認画面 <html> <head><title></title></head> <body> <table> <tr><th>番号</th><td><?php echo htmlspecialchars($_POST["id"]) ?></td></tr> <tr><th>タイトル</th><td><?php echo htmlspecialchars($_POST["title"]) ?></td></tr> <tr><th>テキスト</th><td><?php echo htmlspecialchars($_POST["cont"]) ?></td></tr> <tr><th>日付け</th><td><?php echo htmlspecialchars($_POST["update"]) ?></td></tr> </table> <form method="post" action="upld.php"> <input type="hidden" name="did" value="<?php echo htmlspecialchars($_POST["id"]) ?>" /> <input type="hidden" name="title" value="<?php echo htmlspecialchars($_POST["title"]) ?>" /> <input type="hidden" name="cont" value="<?php echo htmlspecialchars($_POST["cont"]) ?>" /> <input type="hidden" name="update" value="<?php echo htmlspecialchars($_POST["update"]) ?>" /> <input type="submit" value="登録" /> </form> </body> </html> 3.MySQLへデーター追加 <?php $Con = mysql_connect("localhost","root",""); if ($Con == false) {dir ("MySQLの接続に失敗。");} if (!mysql_select_db("phpdata",$Con)) {dir ("データーベース接続に失敗。");} $sql = "insert into daimoku(id,title,cont,update) values('".$_POST["id"]."','".$_POST["title"]."','".$_POST["cont"]."','".$_POST["update"]."')";//SQL文の作成 $res = mysql_query($sql) or die(mysql_error());//クエリの実行 mysql_close($Con);//切断 ?> <html> <head> <title></title> </head> <body> <p>ご登録ありがとうございました。</p> <a href="01.php">戻る</a> </body> 以上のコードでデーターの追加が出来ません。 どなたか教えていただけないでしょうか?

    • ベストアンサー
    • PHP
  • 予約フォームのPHPの書き方について

    はじめまして。PHP初心者です。個人事業のHPを作成しており、予約システムを導入する為、MTS Simple Bookin C Ver.1.4.0 をインストールし、予約に必要な項目をhttps://www.nishi2002.com/3502.htmlやhttp://www.amagistudio.com/reservedemonstration/を参考に作成中です。 必要項目の plan groom_name groom_frigana groom_age bride_name bride_frigana bride_age arrival_date departure_date hotel を手順通りに追加し、予約フォームの入力まはで出たのですが、入力の確認が出てきません、、、 何が原因かご教授頂けましたら幸いです。 【 mtssb-booking-form.phpの編集】 737行辺りから <?php if (0 < $this->clcols['plan']) : ?><tr>    <th><?php echo apply_filters('booking_form_plan', 'プラン') ?></th> <td>        <?php echo esc_html($client['plan']) ?> <input type="hidden" name="booking[client][plan]" value="<?php echo esc_html($client['plan']) ?>" /> </td> </tr><?php endif; ?> <tr> <th>予約人数</th> <td> <?php foreach ($this->controls['count'] as $key => $val) : ?><div class="input-number"<?php echo $val != 1 ? ' style="display:none"' : '' ?>><?php $title = apply_filters('booking_form_count_label', __(ucwords($key), $this->domain)); if ($title != '') { echo "$title<br />"; } ?> <?php echo esc_html($client[$key]) ?><input type="hidden" name="booking[client][<?php echo $key ?>]" value="<?php echo esc_html($client[$key]) ?>" maxlength="5" /><?php echo apply_filters('booking_form_count_note', '') ?> </div><?php endforeach; ?> <?php if (isset($this->errmsg['count'])) : ?><div class="error-message"><?php echo $this->errmsg['count'] ?></div><?php endif; ?> </td> </tr> <tr> <td class="option-confirm-header" colspan="2"><?php echo apply_filters('booking_form_client_title', 'ご連絡先') ?></td> </tr> <?php if (0 < $this->clcols['company']) : ?><tr> <th><?php echo apply_filters('booking_form_company', '会社名') ?></th> <td> <?php echo esc_html($client['company']) ?> <input type="hidden" name="booking[client][company]" value="<?php echo esc_html($client['company']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['groom_name']) : ?><tr> <th><?php echo apply_filters('booking_form_groom_name', 'ご新郎様のお名前') ?></th> <td> <?php echo esc_html($client['groom_name']) ?> <input type="hidden" name="booking[client][groom_name]" value="<?php echo esc_html($client['groom_name']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['groom_furigana']) : ?><tr> <th><?php echo apply_filters('booking_form_groom_furigana', 'フリガナ') ?></th> <td> <?php echo esc_html($client['groom_furigana']) ?> <input type="hidden" name="booking[client][groom_furigana]" value="<?php echo esc_html($client['groom_furigana']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['groom_age']) : ?><tr> <th><?php echo apply_filters('booking_form_groom_age', '年齢') ?></th> <td> <?php echo esc_html($client['groom_age']) ?> <input type="hidden" name="booking[client][groom_age]" value="<?php echo esc_html($client['groom_age']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['bride_name']) : ?><tr> <th><?php echo apply_filters('booking_form_bride_name', 'ご新婦様のお名前') ?></th> <td> <?php echo esc_html($client['bride_name']) ?> <input type="hidden" name="booking[client][bride_name]" value="<?php echo esc_html($client['bride_name']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['bride_furigana']) : ?><tr> <th><?php echo apply_filters('booking_form_bride_furigana', 'フリガナ') ?></th> <td> <?php echo esc_html($client['bride_furigana']) ?> <input type="hidden" name="booking[client][bride_furigana]" value="<?php echo esc_html($client['bride_furigana']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['bride_age']) : ?><tr> <th><?php echo apply_filters('booking_form_groom_age', '年齢') ?></th> <td> <?php echo esc_html($client['bride_age']) ?> <input type="hidden" name="booking[client][bride_age]" value="<?php echo esc_html($client['bride_age']) ?>" /> </td> </tr><?php endif; ?> 続き→ https://okwave.jp/qa/q9532258.htm

    • 締切済み
    • PHP
  • 【PHP】smartyとPHPの記述違いとメリット

    smartyというのが、デザインとプログラムを分けれるというので 使ってみたのですが、 //--------------------smarty--------------------- <table border=1> <tr> <th>{$table.title}</th> </tr> {foreach item=result from=$data_list} <tr> <td>{$result[0]}</td> </tr> {/foreach} </table> と、smarty用の記述をHTML内にいろいろ書かなければならず //------------------php---------------------- <table border=1> <tr> <th><?=$table[title] ?></th> </tr> <?php foreach($data_list as $key => $value){ ?> <tr> <td><?= $value ?></td> </tr> <?php } ?> </table> とHTML内にPHPをいろいろ書くのと  あまり大差無い気がして どういう点がよいのがイマイチ分かりません。 smartyは 使う メリットは どういうものがあるのでしょうか。

    • ベストアンサー
    • PHP
  • アルゴリズムがわからない

    データベースから値を取得するコードを作っているのですがアルゴリズムがよくわからなくて困っています。 class name _____ A   山田 A   鈴木 A   高橋 B   佐藤  C   山本 C   田中 _____ というデータからブラウザへ <table><tr> <th>A</th><td>山田</td><td>鈴木</td><td>高橋</td> </tr></table> <table><tr> <th>B</th><td>佐藤</td> </tr></table> <table><tr> <th>C</th><td>山本</td><td>田中</td> </tr></table> というふうに出力したいんですがよい方法を教えてください。

  • php言語にて

    <?php print "<form><table border=\"1\" cellpadding=\"5\">\n"; for($i=0;$i<6;$i++){ if($i==0){print "<tr><td>&nbsp;</td><th>月曜日</th><th>火曜日</th><th>水曜日</th><th>木曜日</th><th>金曜日</th></tr>\n"; continue; } print "<tr><td align=\"center\">$i<br>限</td>"; for($j=1;$j<6;$j++){ print "<td><select name=\"kamoku$j$i\"><option value=\"\"> <option value=\"科目A\">科目 A<option value=\"科目B\">科目 B<option value=\"科目C\">科目 C<option value=\"科目D\">科目 D<option value=\"科目E\">科目 E<option value=\"科目F\">科目 F<option value=\"未定\">未定 </select> </td>"; } print "</tr>\n"; } print "</table>\n</form>"; ?> これにボタンを付けて、ボタンを押したら操作をできなくするにはどうすればいいですか? 保存のような機能を付けたいのですが… なにか参考になるサイトはありませんか?

    • 締切済み
    • PHP
  • PHPでCSVデーターの表示について

    PHPでCSVデーターの表示について 教えてください。PHPでCSVデーターを表示したいのですが一覧表示ではなくテキストをクリックして特定のデーターを表示させようと考えております。 CSVデーターの中身(CSV.csv) 一郎,男,20歳 二郎,男,22歳 一子,女,24歳 二子,女,26歳 --data.php-- <?php $csvFile = 'CSV.csv'; $tempCSV = file_get_contents($csvFile); $tempCSV = mb_convert_encoding($tempCSV,'utf-8','SJIS-win'); $fp = tmpfile(); fwrite($fp,$tempCSV); rewind($fp); setlocale(LC_ALL,'ja_JP.UTF-8'); while ($arr = fgetcsv($fp,1024)) { list ($name,$sex,$age) = $arr; echo '<p>',<a href="01.php">' . $name . '</a>','</p>'; } fclose($fp); function h($string) { return htmlspecialchars($string, ENT_QUOTES); } ?> 一郎をクリックしたら一郎のデーターだけを(01.php)で表示させたいのですがよく分りません。 01.phpは今のところ一覧表示されるものを置いてあります。 --01.php-- <?php $csvFile = 'CSV.csv'; $tempCSV = file_get_contents($csvFile); $tempCSV = mb_convert_encoding($tempCSV,'utf-8','SJIS-win'); $fp = tmpfile(); fwrite($fp,$tempCSV); rewind($fp); setlocale(LC_ALL,'ja_JP.UTF-8'); while ($arr = fgetcsv($fp,1024)) { list ($name,$sex,$age) = $arr; echo '<table border=1>'; echo '<tr>'; echo '<td>','名前','</td>'; echo '<td>'.$name.'</td>'; echo '</tr>'; echo '<tr>'; echo '<td>','性別','</td>'; echo '<td>'.sex.'</td>'; echo '</tr>'; echo '<tr>'; echo '<td>','年齢','</td>'; echo '<td>'.$age.'</td>'; echo '</tr>'; echo '</table>'; } fclose($fp); function h($string) { return htmlspecialchars($string, ENT_QUOTES); } ?> 本を読んだり、ググったりしてヒントになる様な物を探しているのですが中々見つかりません。 初心者で申し訳ありませんが、どなたか教えていただけないでしょうか?

    • ベストアンサー
    • PHP
  • PHPでレコード一覧から詳細へのリンク方法

    MySQLでデータベースを構築し、PHPで表示しています。 レコードを一覧で並べるのはうまく行きましたが…一覧から詳細へリンクさせるのがうまく行きません。 detail.phpというファイルを作成してリンクさせようと思っていますが… (1)formタグを使って、GETでSUBMITする形にする場合はどうしたらいいでしょうか? (2)普通にaタグを使って、detail.php?id=xxxxx という形にする方法でもいいのですが、リンクを教えてdetail.phpに移った時点で"?"以下が消えてしまいます。 (1)の方法がやり易いかと思い、色々調べて自分なりにやってみましたが、"detail.php?id=%BE%DC%BA%D9&id=1&id=4&id=3&id=5&id=6&id=7&id=9&id=10&id=11" という形になり、なんでか全てのIDを並べている形になっています… 理想はdetail.php?id=xxxxxとなって欲しいのですが… ちなみにコードは以下の通りです。 <? php echo "<table>"; echo "<tr>"; echo "<th>ID</th>"; echo "<th>名前</th>"; echo "<th>所在地</th>"; echo "<th>詳細</th>"; echo "</tr>"; while( $row = mysql_fetch_array($result) ) { echo "<form method=\"GET\" action=\"detail.php?id=".$row["id"]."\">"; echo "<tr>"; echo "<td>".$row["id"]."</td>"; echo "<td>".$row["name"]."</td>"; echo "<td>".$row["addr"]."</td>"; echo "<td><input type=\"submit\" value=\"詳細\" name=\"id\"></td>"; echo "<input type=\"hidden\" value=\"".$row["id"]."\" name=\"id\">"; echo "</tr>"; } echo "</table>"; ?>

    • ベストアンサー
    • MySQL

専門家に質問してみよう