• 締切済み

値が別窓に渡せない

今故あってPHPの勉強をしているのですが 別窓に値を渡す方法がぜんぜん検討がつかないので質問させてください。 要点=OKボタンが押された時社員ナンバーを左から見て一致部分一致 した社員データを親窓内で表示させその後表示させた社員データを クリックすると別窓で詳細を表示させる。 別窓内で別のSQL文を組んでそれで社員データを表示させる なにぶんこのようなサイトを利用するのは初めてです。 乱筆乱文にて失礼いたします。 親窓ソースは以下の通り <haed> <title>データ詳細</title> </haed> <body BGCOLOR="#55FFFF"> <form action = "no_rist5.php" method = "post"> <?php $str_url = "********"; $str_user = "********"; $str_pass = "********"; $str_db = "********"; $link = mysql_connect($str_url, $str_user, $str_pass); if ($link == false) { die("MySQLの接続に失敗しました。"); } //dbを選択 $sdb = mysql_select_db($str_db, $link)or die("データベース選択に失敗しました。"); print'<p><Meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">'; $n_01_key = $_POST["a_key"];//01 $n_02_key = $_POST["b_key"];//02 $n_03_key = $_POST["c_key"];//03 $n_04_key = $_POST["d_key"];//04 print "社員コード"; print '<input name="a_key" type = "text" style = "ime-mode:disabled" size = "5" MAXlength = "5" value="'.$n_01_key.'">'; print '<input name="b_key" type = "submit" value="OK"><br>'; print '社員コード、社員名'; print '<br>'; if($n_02_key=="OK") { if(empty($n_01_key)) { print '<br><font size=3 color="#FF0000">社員コードが入力されていません。</font>'; } else { if(!preg_match("/^[0-9]*$/",$n_01_key)) { print '<br><font color="#FF0000">社員コードに数字以外の値が入力されました。</font>'; } else { $a_sql = "SELECT number FROM no_rist WHERE number LIKE '$n_01_key%' ORDER BY number"; $b_sql = "SELECT enp_name FROM no_rist WHERE number LIKE '$n_01_key%' ORDER BY number"; $rs1 = mysql_query($a_sql,$link)or die(mysql_error()); $rs2 = mysql_query($b_sql,$link)or die(mysql_error()); if($rs1!=NULL) { while($arr_item1 = mysql_fetch_assoc($rs1) and $arr_item2 = mysql_fetch_assoc($rs2)) { foreach($arr_item1 as $key1 => $n_03_key) { foreach($arr_item2 as $key2 => $n_04_key) { print '<a href="http://localhost/no_rist6.php" target="rist">'; print '<input name="c_key" type = "submit" value="'.$n_03_key.'">'; print '</a>'; print '<font color="#55FFFF">■■</font>'; print $n_04_key; } } print "<br>\n"; } } else { print '<br><font size=3 color="#ff0000">社員データがありません。</font>'; } } } } print "\n"; mysql_close($link); ?> </form> </body> </html>

  • PHP
  • 回答数5
  • ありがとう数4

みんなの回答

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.5

submitボタンをaタグで囲っても意味がないので、まずこの部分を変更する必要がありますね。 簡単にするならボタンはやめて文字列にすることです。 どうしてもボタンが使いたいならボタンごとにformタグで括るか、あるいはsubmitはやめてbuttonにしてJavaScriptで処理をする、という風になるかと思います。 値はGET(URLに値を埋め込む)でキーとなる値を渡すだけかと思いますが(submitボタンを使う場合はhiddenにキーとなる値を入れてPOSTで渡すことも可能)。

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.4

