NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Dynamické selecty pomocí ajaxu

V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
michales
Člen
Avatar
michales:25.11.2014 8:42

Zdravím Vás všechny přítomné.

Udělal jsem si podle scriptu z jednoho webu dva selecty závislé na sobě pomocí ajaxu.
Od Vás bych potřeboval a zároveň moc prosím, menší (asi menší) úpravu ve scriptech.
Jedná se mi o to že bych potřeboval ještě před vybráním v prvním selectu vybrat tabulku z které se budou data načítat.
Asi nejlépe udělat dva inputy typu radia s name zahranicni a druhý domaci.
Inputy udělat zvládnu, ale co nezvládnu, je upravit ajax, protože o ajaxu vůbec nic nevím na tož abych ho upravil.

Přikládám dva soubory které budou potřeba upravit.
Budu opravdu velmi vděčný za jakoukoliv pomoc.
Index.php:

<?php
  include('func.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>Editace skladeb</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function() {
    $('#wait_1').hide();
    $('#drop_1').change(function(){
      $('#wait_1').show();
      $('#result_1').hide();
      $.get("func.php", {
        func: "drop_1",
        drop_var: $('#drop_1').val()
      }, function(response){
        $('#result_1').fadeOut();
        setTimeout("finishAjax('result_1', '"+escape(response)+"')", 400);
      });
        return false;
    });
});

function finishAjax(id, response) {
  $('#wait_1').hide();
  $('#'+id).html(unescape(response));
  $('#'+id).fadeIn();
}
</script>
</head>

<body>
<p>
<form action="" method="post">

    <select name="drop_1" id="drop_1">

      <option value="" selected="selected" disabled="disabled">Vyber interpreta</option>

      <?php getTierOne(); ?>

    </select>

    <span id="wait_1" style="display: none;">
    <img alt="Please Wait" src="ajax-loader.gif"/>
    </span>
    <span id="result_1" style="display: none;"></span>

</form>
</p>

func.php:

//**************************************
//     Page load dropdown results     //
//**************************************
function getTierOne()
{
    $result = mysql_query("SELECT DISTINCT Contentgroup FROM zahranicni ORDER BY Contentgroup ASC")
    or die(mysql_error());

      while($tier = mysql_fetch_array( $result ))

        {
           echo '<option value="'.$tier['Contentgroup'].'">'.$tier['Contentgroup'].'</option>';
        }

}

//**************************************
//     First selection results     //
//**************************************
if($_GET['func'] == "drop_1" && isset($_GET['func'])) {
   drop_1($_GET['drop_var']);
}

function drop_1($drop_var)
{
    include_once('../settings.php');
    $result = mysql_query("SELECT DISTINCT Album FROM zahranicni WHERE Contentgroup='$drop_var' ORDER BY Year,Album ASC")
    or die(mysql_error());

    echo '<select name="tier_two" id="tier_two">
          <option value=" " disabled="disabled" selected="selected">Album</option>';

           while($drop_2 = mysql_fetch_array( $result ))
            {
              echo '<option value="'.htmlSpecialChars($drop_2['Album'],ENT_QUOTES).'">'.htmlSpecialChars($drop_2['Album'],ENT_QUOTES).'</option>';
            }

    echo '</select> ';
    echo '<input type="submit" name="submit" value="Submit" />';
}

řekl bych že místo názvu tabulky v souboru func.php bude nějaká proměnná ale nevím jak tu proměnnou dostat přes ajax do toho souboru.
Ještě jednou moc děkuji za případnou pomoc.

Odpovědět
25.11.2014 8:42
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.