Php select option e ajax

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Buonasera a tutti, capisco che sto oer chiedere una cosa quasi scontata per voi,ma essendo nuovo di php ajax ecc sono in netta difficolta... Il problena è banale...ho una tabella mysql con dei valori e vorrei che selezionando il valore da una select le successive (due) input text vengano popolate. Non posto codice perché non ho fatto nulla di comprensibile. So che devo usare l'evento onchangeselect della option e richiamare una function ajax ma...pur provando vari esempi non va...potete darmi qualche dritta? Qualche link? Grazie mille.
E.
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
Codice preso da stackoverflow:
HTML:
<select name="lista" id="type">
   <option value="op1">opzione1</option>
   <option value="op2">opzione2</option>
</select>

$(function() {
  $('#lista').bind('change', function(ev) {
     var value = $(this).val();
     $.ajax({
        .....
     });
  });
});
In questo modo capisci quando l'utente cambia selezione e fai partire la chiamata. Dentro a $.ajax devi mettere i parametri della chiamata, ossia url, dati, l'evento che vuoi che avvenga come risultato,... Ti mando questo link, dove ci sono vari esempi di codici (il primo dovrebbe andar bene), ovviemente nel "data" dovrai inserire come valore la variabile value.
Infine devi creare la pagina PHP, che riceve con $_POST il valore scelto (nel tuo caso "op1" o "op2") e dopo in base a questo usi sql per interagire con il database e fare il return alla chiamata ajax.

Prova a buttare giù un po' di codice e poi facci sapere.
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Grazie Tommy...super gentile...tra qualche minuto provo,purtroppo faccio questo per passione e non per professione. Sicuramente avrò bisogno ancora del tuo supporto...a tra poco
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83

@Emanuele85

Usa gli appositi tag per postare del codice

Leggi il regolamento
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
Allora, ho visto che nel post sopra avevo sbagliato, praticamente nel recupero dell'evento jQuery hai messo "#codcol", non funziona perche deve riferirsi all'id della select, quindi dentro al tag select aggiungi id="codcol".
Poi all'interno del parametro data, codice_col deve essere messo tra apici singoli, e sempre dentro a data non ci va codcol, ma value.
Intanto fai queste modifiche, però probabilmente non vedrai nessun cambiamento, perche dentro alla chiamata ajax devi inserirci anche il parametro success (cerca su Google) altrimenti non succede niente.
Ti consiglio di fare cose "semplici" intanto, soltanto per vedere se la chiamata ajax funziona (ad esempio metti solo un semplice alert) di verifica, e se poi funziona allora ti concentri sul sql all'interno del file php
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Tommy con un po di mal di testa sono riuscito ad andare avanti, ho iniziato con gli alert e ho fatto una sorta di debug fino a quando non ho azzerato gli errore...detto ciò ho ancora un problemino, sono riuscito a farmi restituire la stringa che "disegna" la input box con tanto di risultato della query nel campo value...ma...come la passo al mio form?

dettaglio_pratica.php:

HTML:
<label for="exampleInputEmail1">Cod. Perito</label> 
        <select  id="codcol"  name="cod_perito"  class="form-control1" style="height: 35px;width: 10%">
        <option value="<?php  echo $row->codcol;?>"><?php  echo $row->codcol;?></option>
        <?php
                $sql1="SELECT * from  cod_periti";

        $query1 = $dbh -> prepare($sql1);
        $query1->execute();
        $results1=$query1->fetchAll(PDO::FETCH_OBJ);
            
        if($query1->rowCount() > 0)
        {
    
            foreach($results1 as $row1)
                {     
            
            ?>
                <option value="<?php  echo $row1->cod_perito;?>"><?php  echo $row1->cod_perito;?></option>
                
            
            <?php
                }
        }
            
            ?>
            
    </select> 
 

    <label for="exampleInputEmail1">Cognome e Nome Resp. Amm.</label> <input type="text" style="width: 300px" id="resp_amm_cognome" name="resp_amm_cognome" value="<?php  echo ltrim($row->resp_amm_cognome);?>" class="form-control">
JavaScript:
$(function() {
  $('#codcol').bind('change', function(ev) {
     alert( "Sono arrivato qui");
     var value = $(this).val();
     $.ajax({
      type:'post',
      url: 'check_codcol.php',
      dataType: 'text',
      data : { 'codice_col' : value},
      success : function(data){
         $('#resp_amm_cognome').html(data);
      }
     });
  });
});

</script>

check_codcol.php

