Pereiti prie turinio

Select PHP klausimas


Rekomenduojami pranešimai

Paskutinis mano klausimas nes tikriausiai įgrisau jau (Nepagalvojau susikurti sau temos su klausimais) ir baigiu su jūsų pagalbą baigti savo pirmą php projektą...

 

Klausimas būtu toks: Ar galima padaryti, kad kai iš pirmo "select" laukelio pasirenki komandas (mačą), jas rodytų ir antram "select" laukelyje? Nes dabar man rodo visas komandas nepriklausomai nuo pirmo laukelio.

 

Štai ką man rodo:

 

http://i.stack.imgur.com/KApE4.png

 

Štai kodas:

 

<p><b>PICK THE MATCH</b></p>

					<select name="id">

					 <?php foreach ($fut_komandos as $fut) { ?>
                         <option value="<?php echo $fut['id']; ?>">
                         <?php echo $fut['pirma_komanda'] . ' vs ' .  $fut['antra_komanda'];
                         ?>
                          </option>
                          <?php  } ?>

                          </select>

                          	<br /><br />



                          	<p><b>PICK THE TEAM FOR YOUR BET</b></p>

                         <select name="pasirink">


					 <?php foreach ($fut_komandos as $fut) { ?>

					 	<option value="<?php echo $fut['id']; ?>">
                         <?php echo $fut['pirma_komanda']; ?>

                          </option>

                          <option>
                          <?php echo $fut['antra_komanda']; ?>
                          </option>

                          <?php   } ?>

                          </select>

 

Žinau, kad reikėtų keisti antrojo foreach ciklo sąlygą, bet nežinau kaip :unsure:

Redagavo Cpliusas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
					   <script> 
						   $( document ).ready(function() {
							   $( "#komandos" ).change(function() {

								  var id = $(this).children(":selected").val();

								  $( "#pasirink option" ).hide();
								  $( "#pasirink #" + id ).show();
								  $("#pasirink #" + id).attr('selected','selected');

								});
							});
					   </script>

 

 

Gali pamėgint taip, tik susidėk ID ant selectu ir optionu kur reikia

Nuoroda į pranešimą
Dalintis kituose puslapiuose

JS kodas:

<script>
$( document ).ready(function() {
                                                                  $("input[name=pasirink]").change(function() {
                                                                       var id = $("#id").val();
if(isNaN(id)) {return;}
                 $.ajax({
		type: "GET",
		url: "ajax.php",
		data: {'update_tm'  : '',
				'id' 	 : id},
		success: function(msg){	
                               $("input[name=pasirink]").empty()
			var a = JSON.parse(msg);

			for (index = 0; index < a.length; ++index) 
			{
				$("input[name=pasirink]").append('<option >'+a[index].team+'</option>');
			}
		}
		});
                                                                       });
                                                               });
</script>

 

ajax.php

if(isset($_GET['update_tm'])&& is_numeric($_GET['id']))
{
$query = $pdo->prepare("SELECT `pirma_komanda`,`antra_komanda` FROM futbolas WHERE `id` = ?");
$query->execute(array($_GET['id']));
if($query)
{
  $query = $query->fetch();
  $rez[0]['team'] = $query['pirma_komanda'];
  $rez[1]['team'] = $query['antra_komanda'];
  echo json_encode($rez);
}

}

 

Tikiuosi pagelbės :)

Redagavo SlayD
Nuoroda į pranešimą
Dalintis kituose puslapiuose

JS kodas:

<script>
$( document ).ready(function() {
                                                                  $("input[name=pasirink]").change(function() {
                                                                       var id = $("#id").val();
if(isNaN(id)) {return;}
                 $.ajax({
		type: "GET",
		url: "ajax.php",
		data: {'update_tm'  : '',
				'id' 	 : id},
		success: function(msg){	
                               $("input[name=pasirink]").empty()
			var a = JSON.parse(msg);

			for (index = 0; index < a.length; ++index) 
			{
				$("input[name=pasirink]").append('<option >'+a[index].team+'</option>');
			}
		}
		});
                                                                       });
                                                               });
</script>

 

ajax.php

if(isset($_GET['update_tm'])&& is_numeric($_GET['id']))
{
$query = $pdo->prepare("SELECT `pirma_komanda`,`antra_komanda` FROM futbolas WHERE `id` = ?");
$query->execute(array($_GET['id']));
if($query)
{
  $query = $query->fetch();
  $rez[0]['team'] = $query['pirma_komanda'];
  $rez[1]['team'] = $query['antra_komanda'];
  echo json_encode($rez);
}

}

 

Tikiuosi pagelbės :)

 

 

 

 

Tikriausiai nesugebu įsirašyti nes nerodo antrajame laukelyje nieko..

 

					<p><b>PICK THE MATCH</b></p>

                                               <select name="id">

                                                <?php foreach ($fut_komandos as $fut) { ?>
                         <option value="<?php echo $fut['id']; ?>">
                         <?php echo $fut['pirma_komanda'] . ' vs ' .  $fut['antra_komanda'];
                         ?>
                          </option>
                          <?php  } ?>

                          </select>

                               <br /><br />



                               <p><b>PICK THE TEAM FOR YOUR BET</b></p>

                         <select name="pasirink">


                       <script>
						$( document ).ready(function() {
                                                                  $("input[name=pasirink]").change(function() {
                                                                       var id = $("#id").val();
if(isNaN(id)) {return;}
                 $.ajax({
                       type: "GET",
                       url: "ajax.php",
                       data: {'update_tm'  : '',
                                       'id'     : id},
                       success: function(msg){ 
                               $("input[name=pasirink]").empty()
                               var a = JSON.parse(msg);

                               for (index = 0; index < a.length; ++index) 
                               {
                                       $("input[name=pasirink]").append('<option >'+a[index].team+'</option>');
                               }
                       }
                       });
                                                                       });
                                                               });
						</script>

                          </select>

 

