Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[AJAX/PHP/MySQL] Wynik z kilku list rozwijanych (dropdown)

Tworzenie dynamicznych stron internetowych z zastosowaniem JavaScript, jQuery, Ajax. Dowiedz się jak to zrobić, znajdź rozwiązania swoich problemów.

[AJAX/PHP/MySQL] Wynik z kilku list rozwijanych (dropdown)

Post 14.11.2017, 01:08:43

Witam,
Chcę zrobić wyszukiwarkę działającą na 3 listach rozwijanych (dropdown), coś na ten wzór - http://www.hakpol.pl/oferta.html
W sieci znalazłem 2 skrypty, które gdyby udało się połączyć w jedno, spełniały by założenia.
Pierwszy skrypt (http://www.codingcage.com/2015/04/dynamic-dependent-select-box-using-jquery-php.html), dynamicznie pobiera dane z bazy do kolejnych list rozwijanych (dropdown).
Drugi, z kolei (http://www.codingcage.com/2016/04/load-mysql-records-on-drop-down.html), wyświetla wynik w zależności od wybranego selecta. Problem w tym, że ten skrypt obsługuje tylko 1 dropdown'a.

Po wielu próbach "łączenia skryptów" udało mi się tylko wyświetlić (na starcie) wynik z pierwszego selecta. Natomiast z drugiego i trzeciego dropdown'a już nie aktualizuje wyniku.

plik index.php
Kod: Zaznacz cały
<?php
include_once 'dbconfig.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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" type="text/css" />
<script type="text/javascript" src="jquery-1.4.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
   // function to get all records from table
   function getAll(){
      
      $.ajax
      ({
         url: 'getproducts.php',
         data: 'action=showAll',
         cache: false,
         success: function(r)
         {
            $("#display").html(r);
         }
      });         
   }
   
   getAll();
   // function to get all records from table
   
   
   // code to get all records from table via select box
   $("#getProducts").change(function()
   {            
      var id = $(this).find(":selected").val();

      var dataString = 'action='+ id;
            
      $.ajax
      ({
         url: 'getproducts.php',
         data: dataString,
         cache: false,
         success: function(r)
         {
            $("#display").html(r);
         }
      });
   })
   // code to get all records from table via select box


   $(".country").change(function()
   {
      var id=$(this).val();
      var dataString = 'id='+ id + 'action=country';
   
      $.ajax
      ({
         type: "POST",
         url: "get_state.php",
         data: dataString,
         cache: false,
         success: function(html)
         {
            $(".state").html(html);
            $("#display").html(r);
         }
      });
   });
   
   
   $(".state").change(function()
   {
      var id=$(this).val();
      var dataString = 'id='+ id + 'action=state';
   
      $.ajax
      ({
         type: "POST",
         url: "get_city.php",
         data: dataString,
         cache: false,
         success: function(html)
         {
            $(".city").html(html);
            $("#display").html(r);
         }
      });
   });
   
});
</script>
<style>
label
{
font-weight:bold;
padding:10px;
}
div
{
   margin-top:100px;
}
select
{
   width:200px;
   height:35px;
}
</style>
</head>

<body>
<center>
<div>
<label>Country :</label>
<select name="country" class="country">
<option selected="selected">--Państwo--</option>
<?php
include_once 'get_country.php';
?>
</select>

<label>State :</label> <select name="state" class="state">
<option selected="selected">--Stan--</option>
</select>


<label>City :</label> <select name="city" class="city">
<option selected="selected">--Miasto--</option>
</select>

</div>
    <div class="" id="display">
       <!-- Records will be displayed here -->
    </div>

<br />
<br />
   
   <a href="http://cleartuts.blogspot.com/2015/04/dynamic-dependent-select-box-using-jquery-php.html">tutorial link</a>
</center>
</body>
</html>