PHP:
include('includes/dbconnection.php');
if (isset($_POST['codice_col'])) {
    $sql = "SELECT * FROM cod_periti where cod_perito ='".$_POST['codice_col']."'";
    $query = $dbh -> prepare($sql);
    $query->execute();
    $results=$query->fetchAll(PDO::FETCH_OBJ);
    
    if($query->rowCount() > 0)   
        foreach($results as $row) {
             echo '<input type="text" style="width: 300px" id="resp_amm_cognome" name="resp_amm_cognome" value="'.$row->perito_nome .'" class="form-control">';
         }
    }else{

        echo 'Errore';
    }

Puoi dirmi cosa manca? credo che il problema sia qui: $('#resp_amm_cognome').html(data);
Tnks
E
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
In JQuery il metodo .html riempie un determinato contenitore con qualcosa (ciò che è contenuto nella parentesi, nel tuo caso il risultato della chiamata ajax), quindi l'errore è che al posto di mettere "#resp_amm_cognome" devi mettere l'ID del form (<form id="...">). Tuttavia, il metodo .html sostituisce ciò che è già dentro al form, con il risultato della chiamata, se tu vuoi che si aggiunga, dovresti usare il metodo .append
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
ho provato e hai ragione...ma io vorrei che riempie il campo già esistente... è possibile?
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Hai ragione... in pratica ho questo form con 65 campi che aggiorna dei dati su un Db. tra i vari campi ho messo delle select per fare in modo di recuperare dei valori dal Db e non farli scrivere manualmente agli utenti. Detto ciò, la select id="codcol" fa una query su una tabella con i seguenti campi: Id, Cod_perito,Cognome perito, nome perito,mail ecc... e vorrei che una volta selezionato il "codcol" si vadano a popolare i campi cognome e nome (nell'esempio ho messo solo il cognome) id="resp_amm_cognome". un po come funziona per il classico esempio regioni-provincie-comuni.

Spero di essermi spiegato bene, ma a prescindere da tutto volevo ringraziarti per il tempo che mi stai dedicando...
E
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
Beh, se hai la necessita di riempire un campo già esistente con il cognome preso dal DB (è quello che devi fare, giusto?), puoi fare l'echo soltanto della variabile con il cognome, e nel success della chiamata ajax metti:
HTML:
$('#id_campo').val(data);
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
perfetto...funziona alla grande...ora però volendo prendere più valori es. Cognome nome mail ecc e distribuire questi valori nelle rispettive caselle mi sta creando problemi. Mi sono creato 1 array e faccio il suo echo... ma non vengono richiamati i campi...
questo è il success:

JavaScript:
success : function(data){
          
          $('#perito_cognome').val(data.perito_cognome);
          $('#perito_mail').val(data.perito_mail);         
        
      }

e questo è l'array

JavaScript:
if($query->rowCount() > 0)   
        foreach($results as $row) {
            
            $perito_mail=$row->perito_mail;
            $perito_cognome=$row->perito_nome;
            $arr = array ("perito_mail"=>"$perito_mail","perito_cognome"=>"$cognome_perito" );
            echo json_encode($arr);       
             //echo ($arr);
    
         }

giuro che poi per stasera non ti scoccio più :):)

E
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
Credo che tu debba togliere le virgolette da $perito_mail e $perito_cognome, e poi nel JQuery devi mettere dataType:'json' non 'text'. Prova così, se ancora non funziona fai un alert(data) per vedere se è un problema col php o col jquery.
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Sei un grande!!! con un po di modifiche sono arrivato alla soluzione. La riporto di seguito:

PHP:
if (isset($_POST['codice_col'])) {
    $sql = "SELECT * FROM cod_periti where cod_perito ='".$_POST['codice_col']."'";
    $query = $dbh -> prepare($sql);
    $query->execute();
    $results=$query->fetchAll(PDO::FETCH_OBJ);
    
    if($query->rowCount() > 0)   
        foreach($results as $row) {
            
            $arr = array ("perito_mail"=>$row->perito_mail,"perito_cognome"=>$row->perito_cognome." ".$row->perito_nome,"perito_telefono"=>$row->perito_tel);
            echo json_encode($arr); 
         }
    }else{

        echo 'Errore';
    }


JavaScript:
$(function() {
  $('#codcol').bind('change', function(ev) {
    
     var value = $(this).val();
     $.ajax({
      type:'post',
      url: 'check_codcol.php',
      dataType: 'json',
      data : { 'codice_col' : value},
      
      success : function(data){
          
          $('#perito_cognome').val(data.perito_cognome);
          $('#perito_mail').val(data.perito_mail);
          $('#perito_tel').val(data.perito_telefono);         
        
      }
     });
  });
});


Ti ringrazio infinitamente per la pazienza... ci risentiremo presto :D:D:D
un saluto
E
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Buonasera a tutti, riprendo questa discussione perchè il problema è similare... La procedura sopra indicata, è valida anche se volessi fare delle query partendo da una input text? mi spiego meglio, vorrei eseguire una funzione partendo dall'evento blur di una input text, prenderne il valore, e fare un controllo sul database per prelevare dati. Ho provato a fare in questo modo:

