0

データベースマップ:

Carriers "table1": carriername, carrierid, ect... Post data
carrierinfo "table2": carriername, id, contact, ect... carrier list

ドロップダウンにmysql_queryfromtable2を使用しています。carriernameこれを使用して、にキャリア名を投稿できtable1ます。同じドロップダウンを使用してid、選択したものから関連するものを投稿しようとしていますcarriername。要するに、キャリア名のみを表示し 、table2 から両方をクエリするドロップダウンが 1 つ必要carriernameです。idフォームが投稿されたら、carriername&carrieridを table1 に投稿する必要があります。以下は、私が使用しているドロップダウンです。ドットを接続して必要なものを追加する方法を教えてください。可能であれば。

 <?php

if (isset($_POST["submit"]) && $_POST["submit"] == "Submit")
{
    for ($count = 1; $count <= 9; $count++)
    {
        $fields[$count] = "";
        if (isset($_POST["field" . $count . ""]))
        {
            $fields[$count] = trim($_POST["field" . $count . ""]);
            //echo $fields[$count] . "<br />";
        }
    }

    $con = mysql_connect("", "", "");
    mysql_select_db("", $con);

    $carrierid = mysql_real_escape_string($_POST['carrierid']);
    $fromzip = mysql_real_escape_string($_POST['fromzip']);
    $tozip = mysql_real_escape_string($_POST['tozip']);
    $typeofequipment = mysql_real_escape_string($_POST['typeofequipment']);
    $weight = mysql_real_escape_string($_POST['weight']);
    $length = mysql_real_escape_string($_POST['length']);
    $paymentamount = mysql_real_escape_string($_POST['paymentamount']);
    $contactperson = mysql_real_escape_string($_POST['contactperson']);
    $loadtype = mysql_real_escape_string($_POST['loadtype']);
    $date = mysql_real_escape_string($_POST['date']);

    $insert = "INSERT INTO Carriers (`carriername` ,`carrierid`, `fromzip` ,`tozip` ,`typeofequipment` ,`weight` ,`length` ,`paymentamount` ,`contactperson` ,`loadtype` ,`date`) 
    SELECT carriername ,'$carrierid' ,'$fromzip' ,'$tozip' ,'$typeofequipment' ,'$weight' ,'$length' ,'$paymentamount' ,'$contactperson' ,'$loadtype', NOW()) FROM carrierinfo WHERE id = '$carrierid'";

    mysql_query($insert) or die(mysql_error());

    $select = "SELECT `carriername` ,`fromzip` ,`tozip` ,`typeofequipment` ,`weight` ,`length` ,`paymentamount` ,`contactperson` ,`loadtype` FROM `Carriers` ORDER BY `date` DESC;";
    $result = mysql_query($select) or die(mysql_error());

}
?>
<style ="text-align: center; margin-left: auto; margin-right: auto;"></style>
</head>
<body>
<input type="button" onclick="window.location.href='search.php';" value="Search Board" /><div
 style="border: 2px solid rgb(0, 0, 0); margin: 16px 20px 20px; width: 400px; background-color: rgb(236, 233, 216); text-align: center; float: left;">
<form action="" method="post";">
  <div
  style="margin: 8px auto auto; width: 300px; font-family: arial; text-align: left;"><br>
  <table style="font-weight: normal; width: 100%; font-size: 12px;"
 border="1" bordercolor="#929087" cellpadding="6" cellspacing="0">
   <table
 style="font-weight: normal; width: 100%; text-align: right; font-size: 12px;"
 border="1" bordercolor="#929087" cellpadding="6" cellspacing="0">
    <tbody>
    <tr>
    <td style="width: 10%;">Carrier:</td><td>
 <?php  

$con = mysql_connect("", "", "");
    mysql_select_db("", $con);

$query=("SELECT * FROM carrierinfo"); 

$result=mysql_query($query) or die ("Unable to Make the Query:" . mysql_error() ); 
echo "<select name='carrierid'>";
while($row=mysql_fetch_array($result)){  
echo "<OPTION VALUE='".$row['id']."'>".$row['carriername']."</OPTION>";
}
echo "</select>"; 

