0

私はコーディングが初めてで、手がかりがありません。このサイトからこのスクリプトを取得することができましたhttp://www.99points.info/2010/12/n-level-dynamic-loading-of-dropdowns-using-ajax-and-php/

デモで使用されているものではなく、プロジェクトの要件に合わせてタイトルとフィールド入力を修正しました。ドロップダウンリストを参照して、プロジェクトでこれを機能させることができました。

私が今抱えている問題は、顧客がドロップダウンリストを選択して送信ボタンをクリックした後、スクリプトに値を受け入れてデータベースに入力させる方法です。

これらのコードを書き換えるより良い方法がある場合は? 助けが必要です。ありがとうございました!

「get_child_categories.php」ファイルで取得したコードは次のとおりです。

<?php

include('cn.php');

if($_REQUEST)
{
$id = $_REQUEST['parent_id'];

$query = "select * from tour where pid = ".$id;
$results = @mysql_query( $query);
$num_rows = @mysql_num_rows($results);
if($num_rows > 0)
{?>
    <select name="sub_category" class="parent">
    <option value="" selected="selected">-- Sub Category --</option>
    <?php
    while ($rows = mysql_fetch_assoc(@$results))
    {?>
        <option value="<?php echo $rows['tour_id'];?>"><?php echo $rows    
      ['category'];?></option>
    <?php
    }?>
    </select>   
<?php   
}
else{echo '<label style="padding:7px;float:left; font-size:12px;">No Record Found 
!</label>';}
}
?>

また、最後にすべてのドロップダウン リストを選択すると、「No Record Found」が常に表示されることに注意してください。提出前にすべての基準が満たされていることを示すようにするにはどうすればよいですか?

これは「booking.php」フォームです。

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<link href="style.css" rel="stylesheet" />

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Jurassic Tours/booking form</title>

<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript" src="jquery.livequery.js"></script>
<script type="text/javascript">

$(document).ready(function() {

//$('#loader').hide();

$('.parent').livequery('change', function() {

    $(this).nextAll('.parent').remove();
    $(this).nextAll('label').remove();

    $('#show_sub_categories').append('<img src="loader.gif" style="float:left;  
    margin-top:7px;" id="loader" alt="" />');

    $.post("get_chid_categories.php", {
        parent_id: $(this).val(),
    }, function(response){

    setTimeout("finishAjax('show_sub_categories', '"+escape(response
                 )+"')", 400);

           });

    return false;
});
 });

 function finishAjax(id, response){
 $('#loader').remove();

 $('#'+id).append(unescape(response));
 } 

</script>
<style>
.both h4{ font-family:Arial, Helvetica, sans-serif; margin:0px; font-size:14px;}
#search_category_id{ padding:3px; width:200px;}

.parent{ padding:3px; width:150px; float:left; margin-right:12px;}
.both{ float:left; margin:0 0px 0 0; padding:0px;}
</style>
</head>
<?php
include('cn.php');?>
<body>

<div id="main">

     <div id="header">
        <img src="images/banner.jpg" alt="Banner" style="padding:10px"/>
     </div>

     <div id="mylinks">
        <div id="navcontainer">
           <ul>
           <li><a href="index.html">Home</a></li>
     <li><a href="login.php">Login</a></li>
           <li><a href="register.php">Register</a></li>
           <li><a href="confirmation.php">Booking</a></li>
           <li><a href="aboutus.php">About Us</a></li>
           <li><a href="services.php">Services</a></li>
           <li><a href="feedback.php">Feedback</a></li>
           <li><a href="agency_login.php">Agency Login</a></li>
     <li><a href="logout.php">Logout</a></li>
        </div> 
     </div>

     <div id="content">

        <h2><center>PLEASE PLACE YOUR BOOKING</center></h2>

     <div style="padding-left:30px; height:710px;">

<br clear="all" /><br clear="all" />

<form action="booking.php" method="post">
<div id="show_sub_categories">
    <select name="search_category" class="parent">
    <option value="" selected="selected">-- Categories --</option>
    <?php
    $query = "select * from tour where pid = 0";
    $results = mysql_query($query);

    while ($rows = mysql_fetch_assoc(@$results))
    {?>
    <option value="<?php echo $rows['tour_id'];?>"><?php echo $rows
                ['category'];?></option>
    <?php
    }?>
    </select>       

</div>

<br clear="all" /><br clear="all" />
<input type="submit" name="submit" value="submit">
</form>
<br clear="all" /><br clear="all" />

</div>


</body>
</html>

予約フォームは、ツアー、目的地、期間がすべて選択されたドロップダウン リストに依存するデータベース内のツアー テーブルからデータを取得しています。これはsubmitボタンを押してからどうすればいいのかわからない処理部分なので空欄にしておきました!以下に示すように、回復できる唯一のデータは顧客テーブルの主キーです。

      <?php
//When submit button is pressed.
if (isset($_POST['submit'])) {

//Include the server and database connection. 
include('cn.php');

session_start();


$userUsername = $_SESSION['loggedInUser'];

// Build the SQL query to retreive the variables ($) and input the data into the database.
$sql = "INSERT INTO booking   
      (user_id) 
    VALUES ((SELECT user_id FROM user WHERE user_username =  
                         '" . $userUsername . "'))";

// test the sql statement.
if(!mysql_query($sql,$cn)) {
die(mysql_error($cn));

}
// direct to this page when booking is successful.
header('Location: booking_success.php');
}

?>

update.php ファイルを含めるのを忘れていました

<?php
if (!empty($_GET['tour_id']) && !empty($_GET['value'])) {

$id = $_GET['tour_id'];
$value = $_GET['value'];

try {

$objDb = new PDO('mysql:host=localhost;dbname=jurassicbase', 'root', '');
$objDb->exec('SET CHARACTER SET utf8');

$sql = "SELECT * 
FROM `categories`
WHERE `master` = ?";

$statement = $objDb->prepare($sql);
$statement->execute(array($value));
$list = $statement->fetchAll(PDO::FETCH_ASSOC);

if (!empty($list)) {

$out = array('<option value="">Select one</option>');

foreach($list as $row) {
$out[] = '<option value="'.$row['tour_id'].'">'.$row    
['name'].'</option>';
}

echo json_encode(array('error' => false, 'list' => implode('', $out)));

} else {
echo json_encode(array('error' => true));
}

} catch(PDOException $e) {
echo json_encode(array('error' => true));
}

} else {
echo json_encode(array('error' => true));
}   
4

1 に答える 1

0

<form>フォームページにタグがないため、フォームプロセッサに到達していないと思います。

次のものが必要です。

<form action="your_form_processor.php" method="post">
  // your form fields
</form>

それを機能させるために。

それとは別に、コードは SQL インジェクションに対して脆弱であるため、PDO (または mysqli) と準備済みステートメントに切り替える必要があります。

コードを開発している間、すべての@エラー抑制演算子も削除する必要があります。

于 2013-03-13T17:05:09.717 に答える