3

さて、Countries というテーブルがあり、次のようになります。

---------------------------
|Country      |    Code   |
---------------------------
|Afganastan   |     AF    |
|ÅLAND ISLANDS|     AX    |
|  etc.       |     etc.  |
---------------------------

私がやりたいことは、ユーザーが国を選択する動的メニューを作成することです。それ自体は、ユーザーが送信した後に呼び出すことができる値として保存されます。

私はここで何かを試しましたが、何が起こるかを確認するために入力するだけで、PHPとHTMLにまだ慣れていないため、それが何をしているのかわかりません。

とにかく、私は本当に立ち往生しており、このサイトのグーグルと検索機能を使用してみましたが、何もうまくいきませんでした...

私が試したコードは次のとおりです。

<select>
    <?php
        $result = mysql_query('SELECT Country FROM Countries');

        echo '<select name="country">';

        while ($row = mysql_fetch_array($result))
        {
           echo '<option value="'.$row['id'].'">'.$row['name'].'</option>';
        }

        echo '</select>';
    ?>

   </select>

結果は、データベースからの国のリストを含むドロップダウン メニューのように見えるはずです。しかし、これは機能せず、ドロップダウンにこれを表示するだけです:

.$row['name']

それは国でさえないので、これは私が望むものに近いものではありません. コードのその部分を削除すると、ユーザーが選択できるオプションがなくなり、メニューが空になります。

編集 これまでのところ、まだ機能しない私のコード:

<select name = 'country'>
    <?php

    include ("account.php");
    include ("connect.php");

        $result = mysql_query('SELECT Code , Country FROM Countries');
        while ($row = mysql_fetch_array($result))
            {?>

            <option value="<?php echo $row['Code']?>"><?php echo $row['Country']?></option>

            <?php}

    ?>

   </select>

および行によりinclude ("account.php");include ("connect.php");データベースに接続できます。

4

9 に答える 9

1

あなたのコードはこのようなものでなければなりません

$host = "localhost";
$user = "root";
$pass = "yourpassword";
$db   = "databasename";

// This part sets up the connection to the 
// database (so you don't need to reopen the connection
// again on the same page).
$ms = @mysql_connect($host, $user, $pass);
if ( !$ms )
{
echo "Error connecting to database.\n";
}

// Then you need to make sure the database you want
// is selected.
@mysql_select_db($db);


<form method = "POST" action = "abc.php">
<select name = 'country'>
<?php
$result = mysql_query('SELECT id , name FROM Countries');
while ($row = mysql_fetch_array($result))
    {?>
       <option value="<?php echo $row['id']?>"><?php echo $row['name']?></option>
    <?php}
?>
<input type = "submit" value = "Submit">
</form>

今phpでこれを使用します

echo '<pre>';
print_r($_POST);

そして、ユーザーが選択したものが表示されます。設定を確認してください。問題がある可能性があります。

于 2012-04-26T05:57:36.250 に答える
0

あなたの一重引用符と二重引用符はあなたを台無しにしています:

echo '<option value="'.$row['id'].'">'.$row['name'].'</option>';

次のようにする必要があります。

echo "<option value=\"" . $row['id'] . "\">" . $row['name'] . "</option>";

スクリプトを一重引用符で囲むことはできますが、スクリプトから飛び出して実行する$row['id']$row['name']、引用符で囲まれたコードに戻っていると見なされるため、問題が発生しています...上記の例を使用して、二重で開始/終了してください-引用符を使用し、表示する必要がある内部のすべての二重引用符をエスケープするか、$row[\'id\']and内の単一引用符をエスケープします$row[\'name\']

タントがあなたを助けてくれるはずです。

于 2012-04-26T06:13:42.170 に答える
0

まず、テーブルに列idがありません。クエリを次のように変更してみてください

SELECT Country, Code FROM Countries

次に、コードとhtmlは次のようになります

<?php

$host = "localhost";
$user = "user";  //username
$pass = "pass";  //password
$db   = "db";    //database

$con = @mysql_connect($host, $user, $pass);
if ( !$con )
{
echo "Error connecting to database.\n";
}

@mysql_select_db($db);
?>

<select name="country">
<option value="0" selected="selected">Choose..</option>
<?php
//echo '<select name = \'country\'>';

    $result = mysql_query('SELECT Country, Code FROM Countries');

    while ($row = mysql_fetch_array($result))
    {
       echo '<option value="'.$row['Code'].'">'.$row['Country'].'</option>';
    }

?>
</select>
于 2012-04-26T06:13:43.503 に答える
0

私は自分が抱えていた問題を理解しました。1 つ目は、ページに追加の select タグがあったことと、2 つ目は、ファイルが php ファイルではなく html ページとして保存されたことです。これを理解するのを手伝ってくれたみんなに感謝します!

于 2012-04-26T20:12:56.693 に答える
0

mysql_fetch_arrayを使用している場合は、フィールド名または選択したインデックスのいずれかを使用して、フェッチされた行からそれらを読み取ることができます。sprintfまたはprintf関数を使用してコンテンツを文字列にマージすることもできます。これにより、値をマージするために必要な引用符が HTML フラグメントからきれいに保たれます。

$result = mysql_query('SELECT Country, Code FROM Countries');
while ($row = mysql_fetch_array($result)) {
   printf('<option value="%1$s">%2$s</option>',
            $row['Code'], $row['Country']);
}
于 2012-04-26T06:59:48.653 に答える
0

このコードを試してください

 <?php
        $result = mysql_query('SELECT * FROM Countries');
?>
<select name="country">
<?php 

        while ($row = mysql_fetch_array($result))
        {
?>
<option value="<?php echo $row['id']; ?>"><?php echo $row['name']; ?></option>
<?php
        }
?>
</select>
于 2012-04-26T05:55:06.363 に答える
0

私のコードを試してみてください。私はこれを使用していますが、実際に機能します...値を変更するだけです...

<?php
    include ('connect.php');

    $sql = "SELECT * FROM casestatusfile";
    $result = mysql_query($sql);

    echo "<select name = 'txtCaseStatus'/>";
    echo "<option value = ''>--- Select ---</option>";
    $casestatus = $_POST['txtCaseStatus'];
    $selected = 'selected = "selected" ';
    while ($row = mysql_fetch_array($result)) {
    echo "<option " .($row['CASESTATUSCODE'] == $casestatus? $selected:''). "value='". $row['CASESTATUSCODE'] ."'>" . $row['CASESTATUS'] ."</option>";
    }
    echo "</select>";
    ?>

それが私が使用しているものなので、それが機能していると確信しています....

于 2013-03-09T13:55:25.837 に答える
0
  <select>
    <?php
    $result = mysql_query('SELECT Country FROM Countries');

    echo '<select name="country">';
    $row = mysql_fetch_array($result)
    for ($i=0; $i<count($row ); $i++)
    {
       echo '<option value="'.$row[$i]['id'].'">'.$row[$i]['name'].'</option>';
    }

    echo '</select>';
?>

次のページでは print_r($_POST) を使用します。または var_dump($_REQUEST);

于 2012-04-26T06:50:49.953 に答える
0

SQL ステートメントは、'Countries' テーブルから 'Country' のみを選択しました。その結果、$row['id'] と $row['name'] を使用することはできません。
代わりにこれを使用してください:

    echo '<select name="country">';

    while ($row = mysql_fetch_array($result))
    {
       echo '<option value="'.$row['Code'].'">'.$row['Country'].'</option>';
    }

    echo '</select>';
?>

それはあなたの問題を解決するはずです。

于 2012-04-26T08:13:06.090 に答える