plik getproducts.php
Kod: Zaznacz cały
<?php

   include('dbconfig.php');

   $action = $_REQUEST['action'];
   
   if($action=="showAll"){
      
      $stmt=$DB_con->prepare('SELECT * FROM tbl_country');
      $stmt->execute();
      
   }elseif($action=="state"){
      
      $stmt=$DB_con->prepare('SELECT * FROM tbl_state WHERE country_id=:id');
      $stmt->execute(array(':id' => $id));
      
   }else{
      
      $stmt=$DB_con->prepare('SELECT * FROM tbl_city WHERE state_id=:id');
      $stmt->execute(array(':id' => $id));
   }
   
?>
   <div class="row">
<?php
   if($stmt->rowCount() > 0){
      
      while($row=$stmt->fetch(PDO::FETCH_ASSOC))
      {
         extract($row);
   
?>
         <div class="col-xs-3">
         <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;"><?php echo $row['country_name'] ?></div><br />
         <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;"><?php echo $row['state_name']; ?></div><br />
         <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;"><?php echo $row['city_name']; ?></div><br />
         </div>
<?php      
      }
      
   }else{
      
?>
        <div class="col-xs-3">
         <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;"><?php echo $row['country_name']; ?></div><br />
         <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;"><?php echo $row['state_name']; ?></div><br />
         <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;"><?php echo $row['city_name']; ?></div><br />
      </div>
<?php      
   }   
?>
   </div>

plik get_country.php
Kod: Zaznacz cały
<?php
   $stmt = $DB_con->prepare("SELECT * FROM tbl_country");
   $stmt->execute();
   while($row=$stmt->fetch(PDO::FETCH_ASSOC))
   {
      ?>
        <option value="<?php echo $row['country_id']; ?>"><?php echo $row['country_name']; ?></option>
        <?php
   }
?>

plik get_state.php
Kod: Zaznacz cały
<?php
include('dbconfig.php');
if($_POST['id'])
{
   $id=$_POST['id'];
 
   $stmt = $DB_con->prepare("SELECT * FROM tbl_state WHERE country_id=:id");
   $stmt->execute(array(':id' => $id));
   ?><option selected="selected">Stan :</option><?php
   while($row=$stmt->fetch(PDO::FETCH_ASSOC))
   {
      ?>
        <option value="<?php echo $row['state_id']; ?>"><?php echo $row['state_name']; ?></option>
        <?php
   }
}
?>

plik get_city.php
Kod: Zaznacz cały
<?php
include('dbconfig.php');
if($_POST['id'])
{
   $id=$_POST['id'];
 
   $stmt = $DB_con->prepare("SELECT * FROM tbl_city WHERE state_id=:id");
   $stmt->execute(array(':id' => $id));
   ?><option selected="selected">Miasto :</option><?php
   while($row=$stmt->fetch(PDO::FETCH_ASSOC))
   {
      ?>
      <option value="<?php echo $row['city_id']; ?>"><?php echo $row['city_name']; ?></option>
      <?php
   }
}
?>

plik dbconfig.php
Kod: Zaznacz cały
<?php
 
$DB_host = "localhost";
$DB_user = "root";
$DB_pass = "";
$DB_name = "dbcountries";
 
try
{
   $DB_con = new PDO("mysql:host={$DB_host};dbname={$DB_name}",$DB_user,$DB_pass);
   $DB_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
   $e->getMessage();
}


