2013-03-13 5 views
0

Я новичок в кодировании и понятия не имею. Мне удалось захватить этот скрипт с этого сайта. http://www.99points.info/2010/12/n-level-dynamic-loading-of-dropdowns-using-ajax-and-php/php, mysql, javascript выпадающий список

Я изменил заголовки и полевые входы, чтобы соответствовать моим требованиям к проекту, а не тем, которые используются в демо. Мне удалось заставить это работать над моим проектом со ссылкой на выпадающие списки.

Проблема, с которой я столкнулся сейчас, заключается в том, как заставить сценарий принимать значения и вводить их в базу данных после того, как клиент выбирает выпадающие списки и нажимает кнопку отправки.

Если есть лучший способ переписать эти коды? Пожалуйста, мне нужна помощь. Спасибо!

вот код я получил на файл «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> 

форма Бронирование получает данные из таблицы тур в базе данных, где есть тур, пункт назначения и продолжительность всего зависит от выпадающего списка выбранных , Это часть обработки, где я не знаю, как это сделать после нажатия кнопки отправки, поэтому я оставил ее пустой! Единственными данными, которые я могу восстановить, является основной ключ из таблицы клиентов, как показано ниже.

 <?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)); 
} 
+2

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **) (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://www.brightmeup.info/article.php?a_id=2). – insertusernamehere

+2

И как примечание: ваш код уязвим для SQL-инъекций при передаче значений из пользовательского ввода непосредственно в ваш запрос. См .: [Bobby Tables] (http://bobby-tables.com). – insertusernamehere

+0

Эти сценарии будут использоваться только для проекта и не будут реализованы в общедоступном Интернете. Мне просто нужно что-то, чтобы этот проект работал. – kev

ответ

0

Я предполагаю, что вы никогда не достигаешь форму процессора, как вы не имеете <form> тега в странице формы.

Вам потребуется:

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

, чтобы получить, чтобы работать.

Кроме того, вам необходимо переключиться на PDO (или mysqli) и подготовленные операторы, поскольку ваш код уязвим для SQL-инъекции.

Пока вы разрабатываете свой код, вы также должны удалить все операторы подавления ошибок @.

+0

Извините, я не знаю, что вы только что описали. Я только изучил кодирование через неделю и ожидал, что вы закончите такой проект. В Вооруженных силах для нас разные, о том, как мы учимся и ожидаем, что все будет хорошо. Я пробовал учиться в течение 2 недель и при попытке работать над проектом. Это потрясает для меня, поскольку я использую наше время и не получаю нигде со всеми учебниками, которые я видел. – kev

+0

В форме бронирования мне удалось включить

. Поэтому я отредактировал сценарий выше, чтобы показать это. – kev

Смежные вопросы