ajax.php sukurtas ;)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Žemiau success: function(msg){

įdėk eilutę:

console.log(msg)

įsijunk JavaScript konsolę (CTRL+SHIFT+J ant Chrome)

pakeisk select pasirinkimą ir žiūrėk ką rašo konsolėje

P.S. <script> neturėtų būti tarp select tagų.

 

"Uncaught ReferenceError: $ is not defined football.php?id=1:83

(anonymous function)"

 

http://www.part.lt/img/9d46ec2302745c88d0ead357c24dd88550.png

 

O tai script kodą rašyti prieš antrojo select'o pradžią?

Redagavo Cpliusas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

"Uncaught ReferenceError: $ is not defined football.php?id=1:83

(anonymous function)"

 

O tai script kodą rašyti prieš antrojo select'o pradžią?

jQuery inicializuok pirma, nes šita klaida metama kai neaptinkamas jQuery. Includink jQuery iš google cdn ar lokaliai parsisiuntęs.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

"Uncaught ReferenceError: $ is not defined football.php?id=1:83

(anonymous function)"

 

http://www.part.lt/img/9d46ec2302745c88d0ead357c24dd88550.png

 

O tai script kodą rašyti prieš antrojo select'o pradžią?

Geriausia paabaigoj rašyt, prieš </body>

 

Kodas toks turėtų būti:

jQuery(function($) {
   $("input[name=pasirink]").change(function() {
       var id = $("#id").val();
       if(isNaN(id)) {return;}

       $.ajax({
           type: "GET",
           url: "ajax.php",
           data: {'update_tm': '', 'id': id},
           dataType: 'json',
           success: function(data){ 
               $("input[name=pasirink]").empty();

               for (var i = 0; i < data.length; i++) 
               {
                   $("input[name=pasirink]").append('<option >'+data[i].team+'</option>');
               }
           }
       });
   });
});

Redagavo Gugiss
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai jis turi būti toks ?

 

                                <select name="pasirink">
                         <option>
                         </option>

                          <option>
                          </option>



                          </select>

 

O jam reikia ciklo ar ne ?

<select name="pasirink"></select>

Toks, nieko nereikia. Pirmiausia žiūrėk ar gauni teisingą atsakymą iš ajax.php

Redagavo Gugiss
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Štai pilnas kodas:

 

					<p><b>PICK THE MATCH</b></p>

                                               <select name="id">

                                                <?php foreach ($fut_komandos as $fut) { ?>
                         <option value="<?php echo $fut['id']; ?>">
                         <?php echo $fut['pirma_komanda'] . ' vs ' .  $fut['antra_komanda'];
                         ?>
                          </option>
                          <?php  } ?>

                          </select>

                               <br /><br />




                               <p><b>PICK THE TEAM FOR YOUR BET</b></p>


                               <select name="pasirink"></select>

<script>

jQuery(function($) {
   $("input[name=pasirink]").change(function() {
       var id = $("#id").val();
       if(isNaN(id)) {return;}

       $.ajax({
           type: "GET",
           url: "ajax.php",
           data: {'update_tm': '', 'id': id},
           dataType: 'json',
           success: function(data){ 
               $("input[name=pasirink]").empty()

               for (index = 0; index < data.length; ++index) 
               {
                   $("input[name=pasirink]").append('<option >'+data[index].team+'</option>');
               }
           }
       });
   });
});

</script>

 

Bet rodo tuščią laukelį vistiek :unsure:

 

http://www.part.lt/img/a0d06e086e6466d8c92a6d47907a7694333.png

Redagavo Cpliusas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Čia ajax.php:

 

if(isset($_GET['update_tm'])&& is_numeric($_GET['id']))
{
$query = $pdo->prepare("SELECT `pirma_komanda`,`antra_komanda` FROM futbolas WHERE `id` = ?");
$query->execute(array($_GET['id']));
if($query)
{
  $query = $query->fetch();
  $rez[0]['team'] = $query['pirma_komanda'];
  $rez[1]['team'] = $query['antra_komanda'];
  echo json_encode($rez);
}

}

 

Čia futbolo lentelė:

 

http://www.part.lt/img/d754f576a6cc4344cc5ad4774cf10c5b867.png

 

Atrodo ajax gerai turėtų vesti...

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ok, kartoju ketvirtą kartą

Be to nueik į ajax.php?update_tm=1&id={mačo_id} ir žiūrėk ką išveda.

 

Gal reikia JSON content-type? Nes pagal idėją jQuery neturėtų stebuklingai žinoti, kad ten json, o ne plain tekstas. Nebent bando atspėti.

Kode yra tokia eilutė

dataType: 'json'

Redagavo Gugiss
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...