Siedzę nad tym już kolejny dzień i niestety bez oczekiwanego rezultatu :-(
Avatar użytkownikaPrzemo75
Posty: 125
Dołączył(a): 23.04.2004
Lokalizacja: POLSKA

Re: [AJAX/PHP/MySQL] Wynik z kilku list rozwijanych (dropdow

Post 15.11.2017, 16:03:26

Witam,
Załączam zaktualizowany, w pełni działający kod. Pewnie można go jeszcze zoptymalizować, ale to już raczej dla tych lepiej znających się w temacie.

plik index.php
Kod: Zaznacz cały
<?php
include_once 'dbconfig.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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dynamic Dependent Select Box using jQuery and PHP</title>
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" type="text/css" />
<script type="text/javascript" src="jquery-1.4.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
   // function to get all records from table
   function getAll(){
      
      $.ajax
      ({
         url: 'pokaz.php',
         data: 'action=showAll',
         cache: false,
         success: function(r)
         {
            $("#display").html(r);
         }
      });         
   }
   
   getAll();
   // function to get all records from table
   

   $(".country").change(function()
   {
      var id=$(this).val();
      var dataString = 'id='+ id + '&action=country';
      $.ajax
      ({
         type: "POST",
         url: "get_state.php",
         data: dataString,
         cache: false,
         success: function(html)
         {
            $(".state").html(html);
         }
      });

      $.ajax
      ({
         type: "POST",
         url: "pokaz.php",
         data: dataString,
         cache: false,
         success: function(r)
         {
            $("#display").html(r);
         }
      });
   });
   
   
   $(".state").change(function()
   {
      var id=$(this).val();
      var dataString = 'id='+ id + '&action=state';
      $.ajax
      ({
         type: "POST",
         url: "get_city.php",
         data: dataString,
         cache: false,
         success: function(html)
         {
            $(".city").html(html);
         }
      });

      $.ajax
      ({
         type: "POST",
         url: "pokaz.php",
         data: dataString,
         cache: false,
         success: function(r)
         {
            $("#display").html(r);
         }
      });
   });
   
   
   $(".city").change(function()
   {
      var id=$(this).val();
      var dataString = 'id='+ id + '&action=city';
      $.ajax
      ({
         type: "POST",
         url: "get_city.php",
         data: dataString,
         cache: false,
         success: function(html)
         {
            $(".city").html(html);
         }
      });

      $.ajax
      ({
         type: "POST",
         url: "pokaz.php",
         data: dataString,
         cache: false,
         success: function(r)
         {
            $("#display").html(r);
         }
      });
   });
   
});
</script>
<style>
label
{
font-weight:bold;
padding:10px;
}
div
{
   margin-top:20px;
}
select
{
   width:150px;
   height:25px;
}
</style>
</head>

<body>
<center>
<div>
<label>Country :</label>
<select name="country" class="country">
<option selected="selected">--Państwo--</option>
<?php
include_once 'get_country.php';
?>
</select>

<label>State :</label> <select name="state" class="state">
<option selected="selected">--Stan--</option>
</select>


<label>City :</label> <select name="city" class="city">
<option selected="selected">--Miasto--</option>
</select>

</div>
    <div class="" id="display">
       <!-- Records will be displayed here -->
    </div>
</center>
</body>
</html>

plik pokaz.php
Kod: Zaznacz cały
<?php

   include('dbconfig.php');

   $action = $_REQUEST['action'];
   
   if ($action=='showAll')   
   {
      $id = "0";
   }
   else $id=$_POST['id'];
   
   echo "Akcja: $action i id: $id \n";
   
   if($action=="showAll"){
      $stmt=$DB_con->prepare('SELECT * FROM tbl_country');
      $stmt->execute();
   }
   elseif($action=="country"){
      $stmt = $DB_con->prepare('SELECT * FROM tbl_state WHERE country_id=:id');
      $stmt->execute(array(':id' => $id));
   }
   elseif($action=="state"){
      $stmt=$DB_con->prepare('SELECT * FROM tbl_city WHERE state_id=:id ORDER BY city_name');
      $stmt->execute(array(':id'=>$id));
   }
   elseif($action=="city"){
      $stmt=$DB_con->prepare('SELECT * FROM tbl_city WHERE city_id=:id ORDER BY city_name');
      $stmt->execute(array(':id'=>$id));
   }
   else{
      $stmt=$DB_con->prepare('SELECT * FROM tbl_country');
      $stmt->execute();
   }
   