== database.class.inc == <?php class Database {  const SERVER  = '*****';  const USER_NAME = '*****';  const PASSWORD = '*****';    const NO_ERR = 0;    protected $handle  = false;  protected $position = false;    public function __construct( $database_name ) {   $this->handle = mysql_connect( self::SERVER, self::USER_NAME, self::PASSWORD );      strlen( $database_name ) && $this->selectDB( $database_name );  }    public function __destruct( ) {   is_resource( $this->position ) && mysql_free_result( $this->position );   is_resource( $this->handle ) && mysql_close( $this->handle );  }    public function __get( $name ) {   switch ( $name ) {    case 'errNo' : return mysql_errno( $this->handle );    case 'errMsg' : return mysql_error( $this->handle );   }  }    public function selectDB( $database_name ) {   mysql_select_db( $database_name, $this->handle );  }    public function query( $query ){   $this->position = mysql_query( $query, $this->handle );   return $this->position ? mysql_num_rows( $this->position ) : false;  }    public function next( ) {   return mysql_fetch_assoc( $this->position );  } } ?> == emp.php == <?php function check_emp_code( $emp_code, &$err_msg ) {    if ( empty( $emp_code ) ) {   $err_msg = '社員コードが入力されていません。';   return false;  }    if ( preg_match( '/[^0-9]/', $emp_code ) ) {   $err_msg = '社員コードに数字以外の値が入力されました。';   return false;  }    return true; } ?> == widget.php == <?php function h( $str ) {  echo htmlspecialchars( $str ); } ?> # 全角スペースでインデントが入れてあるので、コピーする場合は半角などに変換してください。

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.3

