Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wartość Przypisana Do select Value
Forum PHP.pl > Forum > Przedszkole
timeo
Witajcie.

Mam taki kod oparty na JS. Przekazuje mi wartość do bazy po zapytaniu ID a chciałbym żeby do bazy wysyłał mi nazwę Marki z pola w sql. Label Marka, select name "marka" - wysyła mi do bazy numer ID.

  1. <br><label>Marka</label><br>
  2. <select name="marka" class="a" id="marka" >
  3. <option value=""> Wybierz Markę</option>
  4. <?php
  5. $result = $db->query('SELECT * FROM Marki');
  6. // $result ->execute();
  7. //
  8. $key = $result->fetchAll(PDO::FETCH_ASSOC);
  9.  
  10. foreach ($key as $marki)
  11. {
  12. ?>
  13. <option value="<?php echo $marki["Marka_ID"]; ?>"><?php echo $marki["Marka"];?> </option>
  14. <?php
  15.  
  16. }
  17.  
  18. ?>
  19. </select>
  20. <br><br>
  21. <label>Model</label><br>
  22. <select name="model" id="listamodeli" class="a">
  23. <option value=""></option></select>
  24.  


  1. $przyjecie = $db -> prepare('INSERT INTO `mobidoktor` (`klient`, `ticket`, `Przyjecie`, `szklo` ,`rodzaj`, `imei`, `uwagi`, `model3`,`brand2`,`BOK`,`opakowanie`,`ladowarka`,`kolor`,`Status`,`corobione`,`u
    wagidoserwisu`,`rodzajklient`) VALUES(
  2. :klient,:ticket,:datapr,:szklo,:serwisD2D,:imei,:uwagi,:model3,:brand2,:BOK,:opa
    kowanie,:ladowarka,:kolor,:status,:rodzaj,:uwagidoserwisu,:rodzajklient)'
    ); // 1
  3.  
  4. $przyjecie -> bindValue(':klient', $_POST['klient'], PDO::PARAM_STR); // 2
  5. $przyjecie -> bindValue(':ticket', $_POST['ticket'], PDO::PARAM_STR);
  6. $przyjecie -> bindValue(':rodzaj', $_POST['category'], PDO::PARAM_STR);
  7. $przyjecie -> bindValue(':szklo', $_POST['szklo'], PDO::PARAM_STR);
  8. $przyjecie -> bindValue(':imei', $_POST['imei'], PDO::PARAM_INT);
  9. $przyjecie -> bindValue(':uwagi', $_POST['uwagi'], PDO::PARAM_STR);
  10. $przyjecie -> bindValue(':serwisD2D', $_POST['serwisD2D'], PDO::PARAM_STR);
  11. $przyjecie -> bindValue(':model3', $_POST['marka'], PDO::PARAM_STR);
  12. $przyjecie -> bindValue(':brand2', $_POST['model'], PDO::PARAM_STR);
  13. $przyjecie -> bindValue(':BOK', $_POST['BOK'], PDO::PARAM_STR);
  14. $przyjecie -> bindValue(':opakowanie', $_POST['opakowanie'], PDO::PARAM_STR);
  15. $przyjecie -> bindValue(':ladowarka', $_POST['ladowarka'], PDO::PARAM_STR);
  16. $przyjecie -> bindValue(':uwagidoserwisu', $_POST['uwagidoserwisu'], PDO::PARAM_STR);
  17. $przyjecie -> bindValue(':datapr',$czas, PDO::PARAM_STR);
  18. $przyjecie -> bindValue(':kolor', $_POST['kolor'], PDO::PARAM_STR);
  19. $przyjecie -> bindValue(':status', $_POST['status'], PDO::PARAM_STR);
  20. $przyjecie -> bindValue(':rodzajklient', $_POST['rodzajklient'], PDO::PARAM_STR);
  21.  
  22. try {
  23. $przyjecie->execute();
  24.  
  25. echo '<h2>'."Zapisano do bazy.".'</h2>';
  26. } catch (PDOException $exception) {
  27. die($exception->getMessage());
  28. }
viking
No patrz, rzecz niesłychana. Od kiedy to option przesyła to co zdefiniowane w value? Koniec ironii. Podstaw markę i problem z głowy.
timeo
Podstawić markę gdzie pod Value?
viking
Dobra. Jak masz selecta name=marka
to var_dump($_POST) po wysłaniu formularza co zwróci w przypadku:

<option>marka1</option>

oraz

<option value=1>marka1</option>
timeo
Po wysłaniu POST
  1. <option value="<?php echo $marki["Marka_ID"]; ?>"><?php echo $marki["Marka"];?> </option>

Otrzymuję
  1. ["marka"]=> string(2) "17"

Natomiast jeśli wyrzucę value=" .... " to niestety skrypt przestaje mi działać. Chyba muszę bardziej pomyśleć, bo jestem tępy.
viking
Tak? A ja dla

  1. <form method=post>
  2. <select name=marka>
  3. <option>marka 1</option>
  4. <option>marka 2</option>
  5. <option>marka 3</option>
  6. </select>
  7. <input type=submit value=send>
  8. </form>


dostaję
Kod
array(1) { ["marka"]=> string(7) "marka 3" }


I co to znaczy przestaje działać? Jakiś błąd wyświetla?
timeo
Przestaje działać to znaczy z pliku getdata.php nie odczytuje wartości Marki
Poniżej kody
  1. <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
  2.  
  3. Klient<br><input type="text" name="klient" id="klient" class="a" required placeholder="Klient"><br><br>
  4. Rodzaj Klienta:<br><label><input type="radio" required name="rodzajklient" value="indywidualny" >Klient indywidualny
  5. <label><input type="radio" name="rodzajklient" value="serwis">Serwis/ Klient biznesowy<br>
  6. <br><input type="text" name="ticket" id="ticket" class="a" required placeholder="Ticket" ><br>
  7.  
  8. <br>
  9. <br>Szkło hartowane<br><select name="szklo" class="a" >
  10. <option>Nie</option>
  11. <option>Tak</option>
  12. </select><br>
  13. <br>IMEI:<br><input type="number" name="imei" id="imei" class="a" maxlength="15" placeholder="IMEI 15 znaków" ><br>
  14.  
  15. <br><label>Marka</label><br>
  16. <select name="marka" class="a" id="marka" >
  17. <option value=""> Wybierz Markę</option>
  18. <?php
  19. $result = $db->query('SELECT * FROM Marki');
  20.  
  21. $key = $result->fetchAll(PDO::FETCH_ASSOC);
  22.  
  23. foreach ($key as $marki)
  24. {
  25. ?>
  26. <option value="<?php echo $marki["Marka_ID"]; ?>"><?php echo $marki["Marka"];?> </option>
  27. <?php
  28.  
  29. }
  30.  
  31. ?>
  32. </select>
  33. <br><br>
  34. <label>Model</label><br>
  35. <select name="model" id="listamodeli" class="a">
  36. <option value=""></option></select>


GETDATA:
  1. <?php
  2. include ("../configbase.php");
  3.  
  4.  
  5. if (!empty($_POST["Marka_ID"])){
  6.  
  7. //$cid = $_POST["CID"];
  8. $result = $db->prepare("SELECT * FROM cennikmobi10 WHERE Marka_ID = :cid group by Model");
  9. $result -> bindValue(':cid', $_POST["Marka_ID"], PDO::PARAM_INT);
  10. $result -> execute();
  11.  
  12. foreach ($result as $model)
  13. {
  14. ?>
  15. <option value="<?php echo $model["Model"]; ?>"><?php echo $model["Model"]; ?></option>
  16. <?php
  17. }
  18. }
  19. ?>


KOD JS
  1. <script src="//code.jquery.com/jquery-3.1.1.min.js"></script>
  2. <script>
  3. function getId(val){
  4.  
  5. $.ajax({
  6. type: "POST",
  7. url: "getdata.php",
  8. data: "Marka_ID="+val,
  9. success: function(data){
  10. $('#listamodeli').html(data);
  11. }
  12.  
  13. });
  14. }
  15. $(function(){
  16. $('select[name="marka"]').on('change', function(e) {
  17. getId(this.value);
  18. });
  19. });
  20. </script>
viking
PDO::PARAM_INT

Nie sądzisz że skoro chcesz wysyłać stringa to powyższy zapis jest bez sensu? Już kiedyś miałeś zdaje się kilka stron dyskusji jak sprawdzać swój kod, gdzie szukać zwracane dane.
timeo
Miałem wacko.gif Przepraszam biję się w pierś

Chodzi Ci o ten zapis?
  1. $result -> bindValue(':cid', $_POST["Marka_ID"], PDO::PARAM_INT);
?
Tylko tam jest INT bo to jest liczba
viking
Przecież twój wątek polega na tym że nie chcesz liczby tylko markę. A marka jak rozumiem jest stringiem.
timeo
Zrobiłem Tak i działa (może od strony tylnych liter ale mi będzie pasować)
  1. $mareczk = $db->prepare("SELECT * FROM cennikmobi10 WHERE Marka_ID = :cid group by Model LIMIT 1");
  2. $mareczk-> bindValue(':cid', $_POST["marka"], PDO::PARAM_STR);
  3. $mareczk -> execute();
  4. foreach ($mareczk as $model)
  5. {
  6. $markatego=$model['Marka'];
  7. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.