JavaScript:
$(function() {
  $('#idinput').bind('blur', function(ev) {
    
     var value = $(this).val();
     $.ajax({
      type:'post',
      url: 'check_codcol.php',
      dataType: 'json',
      data : { 'idinput' : value,'idselectbox' : value},
      
      success : function(data){
          
          $('#idinput2').val(data.perito_cognome);
          $('#idinput3').val(data.perito_mail);
          $('#idinput4').val(data.perito_telefono);         
        
      }
     });
  });
});

Se metto un messaggio sotto la "var value = $(this).val();" riesco ad avere il valore $(this).val(); ma credo che da li in poi ci sia qualche problema, non chiamo il file php (faccio una echo ad inizio programma) e non ho messaggi di errore.

Sapete suggerirmi qualcosa?
questo sistema funziona benissimo con le select, e non vorrei che in questo caso sto sottovalutando qualcosa

Grazie a tutti
E
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
Non ho capito precisamente cosa devi fare, l'evento blur verifica quando un campo input perde il focus. Praticamente tu vuoi che quando l'utente scrive qualcosa su un campo e poi clicca fuori, si riempiono altri campi?
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Esatto Vorrei che quando il campo perde i Focus parte una query con il dato di questo campo più un altro dato proveniente da una Select box e vengono popolati altri tre Campi .ho usato lo stesso metodo usato in passato (che tu mi hai suggerito) ma non va... Helpppp
 
Discussioni simili
Autore Titolo Forum Risposte Data
MatMac System [PHP] Gestione dinamica select-option PHP 3
D Come salvare scelta della select "dinamica" ajax-php? Come dato php o attributo value tag option? Ajax 5
L [PHP] 3 menù Select OPTION consecutivi PHP 1
andrea.peo PHP forzare option value di elenco select database Mysql PHP 2
L Select Option con php PHP 7
G Colorare menu select attraverso ricerca php PHP 0
F menù select dinamico da db in php PHP 3
Emix Select concatenate php sql ajax PHP 2
J php, scegliere autista da select e mostrare se ha fatto un incidente PHP 8
T [PHP] Autocompilazione input multiple da una select PHP 1
Alex_70 [PHP] Visualizzare foto tramite select PHP 0
S [PHP] aggiornamento table tramite select senza ricaricare la pagina PHP 5
M [PHP] Problema con query select PHP 2
C [PHP] Controllo <select> comportamento anomalo PHP 2
G [PHP] Select con opzioni dipendenti da un'altra select PHP 3
M [PHP] Problemi con select PHP 6
M [PHP] Drop down in campo select PHP 1
D [PHP] Select dinamici PHP 2
G sql select con array in php PHP 1
L [PHP] Form da select compilare campi automaticamente PHP 1
T [php] problema creazione query select-where PHP 5
Monital [PHP] query update e select insieme ma frazionando l'arrray PHP 12
S [PHP] restituire intera frase da una select PHP 7
A [PHP] select a cascata regione province e comuni PHP 5
maxnegri Sommare i prezzi dei prodotti aggiunti al carrello di diverse aziende con Select sum php mysqli PHP 10
A [PHP] Errore select dati da db PHP 0
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
webmachine [PHP][MYSQL] Problema con le SELECT PHP 5
L [PHP] SELECT DINAMICA PHP 0
A [Javascript] Select concatenata php csv Javascript 3
P [PHP] Recuperare dati da una <select> PHP 4
bubino8 [PHP] Select multipla su piu tabelle PHP 3
Emix [PHP] Check - Select e recupero variabili PHP 40
MikSkagit [PHP] Doppio SELECT PHP 10
eraclio666 [PHP] 2 SELECT DINAMICHE PHP 8
T PHP+MYSQL: una select che cerchi un campo vuoto PHP 7
trattorino [PHP] Select tre tabelle collegamento PHP 9
eraclio666 [PHP] Input text dopo sue select PHP 4
T4MAR4 [PHP] piu select in ricerca PHP 1
alessandroz Select ... where... AND... aggiornamento PHP non funziona PHP 9
F [PHP] Aiuto SELECT DISTINCT / GROUP BY PHP 17
S Select Concatenate Ajax, php, sql Presentati al Forum 16
D Sono disperato: Menu select dinamici con Ajax e PHP PHP 1
D Sono disperato: Menu select dinamici con Ajax e PHP Ajax 2
K [PHP] Passare valore select PHP 2
S [PHP] numero progressivo su SELECT PHP 8
E Modulo PHP con campi Select PHP 7
C [PHP] PDO prepared statement - select query errore PHP 7
S [PHP] select riempimento automatico PHP 6
H [PHP] Select dinamiche : regioni province comuni PHP 2

Discussioni simili