== no_rist5.php == <?php  header( 'Content-Type: text/html; charset=Shift_JIS' );  isset( $_POST ) or die( );    require_once 'emp.php';  require_once 'database.class.inc';  require_once 'widget.php';    $err_msg = '';    if ( check_emp_code( $n_01_key, $err_msg ) ) {   if ( $emp_ary = fetch_emp( $n_01_key, $err_msg ) ) {    if ( count( $emp_ary ) == 0 ) {     $err_msg = '社員データがありません。';    }   }  }   function fetch_emp( $key, &$db_error ) {  $db = new Database( '*****' );  $emp_ary = array( );    if ( $db->query( "SELECT * FROM `no_rist` WHERE `number`='{$key}' LIMIT 1" ) ) {   $emp_ary = $db->next( );  }    if ( $db->errNo !== Database::NO_ERR ) {   $db_error = $db->errMsg;   return false;  }    return $emp_ary; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <haed> <title>データ詳細</title> </haed> <body style="background-color:#55FFFF;"> <?php if ( strlen( $err_msg ) ) : ?>  <p style="color: #FF0000; font-size: smaller;">   <?php h( $err_msg ); ?>  </p> <?php elseif ( is_array( $emp_ary ) && count( $emp_ary ) ) : ?>  <table>   <?php foreach ( $emp_ary as $key=>$value ) : ?>   <tr>    <td><?php h( $key ); ?></td>    <td><?php h( $value ); ?></td>   </tr> <?php endforeach; ?>  </table> <?php endif; ?> </form> </body> </html>

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.2

== main.php == <?php  header( 'Content-Type: text/html; charset=Shift_JIS' );  isset( $_POST ) or die( );    require_once 'emp.php';  require_once 'database.class.inc';  require_once 'widget.php';    $err_msg = '';  $n_01_key = $_POST[ 'a_key' ];  $emp_ary = array( );    if ( check_emp_code( $n_01_key, $err_msg ) ) {  if ( $emp_ary = fetch_emp( $n_01_key, $err_msg ) ) {   if ( count( $emp_ary ) == 0 ) {   $err_msg = '社員データがありません。';   }  }  }   function fetch_emp( $key, &$db_error ) {  $db = new Database( '*****' );  $emp_ary = array( );    if ( $db->query( "SELECT `number`,`enp_name` FROM `no_rist` WHERE `number` LIKE '{$key}%' ORDER BY `number`" ) ) {  while ( $row = $db->next( ) ) {   $emp_ary[] = $row;  }  }    if ( $db->errNo !== Database::NO_ERR ) {  $db_error = $db->errMsg;  return false;  }    return $emp_ary; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <haed> <title>親窓</title> </haed> <body style="background-color:#55FFFF;"> <form action="<?php echo $_SERVER[ 'PHP_SELF' ]; ?>" method="post">  <p>  <input type="text" name="a_key" style="ime-mode:inactive" size="5" maxlength="5" value="<?php echo $n_01_key; ?>">  <input type="submit" value="OK">  </p> </form> <?php if ( strlen( $err_msg ) ) : ?>  <p style="color: #FF0000; font-size: smaller;">  <?php h( $err_msg ); ?>  </p> <?php elseif ( is_array( $emp_ary ) && count( $emp_ary ) ) : ?>  <form action="no_rist5.php" method="post" target="rist">  <table>   <thead>   <th>社員コード</th><th>社員名</th><th></th>   </thead>   <tbody> <?php foreach ( $emp_ary as $emp ) : ?>   <tr>    <td><?php h( $emp[ 'number' ] ); ?></td>    <td><?php h( $emp[ 'enp_name' ] ); ?></td>    <td><button type="submit" name="c_key" value="<?php h( $emp[ 'number' ] ); ?>">詳細</button></td>   </tr> <?php endforeach; ?>   </tbody>  </table>  </form> <?php endif; ?> </form> </body> </html>

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.1

POST で値は渡せるので考え方はそれでいいと思いますが、それぞれが混在しているため、コーディングがしにくいのではないでしょうか? PHP の話というよりはプログラミングに関する話のように思います。 ひとまず、列挙する部分と、詳細を表示する部分は完全に別ファイルに分離させたほうがよいと思います。 その他、データを受け取る部分、データベースに関する部分、出力に関する部分、エラーに関する部分など、まとめられそうな部分は ファイル、関数、クラスなどに、状況にあわせて選択するとよいと思います。

zyaku2929
質問者

お礼

なるほど、列挙させて表示させる部分と詳細を表示させる部分を 完全に別々の関数で処理すれば良いって事ですね? なるほど、そこは自分1人では思いつきませんでした。 色々に参考にします。 ありがとうございました。

zyaku2929
質問者

補足

少々言葉足らずな部分有ったので補足します 親窓(メイン表示部分)=no_rist5.php 小窓(値を渡したい窓部分)=no_rist6.php つまり親窓(no_rist5.php)でデータの概要を列挙させて その中で列挙させたデータの中から1個を選択して それのDB上のプライマリキー部分(この場合のカラム名はnumber) の値を1つだけを独立した子窓(no_rist6.php)に渡して 詳細を表示させたいと言う意味だったのですが・・・ 言葉足らずで申し訳ありませんでした。

関連するQ&A

  • 間違ってますか?

    お世話になってます。 下記のような記述を書いています。 $key = $_POST["inpnum"]; $shopno = $_POST["number"]; $dbHandle = mysql_connect("localhost"); if ($dbHandle == False) { print ("can not connect db\n"); exit; } $db = "test"; $sql = "select * from tab1 where note= '$shopno'"; $rs = mysql_db_query($db,$sql); $fields = mysql_num_fields($rs); $rows = mysql_num_rows($rs); if ($rows > 0) {~ このままでは、上手く行くのですが、 $sql = "select * from '$key'where note= '$shopno'"; とテーブル名を変数に変えると、エラーが出ます。 基本的な事のような気がしますが、何度やっても上手く行かないので、お力添え宜しくお願いします。

    • 締切済み
    • PHP
  • while()から得られるインデックス..

    お世話になります。 whileでSQLデータベースから抽出した一覧(list.php)から、htmlのフォームのラジオボタンを使って SQL上のデータを修正したいと考えていますが、うまくいきません。 list.php------------------------------------------- 1 <? 2 $db = mysql_connect('localhost','user','pass'); 3 $db_name = 'db'; 4 $TBL = "test"; 5 $str_sql = "SELECT * FROM {$TBL}"; 6 $rs = mysql_query($str_sql,$db); 7 $cnt =mysql_num_rows($rs);//データの個数 8 ?> 9  10 <form action="record.php" method="post" name="form1"> 11 <table> 12 <? while($arr_record = mysql_fetch_assoc($rs)){?> 13  <tr> 14  <td> 15  <input name="disp[]" type="radio" value="<? print $arr_record[id];?>"<? if($arr_record[disp] == 1){print" checked=\"checked\"";}?> /> 16  <input name="id[]" type="hidden" value="<? print $arr_record[id];?>"> 17  </td> 18 </tr> 19 <? }?> 20 </table><br /><br /> 21 <input type="hidden" name="cnt" value="<? print $cnt;?>"> 22 <input type="submit" name="Submit" value="Submit" /> 23 </form> list.php ここまで---------------------------------- record.php----------------------------------------- 1 <? 2 $cnt = $_REQUEST['cnt'];//データの個数 3 4 for($i=0;$i<=($cnt-1);$i++){ 5 $disp = $_POST['disp'][$i]; 6 $id = $_POST['id'][$i]; 7 8 if($disp == $id){$disp = 1;}else{$disp = 0;} 9 10 $str_sql = "UPDATE {$TBL} SET disp='{$disp}' WHERE id='{$id}'"; 11 mysql_query($str_sql,$db); 12 } 13 ?> record.php ここまで------------------------------- list.php15行目の <input name="disp[]" type="radio" .. /> は、 record.php5行目の $disp = $_POST['disp'][$i]; で[0][1][2][3]..と値を取得できるものと考えておりますが ここが取得できていないようです。 $disp = $_POST['disp'][0]; ↑これだけは、正しく値が取得できるのですが、[1]以降は取得できていません。 record.php6行目の $id = $_POST['id'][$i];は、[0][2][3]..と取得できているため while文や for文の間違いではないと思うのですが・・。 初心者から本を見ながらの独習のため、基礎的な間違いもあるかと思います。 もう2日も悩んでいます。先輩方よろしくお願いします!!

    • ベストアンサー
    • PHP
  • 改行処理がうまくいきません

    今現在、PHPで掲示板を運用しています。 PHP初心者です。 掲示板で訪問者のユーザーのコメントを以下のように処理しています。 $post_arr[$h] = htmlspecialchars($post_arr[$h]); $post_arr[$h] = str_replace("\r\n", "\r", $post_arr[$h]); $post_arr[$h] = str_replace("\r", "\n", $post_arr[$h]); $post_arr[$h] = str_replace("\n", "<br>", $post_arr[$h]); 改行→<br>変換を行っているのですが、ごくたまに(特定の訪問者)改行処理がされず困っています。 これをcsvでログを保存しているのですが、<br>処理をされずデータがずれてしまいます。 ログを調べるとその訪問者の方は、古いものをお使いなのかなと思いましたが、WIN XP,IE6でしたので訪問者側に問題ないと思うのですが。 初心者で大変恐縮ですが、ご返答よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPから、MySQL内に日本語名のテーブルを作成する事ができません。

    PHPから、MySQL内に日本語名のテーブルを作成する事ができません。 いつも、お世話になっております。 小生、現在、WindowsXPSP3上で、Apache2.2.15とMySQL5.1.46とPHP5.2.13を使用し、PHPを勉強している、PHP初心者です。 今回質問させて頂きたいのは、PHPからMySQL内にデータベースを作成後、日本語名でテーブルを作成したいのですが、なぜか作成できません。 PHPのソースは以下の様になっています。 -----mysql.php----- <?php //MySQLに接続 $sql = mysql_connect('localhost', 'root', 'root'); if(!$sql){ print("MySQLに接続失敗" . "<br>\n"); mysql_close($sql); die(); } else{ print("MySQLに接続成功" . "<br>\n"); } //DB作成 $create_db = 'CREATE DATABASE HUMAN'; if(mysql_query($create_db, $sql)){ print("DB作成成功" . "<br>\n"); } else{ print("DB作成失敗" . "<br>\n"); mysql_close($sql); die(); } //DB選択 if(!(mysql_select_db("HUMAN"))){ print("DB選択失敗" . "<br>\n"); mysql_close($sql); die(); } //文字コードをutfに設定 mysql_query("set names utf-8"); //テーブル作成 $create_table = "CREATE TABLE 人間 (名前 VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, 年齢 INT NOT NULL, 身長 VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, 体重 VARCHAR(50) CHARACTER SET utf8 COLLATE uft8_general_ci NOT NULL, 職種 VARCHAR(50) CHARACTER SET utf8 COLLATE uft8_general_ci NOT NULL, ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; if(mysql_query($create_table, $sql)){ printf("テーブル作成成功" . "<br>\n"); } else{ print("テーブル作成失敗" . "<br>\n"); mysql_close($sql); die(); } //テーブルのデータを取得、表示 $select = "SELECT * FROM 人間"; if($result = mysql_query($select, $sql)){ print("データ取得成功" . "<br>\n"); } else{ print("データ取得失敗" . "<br>\n"); mysql_close($sql); die(); } while($getdata = mysql_fetch_assoc($result)){ foreach($getdata as $output){ print($output . "<br>\n"); } } //MySQLにCOMMIT文送信 $commit = "COMMIT;"; if(mysql_query($commit, $sql)){ print("コミット成功" . "<br>\n"); } else{ print("コミット失敗" . "<br>\n"); mysql_close($sql); die(); } //MySQLの接続終了 mysql_close($sql); ?> 以上です。 お忙しい中、申し訳ございませんが、先輩方ご教示宜しくお願い致します。

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

    PHPで占いを作っているのですが、ランダム表示にするにはどうすればいいですか。 <html> <head> <title>入力フォーム</title> </head> <body> <center> <?php //接続 $link = mysql_connect("○○○","○○○","○○○"); if(!$link){ die('Connected error !'.mysql_error()); } //DB選択 $db_selected = mysql_select_db('○○', $link); if(!$db_selected){ die('Connected error !'.mysql_error()); } //フォーム入力文字を表現 $○○= $_POST['name']; /* echo $○○.'<br>'; */ //ハッシュ値の取得 $hash = crc32($○○); if($hash < 0){ $hash = 0 - $hash; } /* echo $hash; */ $result = mysql_query("SELECT ○○") or die("sql error !"); $retukazu = mysql_num_rows($result); $kekka = $hash % $retukazu + 1; //文字コード設定 mysql_query("SET NAMES sjis"); $sql = mysql_query("SELECT ○○ = $kekka"); if(!$sql){ die('query_error !'.mysql_error()); } while($row = mysql_fetch_assoc($sql)){ echo '<center><br />あなたはきっと・・・<br /><br /><font color= "Red"><strong>'.$row['Memo'].'</strong></font>です<br />'; } ?> </p> </body> </html>

    • ベストアンサー
    • PHP
  • PHP+MySQL 内部結合(INNER_JOIN)がうまく行きません。

    以下の文で「client_master」テーブルと「jobmaster0717」テーブルを内部結合させようとしているのですが、うまく行きません。どこがおかしいのでしょうか? <?php  // データベースサーバへの接続・データベースの選択  $db = mysql_connect('localhost','test','password');  $db_name = 'test';  mysql_select_db($db_name,$db);  // 処理対象テーブル  $tbl_name1 = "client_master";  $tbl_name2 = "jobmaster0717";    // 内部結合(INNER JOIN句)  $str_sql1 = "SELECT * FROM {$tbl_name1}"       . " INNER JOIN {$tbl_name2}"       . " ON {$tbl_name1}.company_ID"       . "  = {$tbl_name2}.client_ID;";  $rs1 = mysql_query($str_sql1,$db);  print "\"{$str_sql1}\"<br>\n";  // 結果セットの表示  show_rs($rs1,$db);  print "<br>\n";  // 結果セット(結果ID)の開放  mysql_free_result($rs1);    // データベースサーバの切断  mysql_close($db); ?>

  • クラスについて

    今作っているプログラムのソースが以下のようです <html> <head> <meta http-equiv="Content-type" content="text/html; charset=UTF-8"> <input type="hidden" name="ie" value="UTF-8"> <title>7-4 MySQLクラスでのデータの表示</title> </head> <body> <b>入力された条件&nbsp;&nbsp;&nbsp;&nbsp;</b> <?php // 検索条件の表示 print "直接入力:"; print $_POST['chokusetsu']; print "&nbsp;&nbsp;&nbsp;&nbsp;読み:"; print $_POST['yomi']; print "&nbsp;&nbsp;&nbsp;&nbsp;画数:"; print $_POST['kakusuu']; print "&nbsp;&nbsp;&nbsp;&nbsp;部首:"; print $_POST['busyu']; print "&nbsp;&nbsp;&nbsp;&nbsp;の検索結果"; $search_key1 = addslashes($_POST['chokusetsu']); $search_key2 = addslashes($_POST['yomi']); $search_key3 = addslashes($_POST['kakusuu']); $search_key4 = addslashes($_POST['busyu']); //print $search_key1; //$search1にはきちんと値が入っている require_once("mysql.php");// MySQLへのID・パスワードの取得をするファイルへのアクセス //require_once("kanjiteigi.php"); //ユーザ定義関数ファイルへのアクセス function kensaku($str1,$str2,$str3,$str4){ $GLOBALS["mysql"] = new MySQL; $GLOBALS["sql"] = "SELECT * FROM tankanji WHERE kanji like '%$str1%' AND (onyomi like '%$str2%' OR kunyomi like '%$str2%') AND kakusuu like '%$str3%' AND busyu like '%$str4%'"; $GLOBALS["mysql"]->query($GLOBALS["sql"]); } // 検索条件を変数に代入してDB内を検索 kensaku($search_key1,$search_key2,$search_key3,$search_key4); //print $sql; //$mysql->query($sql); ?> //require_once("kanjiteigi.php");このような形でコメントアウトしてますが、本当はkanjiteigi.phpの中に function kensaku($str1,$str2,$str3,$str4){ $GLOBALS["mysql"] = new MySQL; $GLOBALS["sql"] = "SELECT * FROM tankanji WHERE kanji like '%$str1%' AND (onyomi like '%$str2%' OR kunyomi like '%$str2%') AND kakusuu like '%$str3%' AND busyu like '%$str4%'"; $GLOBALS["mysql"]->query($GLOBALS["sql"]); } と記述している関数をいれて参照してきたいのですが、kanjiteigi.phpにどのような記述をしていいかで悩んでいます。グローバル変数とかもややこしくて… どなたかクラスに詳しい方おられますでしょうか?? ちなみにkanjiteigi.phpの中に <?php class kanjiteigi{ // ●:ユーザ定義関数 // ○ demo1.htmlで入力する検索条件を入力し、その条件で検索するSQL文の発行し、DB内を検索 // ($str0=検索するDBのテーブル名、$str1=漢字、$str2=読み、$str3=画数、$str4=部首) // DB内を検索 var $mysql; var $sql; function kensaku($str1,$str2,$str3,$str4){ $GLOBALS["mysql"] = new MySQL; $GLOBALS["sql"] = "SELECT * FROM tankanji WHERE kanji like '%$str1%' AND (onyomi like '%$str2%' OR kunyomi like '%$str2%') AND kakusuu like '%$str3%' AND busyu like '%$str4%'"; $GLOBALS["mysql"]->query($GLOBALS["sql"]); } } ?> としてもダメでした

    • 締切済み
    • PHP
  • MySqlに登録したデータを更新すると文字化けする

    PHP5.2 MySql5.1.34 文字コードSJIS MySqlに登録したデータを更新すると文字化けします。 回答をよろしくお願い致します。 // MySQLのクライアントの文字コードをsjisに設定 mysql_query("SET NAMES 'sjis'") or die("can not SET NAMES sjis"); // データを取り出す $sql = "SELECT created_at, mes, url FROM message WHERE (id = ".$_POST["id"].");"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); $row = mysql_fetch_array($res, MYSQL_ASSOC); // 取り出したデータを表示する print "<form action=koushin.php method=post accept-charset=\"Shift_JIS\">"; print "日付:<input type=text size=30 name=created_at value=" . $row["created_at"] . "> "; print("<br>"); print("<br>"); print "メッセージ:<input type=text size=50 name=mes value=" . $row["mes"] . "> "; print("<br>"); print("<br>"); print "URL:<input type=text size=80 name=url value=" . $row["url"] . "> "; print "<input type=hidden name=id value=" .$_POST["id"]. ">"; print("<br>"); print("<br>"); print "<input type=submit value=更新>"; print("<br>"); print("<br>"); print "</form>"; koushin.php <?php $sv = "サーバ"; $dbname = "データベース"; $user = "ユーザー"; $pass = "パスワード"; $conn = mysql_connect($sv, $user, $pass) or die("接続エラー"); mysql_select_db($dbname) or die("接続エラー"); $id = $_POST["id"]; $created_at = $_POST["created_at"]; $mes = $_POST["mes"]; $url = $_POST["url"]; $sql = "UPDATE message SET updated_at = now() , created_at = '{$created_at}' , mes = '{$mes}' , url = '{$url}' WHERE id = $id"; $res = mysql_query($sql, $conn) or die("更新エラー"); mysql_close($conn); ?>

    • ベストアンサー
    • MySQL
  • MySQLのDB

    現在MySQLのDBを使いWeb上で情報を検索できる物を作っています。外の時に県名を入れてもらいその県名に当てはまる物を抽出するというものをやりたいのですが、どうしてもDBの所で止まってしまいます。 どうかおしえていただけないでしょう?下記参照 --参照-- my $num; my $str1SQL; $str1SQL=qq{SELECT kyu16 }; $str1SQL=$str1SQL.qq{FROM kyu_table }; if($ADDR1 eq "茨城県"){ # 場所(県) $STRSQL=$str1SQL; $STRSQL=$STRSQL.qq{WHERE kyu16 LIKE "%$ADDR1%" }; } if ($DEBUG_FLG eq '1') {print "STRSQL=$STRSQL<BR>\n";} # debug $sth = $Com::db->prepare($STRSQL) or &Com::ErrorDB("<BR><FONT COLOR=\"#FF0000\" SIZE=+1><B>エラーコード:検索04<br>$ERRDBMSG</B></FONT><BR>"); $sth->execute or &Com::ErrorDB("<BR><FONT COLOR=\"#FF0000\" SIZE=+1><B>エラーコード:検索05<br>$ERRDBMSG</B></FONT><BR>"); $num = $sth->rows; if ($DEBUG_FLG eq '1') {print "num=$num<BR>\n";} # debug

    • 締切済み
    • CGI
  • mysql_select_db()関数に関して・・・。MySQLでテーブルの作成ができません。

    こんにちは、さくらインターネットのレンタルサーバでMySQLとphpを連動させたサイトを作っているのですが、初歩的なことでつまずいてしまい困っています。 まず、フォームで入力させたデータをPOSTで受け取り、その受け取ったデータをテーブル名として、データベース上にテーブルをつくりたいのですが、エラー文が表示されるだけでできません。 データベース自体への接続はできているようなのですが、phpMyAdminで見ても全くできていません。SQL文をphpMyAdminで実行するときちんと正常にテーブルができますので、そもそもデータベースが使用できないとか、もしくはSQL文の間違いでもなさそうです。 $t1 = $_POST['test1']; $t2 = $_POST['test2']; echo"{$t1}を受け取りました<br>"; $link = mysql_connect('mysql**.db.sakura.ne.jp', 'ユーザー名', 'パスワード'); if (!$link) { die('接続失敗です。'.mysql_error()); } print('接続に成功しました。<br>'); //1.さくらインターネット内にあるデータベースの選択 $db_name = "自分のデータベース名"; $selectDB = mysql_select_db($db_name,$link) or die("接続できません。"); //2.データベース内にテーブルを作成。 echo"{$t1}がテーブル名になります。<br>"; //3.テーブル作成用SQL文 $str_sql = "CREATE TABLE {$t1}" . "(" . "{$t2} INT(7) NOT NULL," . ");"; //4.上のSQL文を実行してテーブルを作る。 mysql_query($str_sql,$selectDB); echo"データベース内にテーブル「{$t1}」を作成しました。<br>"; //データベースへの接続を切断 $close_flag = mysql_close($link); if ($close_flag){ print('切断しました。<br>'); } 実行結果:Warning: mysql_query(): supplied argument is not a valid MySQL-Link resourceとなってテーブルは作成されず。 自分でも調べて見たところ、mysql_connect()での接続はちゃんとできているようなのですが、その次のmysql_select_db()関数がうまく働いていないようです。 つまりデータベースの選択ができていないので当然エラーとなるようです。 もう何日も悩んでいます。わかる方がいましたらどうぞよろしくお願いします。

    • ベストアンサー
    • PHP