Buonasera a tutti e buon anno, eccomi qua...alle strette di nuovo... sto perdendo i capelli a questo giro
.
Vi spiego il mio problema, ho una tabella mysql nella quale sono registrate delle info, la tablella è molto semplice, sono 4 campi:
ID Codice Descrizione MacroCategoria
1 10.0.0.1 Lavorazione XXXXX 1
2 10.0.0.2 Lavorazione YYYYY 2
3 10.0.0.3 Lavorazione ZZZZZ 3
Sul mio Form ho una select con l'elendo dei codici ( che popolo con una funzione ogni volta che la pagina fa il load). Con l'evento change chiamo lo stesso file php (è un file contenente tante funzioni) e vado a popolare la casella descrizione e una casella nascosta con MacroCategoria. Quest'ultimo mi serve per stabilire il colore del testo nella casella (1 - verde, 2-giallo, 3-rosso). E' un po contorto ma funziona. In pratica quel codice stabilisce la pericolosità della lavorazione e di conseguenza voglio contrassegnarla con un colore.
Vi posto il codice:
Funzione:
Tutto funziona bene se seleziono il valore del codice... Ma se Salvo i dati senza cambiare selezionare il codice mi succede una cosa strana ( strana per me ovviamente), è come se venisse comunque chiamata la funzione php (non passando per ajax), senza alcun valore per cui mi svuota i campi...ma cosa bellissima, in alto sullo schermo vedo la stessa input corretta, anche nei colori, quindi è come se venisse duplicata (una la vedo al posto giusto del form ma vuota, una in alto sullo schermo con i dati)
PS. Nella funzione passo anche la casella hidden altrimenti non saprebbe al ricaricare della pagina il colore da utilizzare per il testo. Se ci sono altre soluzioni...MAGARI!
Sicuramente il problema nasce dal fatto che passo l'html ma non riesco a risolvere, chiama la funzione anche quando non dovrebbe.
Sapete dirmi dove sto sbagliando?
Grazie mille come al solito
saluti
E

Vi spiego il mio problema, ho una tabella mysql nella quale sono registrate delle info, la tablella è molto semplice, sono 4 campi:
ID Codice Descrizione MacroCategoria
1 10.0.0.1 Lavorazione XXXXX 1
2 10.0.0.2 Lavorazione YYYYY 2
3 10.0.0.3 Lavorazione ZZZZZ 3
Sul mio Form ho una select con l'elendo dei codici ( che popolo con una funzione ogni volta che la pagina fa il load). Con l'evento change chiamo lo stesso file php (è un file contenente tante funzioni) e vado a popolare la casella descrizione e una casella nascosta con MacroCategoria. Quest'ultimo mi serve per stabilire il colore del testo nella casella (1 - verde, 2-giallo, 3-rosso). E' un po contorto ma funziona. In pratica quel codice stabilisce la pericolosità della lavorazione e di conseguenza voglio contrassegnarla con un colore.
Vi posto il codice:
HTML:
<div class="col-2">
<label for="formFile" class="form-label">Cod. Rischio</label>
<select class="form-control" aria-label="Default select example" id="txtcod_rischio_azienda" name="txtcod_rischio_azienda">
<option value="<?php echo $row1->cod_rischio;?>"><?php echo $row1->cod_rischio;?></option>
<option disabled>- - -</option>
<?php
GetCodRischio();
?>
</select>
</div>
Pagina Html
<div id ="div_descr_codrisc" class="col-4">
<label for="formFile" class="form-label">Dettaglio Cod. Rischio</label>
<input type="text" id="txtdescr_codris_azienda" name="txtdescr_codris_azienda " style="font-weight: bold;" value="<?php echo $row1->descr_codrischio;?>"
<?php
if ($row1->val_rischio=="1"){
?>
class="text-success form-control "
<?php
}elseif ($row1->val_rischio=="2") {
?>
class="text-warning form-control "
<?php
}elseif ($row1->val_rischio=="3") {
?>
class="text-danger form-control "
<?php
}elseif ($row1->val_rischio=="") {
?>
class="form-control "
<?php
}
?>
>
</div>
JavaScript:
<script type="text/javascript">
$(function() {
$('#txtcod_rischio_azienda').on('change', function() {
var txtcod_rischio_azienda = $('#txtcod_rischio_azienda').val();
var test=1;
$.ajax({
type:'post',
url:'./function/funzioni.php',
data : {'txtcod_rischio_azienda' : txtcod_rischio_azienda,'test':test},
success : function(data){
$('#div_descr_codrisc').html(data);
}
});
});
});
</script>
Funzione:
PHP:
if (isset($_POST['txtcod_rischio_azienda'])&& trim($_POST["txtcod_rischio_azienda"]) != "") {
echo '<script type="text/javascript">alert("Sei Passato qui");</script>';
$txtcod_rischio_azienda = ($_POST['txtcod_rischio_azienda']);
$test = ($_POST['test']);
if ($test=="1"){
$test=="0";
$sql = "SELECT * FROM codicerischio where Codice =:txtcod_rischio_azienda";
$query = $dbh -> prepare($sql);
$query->bindParam(':txtcod_rischio_azienda',$txtcod_rischio_azienda,PDO::PARAM_STR);
$query->execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);
if (($query->rowCount() > 0)) {
foreach($results as $row)
{
$html='<label for="formFile" class="form-label">Dettaglio Cod. Rischio</label>';
if ($row->MacroCategoria=="1"){
$html.='<input type="text" class="text-success form-control " id="txtdescr_codris_azienda" name="txtdescr_codris_azienda" style="font-weight: bold;" value="'.$row->Descrizione.'">';
}elseif ($row->MacroCategoria=="2"){
$html.='<input type="text" class="text-warning form-control " id="txtdescr_codris_azienda" name="txtdescr_codris_azienda" style="font-weight: bold;" value="'.$row->Descrizione.'">';
}elseif ($row->MacroCategoria=="3"){
$html.='<input type="text" class="text-danger form-control " id="txtdescr_codris_azienda" name="txtdescr_codris_azienda" style="font-weight: bold;" value="'.$row->Descrizione.'">';
}
$html.='<input type="hidden" class="text-danger form-control " id="hidden_codris_azienda" name="hidden_codris_azienda" style="font-weight: bold;" value="'.$row->MacroCategoria.'">';
echo $html;
}
}else{
}
}
}
Tutto funziona bene se seleziono il valore del codice... Ma se Salvo i dati senza cambiare selezionare il codice mi succede una cosa strana ( strana per me ovviamente), è come se venisse comunque chiamata la funzione php (non passando per ajax), senza alcun valore per cui mi svuota i campi...ma cosa bellissima, in alto sullo schermo vedo la stessa input corretta, anche nei colori, quindi è come se venisse duplicata (una la vedo al posto giusto del form ma vuota, una in alto sullo schermo con i dati)
PS. Nella funzione passo anche la casella hidden altrimenti non saprebbe al ricaricare della pagina il colore da utilizzare per il testo. Se ci sono altre soluzioni...MAGARI!
Sicuramente il problema nasce dal fatto che passo l'html ma non riesco a risolvere, chiama la funzione anche quando non dovrebbe.
Sapete dirmi dove sto sbagliando?
Grazie mille come al solito
saluti
E