?>
              </td>
        </tr>
        <tr>
              <td style="width: 10%;">Load Type:</td><td>
              <select name="loadtype">
              <option></option>
              <option value="TL">Truck Load</option>
              <option value="Partial">Partial</option>
              </select>
              </td>
        </tr>
        <tr>
              <td style="width: 35%;">Pick Zip:</td><td> <input id="fromzip" name="fromzip" maxlength="50"
 style="width: 100%;" type="text">
        </tr>
        <tr>
              <td style="width: 35%;">Drop Zip:</td><td> <input id="tozip" name="tozip" maxlength="50"
 style="width: 100%;" type="text">
        </tr>
        <tr>
              <td style="width: 35%;">Weight:</td><td> <input id="weight" name="weight" maxlength="50"
 style="width: 100%;" type="text">
        </tr>
        <tr>
              <td style="width: 35%;">Length:</td><td> <input id="length" name="length" maxlength="50"
 style="width: 100%;" type="text">
        </tr>
        <tr>
        <td style="width: 10%;">Equip:</td><td>
              <select name="typeofequipment">
              <option></option>
              <option value="AUTO">Auto Carrier</option>
              <option value="DD">Double Drop</option>
              <option value="F">Flatbed</option>
              <option value="LB">Lowboy</option>
              <option value="Rail">Rail</option>
              <option value="Ref">Reefer</option>
              <option value="RGN">Removable Goose Neck</option>
              <option value="SD">Step Deck</option>
              <option value="TANK">Tanker (Food, liquid, etc.)</option>
              <option value="V">Van</option>
              </select>
              </td>
              </tr>
              <tr>
              <td style="width: 35%;">Contact:</td><td> <input id="contactperson" name="contactperson" maxlength="50"
 style="width: 100%;" type="text">
        </tr>
        <tr>
              <td style="width: 35%;">Rate:</td><td> <input id="paymentamount" name="paymentamount" maxlength="50"
 style="width: 100%;" type="text">
        </tr>
          </tbody>
  </table>
  <p style="text-align: center;"><input name="submit" value="Submit"
 class="submit" type="submit"><input type="button" onclick="window.location.href='newcarrier.php';" value="Add Carrier" /></p>
  </div>
</form>
</div>
<p style="margin-bottom: -20px;">&nbsp;</p>
</body>         
4

1 に答える 1

0

結合を使用します。

SELECT t1.carrierid, t2.carriername, t2.id
FROM table1 t1 JOIN table2 t2 USING (carriername)

テーブルの結合は、SQL を学習するときに最初に学ぶことの 1 つです。

アップデート:

上記を気にしないでください。ドロップダウンに入力する元のクエリは正しかったです。選択を移入するときは、次のことを行う必要があります。

echo "<select name='carrierid'>";
while($row=mysql_fetch_array($result)){  
  echo "<OPTION VALUE='".$row['id']."'>".$row['carriername']."</OPTION>";
}
echo "</select>";

データを投稿するときは、次の行を削除してください。

$carriername = mysql_real_escape_string($_POST['carriername']);

挿入クエリを次のように変更します。

$insert = "INSERT INTO Loads (`carriername` ,`carrierid`, `fromzip` ,`tozip` ,`typeofequipment` ,`weight` ,`length` ,`paymentamount` ,`contactperson` ,`loadtype` ,`date`) 
  SELECT carriername ,'$carrierid' ,'$fromzip' ,'$tozip' ,'$typeofequipment' ,'$weight' ,'$length' ,'$paymentamount' ,'$contactperson' ,'$loadtype', NOW())
  FROM Carriers
  WHERE id = '$carrierid'";

フォームを変更すると、キャリア名が表示されますが、投稿データで ID が返されます。次に、新しい INSERT クエリはその ID を使用してテーブル 2 からキャリア名を取得し、テーブル 1 に挿入するときにそれを他のすべての投稿データと結合します。

于 2012-11-09T01:51:55.417 に答える