Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zapisanie zapytania do bazy danych z select bez przeładowania strony
Forum PHP.pl > Forum > Przedszkole
timeo
Hejka
Mam taki kod i chciałbym, żeby po wybraniu z listy rozwijanej do bazy została zapisana dana i zmieniła się ona w wyświetlanym select bez przeładowania strony. Da się to jakoś zrobić? Pomożecie?
  1. <form action='' method='POST'>
  2. <label for="Serwisant" class="col-md-4 text-left ">Serwisant:</label>
  3. <div class="col-md-8 text-right">
  4. <select class="btn-info" id="dropdown" onchange="function()" data-width="75%" data-style="btn-info" id="Ktorobil" name="Ktorobil" >
  5.  
  6. <option value="<?php echo $row['Ktorobil']; ?>" selected="selected"><?php echo $row['Ktorobil']; ?></option>
  7. <option value="XXXXXX" <?php if($row['Ktorobil']=="XXXXXX") {echo 'selected="selected"';} ?>>XXXXXX</option>
  8. <option value="YYYYYYY" <?php if ($row['Ktorobil']=="YYYYYYYY") {echo 'selected="selected"';} ?>>YYYYYY</option>
  9. <option value="ZZZZZZ" <?php if($row['Ktorobil']=="ZZZZZZZZ") {echo 'selected="selected"';} ?>>ZZZZZZ</option>
  10.  
  11. </select>
  12.  
  13. <input type="hidden" name="przypisanieserwisanta" value="przypisanieserwisanta">
  14. <input type="hidden" name="ticket" value="<?php echo $row['ticket']; ?>">
  15. </form>
  16. </div></div>


Kod do bazy
  1. if(isset($_POST['przypisanieserwisanta']))
  2. {
  3.  
  4. $stmt = $db->prepare("UPDATE mobidoktor SET Ktorobil= :Ktorobil WHERE ticket = :ticket");
  5. $stmt -> bindValue(':ticket',$_POST['ticket'], PDO::PARAM_STR);
  6. $stmt -> bindValue(':Ktorobil',$_POST['Ktorobil'], PDO::PARAM_STR);
  7. $stmt -> execute();
  8.  
  9. }
phpamator
Ajax, Ajax, Ajax
Rysh
Kod
$('#Ktorobil').change(function() {
$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});
});
timeo
A teraz pytanko jak zrobić żeby z tego select jeszcze wysłać na przykład nr ID, z którego pola jest wysyłane zapytanie. This.form.submit przełodwuje stronę a tego nie chcę. Może jest jakaś inna opcja.

Dobra mam coś takiego. Co poprawić?
  1. <select class="btn-info" id="newElementsName" onchange="addElement('<?php $ticket = $row['ticket']; echo $ticket; ?>')" data-width="75%" data-style="btn-info" name="Ktorobil" >
  2.  
  3. <option value="<?php echo $row['Ktorobil']; ?>" selected="selected"><?php echo $row['Ktorobil']; ?></option>
  4. <option value="<?php echo $row['Ktorobil']; ?>" selected="selected"><?php echo $row['Ktorobil']; ?></option>
  5. <option value="XXXXXX" <?php if($row['Ktorobil']=="XXXXXX") {echo 'selected="selected"';} ?>>XXXXXX</option>
  6. <option value="YYYYYYY" <?php if ($row['Ktorobil']=="YYYYYYYY") {echo 'selected="selected"';} ?>>YYYYYY</option>
  7. <option value="ZZZZZZ" <?php if($row['Ktorobil']=="ZZZZZZZZ") {echo 'selected="selected"';} ?>>ZZZZZZ</option>
  8.  
  9. </select>

Oraz kod JS
  1. function addElement(){
  2. // get new name
  3. var name = $("#newElementsName").val();
  4. // create ajax call
  5. $.ajax({
  6. type: "POST",
  7. url: "update.php", // URL to php script
  8. data: { // post data for php script (I use the data from your form (including the typo))
  9. ticket: $ticket,
  10. Ktorobil: this.value,
  11. save: 'Save'
  12. },
  13. success: function(data){
  14. // this function will be called when php script run successful (HTTP-Status 2xx)
  15. // Clear the input filed
  16. $("#newElementsName").val('');
  17. // Add new name to dropdown
  18. $("#newElementsName").append("<option>"+name+"</option>");
  19. }
  20. });
  21.  
  22. }


Nikt nic?

Ok. A teraz Panowie - bo się głowię i nie mogę dojść do ładu.
Poniżej Kod JS oraz w pętli
  1. <script>
  2. function addElement(){
  3. var all_select = document.getElementsByTagName("select");
  4. for (i = 0; i < all_select.length; i++) {
  5. all_select[i].onchange = function () {
  6. alert(this.value);
  7.  
  8. }
  9. }
  10.  
  11. $.ajax({
  12. method: "POST",
  13. url: "update.php", // URL to php script
  14. data: {
  15. ticket: ticket, name: all_select
  16. },
  17. success: function(data){
  18. alert('Przypisano');
  19. $("#newElementsName").val('');
  20.  
  21. $("#newElementsName").append("<option>"+all_select+"</option>");
  22. }
  23. });
  24.  
  25. }
  26. </script>



Select są w pętli, więc może być ich kilka. Pytanie jak sobie pobrać do elementu "dataticket" z select i przypisać go do funkcji? Pomożecie?


  1. <?php
  2. foreach ($stmt as $row)
  3. { ?>
  4. <select class="btn-info" id="newElementsName" onchange="addElement()" dataticket="<?php echo $ticket; ?>" data-width="75%" data-style="btn-info" name="Ktorobil" >
  5.  
  6. <option value="<?php echo $row['Ktorobil']; ?>" selected="selected"><?php echo $row['Ktorobil']; ?></option>
  7. <option value="<?php echo $row['Ktorobil']; ?>" selected="selected"><?php echo $row['Ktorobil']; ?></option>
  8. <option value="XXXXXX" <?php if($row['Ktorobil']=="XXXXXX") {echo 'selected="selected"';} ?>>XXXXXX</option>
  9. <option value="YYYYYYY" <?php if ($row['Ktorobil']=="YYYYYYYY") {echo 'selected="selected"';} ?>>YYYYYY</option>
  10. <option value="ZZZZZZ" <?php if($row['Ktorobil']=="ZZZZZZZZ") {echo 'selected="selected"';} ?>>ZZZZZZ</option>
  11.  
  12. </select>
  13. <?php
  14. }
  15. ?>
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.