?>
   <div class="row">
   <?php
   if($stmt->rowCount() > 0)
   {   
      while($row=$stmt->fetch(PDO::FETCH_ASSOC))
      {
         extract($row);   
         ?>
      <?php
      if($action=="showAll")
         {
            ?>
            <div class="col-xs-3">
            <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;">Kraj:: <?php echo $action; ?> :: <?php echo $country_name; ?></div><br />
            </div>
            <?php      
         }
      elseif($action=="country")
         {
            ?>
            <div class="col-xs-3">
            <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;">Kraj:: <?php echo $action; ?> :: <?php echo $state_name; ?></div><br />
            </div>
            <?php      
         }
      elseif($action=="state")
         {   
            ?>
            <div class="col-xs-3">
            <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;">Stan:: <?php echo $action; ?> :: <?php echo $city_name; ?></div><br />
            </div>
            <?php      
         }
      elseif($action=="city")
         {
            ?>
            <div class="col-xs-3">
            <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;">Miasto:: <?php echo $action; ?> :: <?php echo $city_id; ?></div><br />
            </div>
            <?php   
         }
      }
   }   else
      {
         ?>
         <div class="col-xs-3">
         <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;">Wszystko:: <?php echo $action; ?> :: <?php echo $country_name; ?></div><br />
         </div>
         <?php   
      }
         ?>
   </div>

plik get_coutry.php
Kod: Zaznacz cały
<?php
   $stmt = $DB_con->prepare("SELECT * FROM tbl_country");
   $stmt->execute();
   while($row=$stmt->fetch(PDO::FETCH_ASSOC))
   {
      ?>
        <option value="<?php echo $row['country_id']; ?>"><?php echo $row['country_name']; ?></option>
        <?php
   }
?>

plik get_state.php
Kod: Zaznacz cały
<?php
include('dbconfig.php');
if($_POST['id'])
{
   $id=$_POST['id'];
   $action=$_POST['action'];
   $stmt = $DB_con->prepare("SELECT * FROM tbl_state WHERE country_id=:id");
   $stmt->execute(array(':id' => $id));
   ?><option selected="selected">Stan :</option><?php
   while($row=$stmt->fetch(PDO::FETCH_ASSOC))
   {
      ?>
        <option value="<?php echo $row['state_id']; ?>"><?php echo $row['state_name']; ?></option>
        <?php
   }
}
?>

plik get_city.php
Kod: Zaznacz cały
<?php
include('dbconfig.php');
if($_POST['id'])
{
   $id=$_POST['id'];
   $action=$_POST['action'];
   $stmt = $DB_con->prepare("SELECT * FROM tbl_city WHERE state_id=:id");
   $stmt->execute(array(':id' => $id));
   ?><option selected="selected">Miasto :</option><?php
   while($row=$stmt->fetch(PDO::FETCH_ASSOC))
   {
      ?>
      <option value="<?php echo $row['city_id']; ?>"><?php echo $row['city_name']; ?></option>
      <?php
   }
}
?>

plik dbconfig.php
Kod: Zaznacz cały
<?php

$DB_host = "localhost";
$DB_user = "root";
$DB_pass = "";
$DB_name = "dbcountries";

try
{
   $DB_con = new PDO("mysql:host={$DB_host};dbname={$DB_name}",$DB_user,$DB_pass);
   $DB_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
   $e->getMessage();
}

plik dbcountries.sql
Kod: Zaznacz cały
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;


