Pobranie danych z selecta w php

Pobranie danych z selecta w php
Przemysław Szajdziuk
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Mam bazę z tabelami kom_pojazd_marka (id_marka,marka) i kom_pojazd_model (id_model, id_marka, model).
Chcę zrobić formularz w którym po wybraniu marki z listy rozwijanej, wartość tę będę mógł włożyć do WHERE kwerendy wybierającej model, tak aby wyświetliły mi się tylko modele marki wybranej w poprzednim kroku.

Mój kod:

Kopiuj
<body>
	
	<form action="razem.php" method="post">
		Rok produkcji samochodu: <br/> <input type="number" name="rok" id="rok"/> <br/><br/>
		

<?php
		require_once 'connect.php';
		$polaczenie=new mysqli($host, $db_user, $db_password, $db_name);
		
		if (mysqli_connect_errno())
		{
		echo "Nie podłączono do bazy " . mysqli_connect_error();
		}

		$marka1 = $polaczenie->query("SELECT Id_marka, marka FROM kom_pojazd_marka");
		echo 'Marka samochodu: <select name="marka" id="marka11"><br/><br/>';
		while($marka=mysqli_fetch_assoc($marka1))
		{echo '<option value="" '.$marka['id_marka'].' ">'.$marka['marka'].'</option>';}
		echo '</select><br/><br/>';
		
		$model1 = $polaczenie->query("SELECT Id_model, model FROM kom_pojazd_model");
		echo 'Model samochodu: <select name="model"><br/><br/>';
		while($model=mysqli_fetch_assoc($model1))
		{echo '<option value="" '.$model['id_model'].' ">'.$model['model'].'</option>';}
		echo '</select><br/><br/>';

?>
</form>
</body>

Próbowałem to zrobić za pomocą javascript za pomocą kodu:

Kopiuj
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    alert("Value: " + $("#marka11").val());
  });
});
</script>

Oczywiście ten alert to tylko żeby sprawdzić czy "widzi" wybraną wartość. Niestety nie widzi. ;).
Proszę o podpowiedź, jak odczytać wybraną wartość z listy rozwijanej i przekazać ją do kwerendy wybierającej model pojazdu.

jurek1980
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3581
1

Podejrzyj sobie generowany HTML bo chyba value masz zawsze puste:

Kopiuj
 '<option value=""
arczinosek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 86
0

Najlepiej użyć do tego ajax, aby po wybraniu marki wczytać odpowiednie modele. Będziesz do tego potrzebował osobny skrypt, np. car_model.php do którego będziesz przekazywał id marki:
car_model.php

Kopiuj
if (isset($_GET['marka_id'])) {
  $markaId = (int) $_GET['marka_id'];
  $res = $polaczenie->query("SELECT Id_model, model FROM kom_pojazd_model WHERE Id_marka = {$markaId}");
  echo json_encode($res->fetch_all(MYSQLI_ASSOC));
} else {
  echo json_encode(['error' => 'Brak ID']);
}

i w pliku z formularzem (w document.ready oczywiście):

Kopiuj
$("#marka11").change(function() {
  var selectedId = $("#marka11 option:selected").val();
  $.getJSON('car_model.php', {marka_id: selectedId}, function(res) {
    if (res.error) {
      alert(res.error);
    } else {
      // tutaj musisz budowac <option value="res[i].Id_model">res[i].model</option> 
    }
  }
});

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.