CREATE TABLE IF NOT EXISTS `tbl_city` (
  `city_id` int(3) NOT NULL AUTO_INCREMENT,
  `state_id` int(3) NOT NULL,
  `city_name` varchar(35) NOT NULL,
  PRIMARY KEY (`city_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;

INSERT INTO `tbl_city` (`city_id`, `state_id`, `city_name`) VALUES
(1, 1, 'Surat'),
(2, 1, 'Ahmedabad'),
(3, 2, 'Pune'),
(4, 2, 'Mumbai'),
(5, 3, 'royston'),
(6, 3, 'bedford'),
(7, 4, 'Litherland'),
(8, 4, 'ST. helens'),
(9, 5, 'Abbeville'),
(10, 5, 'Alpine'),
(11, 6, 'Angoon'),
(12, 6, 'Aniak');


CREATE TABLE IF NOT EXISTS `tbl_country` (
  `country_id` int(3) NOT NULL AUTO_INCREMENT,
  `country_name` varchar(25) NOT NULL,
  PRIMARY KEY (`country_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

INSERT INTO `tbl_country` (`country_id`, `country_name`) VALUES
(1, 'India'),
(2, 'United kingdom'),
(3, 'United States');


CREATE TABLE IF NOT EXISTS `tbl_state` (
  `state_id` int(3) NOT NULL AUTO_INCREMENT,
  `country_id` int(3) NOT NULL,
  `state_name` varchar(35) NOT NULL,
  PRIMARY KEY (`state_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

INSERT INTO `tbl_state` (`state_id`, `country_id`, `state_name`) VALUES
(1, 1, 'Gujarat'),
(2, 1, 'Maharashtra'),
(3, 2, 'Cambridge'),
(4, 2, 'Liverpool'),
(5, 3, 'Alabama'),
(6, 3, 'Alaska');
Avatar użytkownikaPrzemo75
Posty: 125
Dołączył(a): 23.04.2004
Lokalizacja: POLSKA

Re: [AJAX/PHP/MySQL] Wynik z kilku list rozwijanych (dropdow

Post 16.11.2017, 00:07:43

Niestety przy próbie przeróbki skryptu na obsługę pojedynczej tabeli mam problem, którego nie mogę rozwiązać. Po wybraniu ostatniego SELECT'a wyświetla wszystkie wartości z zadanym parametrem bez uwzględnienia parametru z wcześniejszej kategorii.

Wiem, że w przypadku $action=="categ" WHERE powinno jeszcze zawierać nazwę z kolumny menu ale jakbym nie próbował, to nie chce zadziałać (zwraca pustą wartość).

Poniżej fragment kodu odpowiedzialny za pobranie danych i przykładowa baza sql:

Plik index.php
Kod: Zaznacz cały
<?php
include_once 'dbconfig.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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dynamic Dependent Select Box using jQuery and PHP</title>
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" type="text/css" />
<script type="text/javascript" src="jquery-1.4.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
   // function to get all records from table
   function getAll(){
      
      $.ajax
      ({
         url: 'pokaz.php',
         data: 'action=showAll',
         cache: false,
         success: function(r)
         {
            $("#display").html(r);
         }
      });         
   }
   
   getAll();
   // function to get all records from table
   

   $(".site").change(function()
   {
      var site=$(this).val();
      var dataString = 'id='+ site + '&action=site';
      $.ajax
      ({
         type: "POST",
         url: "get_menu.php",
         data: dataString,
         cache: false,
         success: function(html)
         {
            $(".menu").html(html);
         }
      });

      $.ajax
      ({
         type: "POST",
         url: "pokaz.php",
         data: dataString,
         cache: false,
         success: function(r)
         {
            $("#display").html(r);
         }
      });
   });
   
   
   $(".menu").change(function()
   {
      var id=$(this).val();
      var dataString = 'id='+ id + '&action=menu';
      $.ajax
      ({
         type: "POST",
         url: "get_categ.php",
         data: dataString,
         cache: false,
         success: function(html)
         {
            $(".categ").html(html);
         }
      });

      $.ajax
      ({
         type: "POST",
         url: "pokaz.php",
         data: dataString,
         cache: false,
         success: function(r)
         {
            $("#display").html(r);
         }
      });
   });
   
   
   $(".categ").change(function()
   {
      var id=$(this).val();
      var dataString = 'id='+ id + '&action=categ';
      $.ajax
      ({
         type: "POST",
         url: "get_categ.php",
         data: dataString,
         cache: false,
         success: function(html)
         {
            $(".links").html(html);
         }
      });

      $.ajax
      ({
         type: "POST",
         url: "pokaz.php",
         data: dataString,
         cache: false,
         success: function(r)
         {
            $("#display").html(r);
         }
      });
   });
   
});
</script>
<style>
label
{
font-weight:bold;
padding:10px;
}
div
{
   margin-top:20px;
}
select
{
   width:150px;
   height:25px;
}
</style>
</head>

<body>
<center>
<div>
<label>Strona :</label>
<select name="site" class="site">
<option selected="selected">--Strona--</option>
<?php
include_once 'get_site.php';
?>
</select>

<label>Dział :</label> <select name="menu" class="menu">
<option selected="selected">--Dział--</option>
</select>


<label>Temat :</label> <select name="categ" class="categ">
<option selected="selected">--Temat--</option>
</select>

</div>
    <div class="" id="display">
       <!-- Records will be displayed here -->
    </div>
</center>
</body>
</html>

Plik pokaz.php
Kod: Zaznacz cały
<?php

   include('dbconfig.php');

   $action = $_REQUEST['action'];   
   if ($action=='showAll')   
   {
      $id = "0";
   }
   else $id=$_POST['id'];
   
   if($action=="showAll"){
      $stmt=$DB_con->prepare('SELECT * FROM slist GROUP BY site');
      $stmt->execute();
   }
   elseif($action=="site"){
      $stmt=$DB_con->prepare('SELECT menu FROM slist WHERE site=:id GROUP BY menu ORDER BY menu');
      $stmt->execute(array(':id'=>$id));
   }
   elseif($action=="menu"){
      $stmt=$DB_con->prepare('SELECT categ FROM slist WHERE menu=:id GROUP BY categ ORDER BY categ');
      $stmt->execute(array(':id'=>$id));
   }
   elseif($action=="categ"){
      $stmt=$DB_con->prepare('SELECT links FROM slist WHERE categ=:id GROUP BY links ORDER BY links');
      $stmt->execute(array(':id'=>$id));
   }
   else{
      $stmt=$DB_con->prepare('SELECT * FROM slist GROUP BY site');
      $stmt->execute();
   }
?>
   <div class="row">
   <?php
   if($stmt->rowCount() > 0)
   {   
      while($row=$stmt->fetch(PDO::FETCH_ASSOC))
      {
         extract($row);   
         ?>
      <?php
      if($action=="showAll")
         {
            ?>
            <div class="col-xs-3">
            <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;">Strona:: <?php echo $action; ?> :: <?php echo $site; ?></div><br />
            </div>
            <?php      
         }
      elseif($action=="site")
         {
            ?>
            <div class="col-xs-3">
            <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;">Strona:: <?php echo $action; ?> :: <?php echo $menu; ?></div><br />
            </div>
            <?php      
         }
      elseif($action=="menu")
         {   
            ?>
            <div class="col-xs-3">
            <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;">Dział:: <?php echo $action; ?> :: <?php echo $categ; ?></div><br />
            </div>
            <?php      
         }
      elseif($action=="categ")
         {
            ?>
            <div class="col-xs-3">
            <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;">Temat:: <?php echo $action; ?> :: <?php echo $links; ?></div><br />
            </div>
            <?php   
         }
      }
   }   else
      {
         ?>
         <div class="col-xs-3">
         <div style="border-radius:3px; border:#cdcdcd solid 1px; padding:22px;">Wszystko:: <?php echo $action; ?> :: <?php echo ""; ?></div><br />
         </div>
         <?php   
      }
         ?>
   </div>

Baza
Kod: Zaznacz cały
INSERT INTO `slist`
(`id`, `site`, `menu`, `categ`, `links`) VALUES
(1, 'MarPlo.net', 'Courses', 'Ajax', 'www.marplo.net/ajax/'),
(4, 'MarPlo.net', 'Courses', 'JavaScript', 'www.marplo.net/javascript/'),
(7, 'MarPlo.net', 'Courses', 'English', 'www.marplo.net/engleza/'),
(10, 'MarPlo.net', 'Anime', 'Aspecte de viata', 'www.marplo.net/anime/aspecte_de_viata'),
(13, 'MarPlo.net', 'Anime', 'Comedie', 'www.marplo.net/anime/comedie'),
(16, 'MarPlo.net', 'Anime', 'Romantic', 'www.marplo.net/anime/romantic'),
(19, 'CoursesWeb.net', 'Games', 'Adventure-Mystery', 'http://coursesweb.net/games/adventure'),
(22, 'CoursesWeb.net', 'Games', 'Logic and Intuition', 'http://coursesweb.net/games/logic-perspicacity'),
(25, 'CoursesWeb.net', 'PHP-MySQL', 'Lessons', 'http://coursesweb.net/php-mysql/'),
(28, 'CoursesWeb.net', 'PHP-MySQL', 'Tutorials', 'http://coursesweb.net/php-mysql/tutorials_t'),
(31, 'CoursesWeb.net', 'JavaScript', 'Lessons', 'http://coursesweb.net/javascript/'),
(34, 'CoursesWeb.net', 'JavaScript', 'Tutorials', 'http://coursesweb.net/javascript/tutorials_t'),
(37, 'CoursesWeb.net', 'JavaScript', 'jQuery', 'http://coursesweb.net/jquery/jquery-course'),
(40, 'CoursesWeb.net', 'Flash-AS3', 'Flash Lessons', 'http://coursesweb.net/flash/lessons'),
(43, 'CoursesWeb.net', 'Flash-AS3', 'ActionScript Lessons', 'http://coursesweb.net/actionscript/lessons-as3'),
(46, 'CoursesWeb.net', 'Flash-AS3', 'Tutorials', 'http://coursesweb.net/flash/tutorials_t');

Plik get_site.php
Kod: Zaznacz cały
<?php
   $stmt=$DB_con->prepare("SELECT site FROM slist GROUP BY site");
   $stmt->execute();
   while($row=$stmt->fetch(PDO::FETCH_ASSOC))
   {
      ?>
        <option value="<?php echo $row['site']; ?>"><?php echo $row['site']; ?></option>
        <?php
   }
?>

Plik get_menu.php
Kod: Zaznacz cały
<?php
include('dbconfig.php');
if($_POST['id'])
{
   $id=$_POST['id'];
$action=$_POST['action'];
   $stmt=$DB_con->prepare('SELECT menu FROM slist WHERE site=:id GROUP BY menu ORDER BY menu');
   $stmt->execute(array(':id' => $id));
   ?><option selected="selected">Dział :</option><?php
   while($row=$stmt->fetch(PDO::FETCH_ASSOC))
   {
      ?>
        <option value="<?php echo $row['menu']; ?>"><?php echo $row['menu']; ?></option>
        <?php
   }
}
?>

Plik get_categ.php
Kod: Zaznacz cały
<?php
include('dbconfig.php');
if($_POST['id'])
{
   $id=$_POST['id'];
$action=$_POST['action'];
   $stmt=$DB_con->prepare('SELECT categ FROM slist WHERE menu=:id GROUP BY categ ORDER BY categ');
   $stmt->execute(array(':id' => $id));
   ?><option selected="selected">Temat :</option><?php
   while($row=$stmt->fetch(PDO::FETCH_ASSOC))
   {
      ?>
        <option value="<?php echo $row['categ']; ?>"><?php echo $row['categ']; ?></option>
        <?php
   }
}
?>

Plik dbconfig.php
Kod: Zaznacz cały
<?php

$DB_host = "localhost";
$DB_user = "root";
$DB_pass = "";
$DB_name = "tests";

try
{
   $DB_con = new PDO("mysql:host={$DB_host};dbname={$DB_name}",$DB_user,$DB_pass);
   $DB_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
   $e->getMessage();
}
Avatar użytkownikaPrzemo75
Posty: 125
Dołączył(a): 23.04.2004
Lokalizacja: POLSKA

Re: [AJAX/PHP/MySQL] Wynik z kilku list rozwijanych (dropdow

Post 16.11.2017, 12:09:38

Poniższy fragment kodu
Kod: Zaznacz cały
   elseif($action=="categ"){
      $stmt=$DB_con->prepare('SELECT links FROM slist WHERE categ=:id GROUP BY categ ORDER BY links');
      $stmt->execute(array(':id'=>$id));
   }

powoduje pobranie wyniku z pierwszego na liście wiersza, w którym parametr jest równy categ. Pytanie, jak do tego dodać warunek, żeby w zapytaniu został uwzględniony jeszcze parametr menu.
Avatar użytkownikaPrzemo75
Posty: 125
Dołączył(a): 23.04.2004
Lokalizacja: POLSKA


Powrót do JavaScript


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 50698 zarejestrowanych użytkowników.
Najnowszy użytkownik: m1kie


Nasi użytkownicy napisali:

  • 936100 wiadomości
  • w 246729 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)