- Home
- Categorie
- Coding e Sistemistica
- PHP
- sito dinamico
-
forse ho capito ma puoi farmi un esempio di codice?
-
dovresti un po sconvolgere lo script, ovvero, invece di inviare 0,1,2 o altro....
il value del select dovrebbe riportare il proprio valore e la categoria (o le categorie) del livello/i superiore/i
del tipo (metti di dover variare l'area):
value="x,y,z,0,0"
dove x è l'operazione selezionata
y il servizio
z l'area nuova da selezionare
i successivi sarano ovviamente blankpostati i dati li scomponi e ricostruisci i tuoi select lasciando blank quelli successivi
-
ho seguito il tuo consiglio cioè ho utilizzato il value="$ordine,$servizi,$aree,$aop,$sotta,$matt" passando in base alla scelta della select i valori corrispondenti cioè non da visualizzare uguale a zero ed ho creato le guardie che con la funzione explode della variabile passata dal form mi associasse ogni singolo valore alle variabili $servizio, $area, ... ma non mi funziona ancora come volevo.
-
ah, scusami nel passaggio precedente mi son scordato un pezzo
ovviamente in quel caso i select successivi (aop nello specifico, utilizzerà come variabili della query i valori passati....)
nel caso dettaglia cosa accade (o cosa non accade) che vediamo di risolvere
-
scusate ma il mio javascript è un po' scarso quindi vi chiedo se è possibile tramite il tasto reset riazzerare o per lo meno cambiare il valore di una variabile php (esempio $aop=0; tramite una istruzione di una funzione js)
-
io ho fatto una cosa del genere ma l'errore che riscontro è che una volta fatta la discesa di tutte le select non riesco più aselezionare un diverso percorso quindi se cambiassi per esempio la voce nella select delle aree le select sottostanti non scompariscono.
[PHP]
<link href="stile.css" rel="stylesheet" type="text/css" />
<?php
include ("config.php");
include ("user.php");
include ("basetop.php");
?>
<?php
if (isset ($_POST['ordine'])){
$str = $_POST['ordine'];
$var = explode(',',$str);$ordine = $var[0];
$servizi = "0";
$aree = "0";
$aop = "0";
$sotta = "0";
$matt = "0";
}else{
$ordine = "0";
$servizi = "0";
$aree = "0";
$aop = "0";
$sotta = "0";
$matt = "0";
}if (isset ($_POST['servizi'])){
$str = $_POST['servizi'];
$var = explode(',',$str);$ordine = $var[0];
$servizi = $var[1];
$aree = "0";
$aop = "0";
$sotta = "0";
$matt = "0";
}else{
$servizi = "0";
$aree = "0";
$aop = "0";
$sotta = "0";
$matt = "0";
}if (isset ($_POST['aree'])){
$str = $_POST['aree'];
$var = explode(',',$str);$ordine = $var[0];
$servizi = $var[1];
$aree = $var[2];
$aop = "0";
$sotta = "0";
$matt = "0";
}else{
$aree = "0";
$aop = "0";
$sotta = "0";
$matt = "0";
}if (isset ($_POST['aop'])){
$str = $_POST['aop'];
$var = explode(',',$str);$ordine = $var[0];
$servizi = $var[1];
$aree = $var[2];
$aop = $var[3];
$sotta = "0";
$matt = "0";
}else{
$aop = "0";
$sotta = "0";
$matt = "0";
}if (isset ($_POST['sotta'])){
$str = $_POST['sotta'];
$var = explode(',',$str);$ordine = $var[0];
$servizi = $var[1];
$aree = $var[2];
$aop = $var[3];
$sotta = $var[4];
$matt = "0";
}else{
$sotta = "0";
$matt = "0";
}if (isset ($_POST['matt'])){
$str = $_POST['matt'];
$var = explode(',',$str);$ordine = $var[0];
$servizi = $var[1];
$aree = $var[2];
$aop = $var[3];
$sotta = $var[4];
$matt = $var[5];
}else{
$matt = "0";
}
?>
<?php /*?><?php
if (isset ($_POST['ordine']))
$ordine = $_POST['ordine'];
else
$ordine = "0";
if (isset ($_POST['servizi']))
$servizi = $_POST['servizi'];
else
$servizi = "0";
//echo "$servizi<br/>";
if (isset ($_POST['aree']))
$aree = $_POST['aree'];
else
$aree = "0";
//echo "$aree<br/>";
if (isset ($_POST['aop']))
$aop = $_POST['aop'];
else
$aop = "0";
//echo "$aop<br/>";
if (isset ($_POST['sotta']))
$sotta = $_POST['sotta'];
else
$sotta = "0";
//echo "$sotta<br/>";
?><?php */?>
<?php
if (isset ($_POST['kpi_servizi']))
$kpi_servizi = $_POST['kpi_servizi'];
else
$kpi_servizi = "0";
//echo "$kpi_servizi<br/>";
if (isset ($_POST['kpi_aree']))
$kpi_aree = $_POST['kpi_aree'];
else
$kpi_aree = "0";
//echo "$kpi_aree<br/>";
?><script type="text/javascript">
<!--
function invia()
{
document.form1.submit();
}function resetta()
{
document.form1.ordine.value=0;
document.form1.servizi.value=0;
document.form1.aree.value=0;
document.form1.aop.value=0;
document.form1.sotta.value=0;
document.form1.matt.value=0;
document.form1.kpi_servizi.value=0;
document.form1.kpi_aree.value=0;
document.form1.submit();
}function submit_racc_dati()
{
var check;
check="true";
if(check=="true"){
if((document.form1.ordine.value=="----- seleziona -----")||(document.form1.servizi.value=="----- seleziona -----")||
(document.form1.aree.value=="----- seleziona -----")||(document.form1.aop.value=="----- seleziona -----")||
(document.form1.sotta.value=="----- seleziona -----")||(document.form1.matt.value=="----- seleziona -----")){
alert("Tutti i campi devono essere selezionati!");
check="false";
}
}
if(check=="true"){
document.form1.action="racc_dati.php";
document.form1.submit();
}
}function submit_kpi_aop()
{
var check;
check="true";
if(check=="true"){
if((document.form1.ordine.value=="----- seleziona -----")||(document.form1.kpi_servizi.value=="----- seleziona -----")||
(document.form1.kpi_aree.value=="----- seleziona -----")){
alert("Tutti i campi devono essere selezionati!");
check="false";
}
}
if(check=="true"){
document.form1.action="kpi_aop.php";
document.form1.submit();
}
}
//-->
</script><div class="box_top"><br/>
<div class="box_top_botton">
</div>
<div class="box_top_title">
</div>
<div class="box_top_report">
</div>
<div class="box_date">
<b><?php
$giorni = array("Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato");
$mesi = array("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre","Novembre", "Dicembre");$numero_giorno_settimana = date("w");
$nome_giorno = $giorni[$numero_giorno_settimana];
$numero_giorno_mese = date("j");
$numero_mese= date("n");
$numero_mese--;
$nome_mese = $mesi[$numero_mese];
$numero_anno = date("Y");
$ore = date("G");
$minuti = date("i");
//$secondi = date("s");echo "$nome_giorno $numero_giorno_mese $nome_mese $numero_anno";
?></b>
</div>
<div class="box_top_login">
<a href="login_page.php" title="Amministrazione" style='color: #666666; margin-right:10px;'> <b>Amministrazione</b></a>
</div>
</div>
<div class="box_select">
<div class="box_select_title">
<b>Coordinamento Servizi Operativi</b>
</div>
<div class="box_select_activity">
<table>
<form name="form1" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<input type="hidden" name="rst" value="1" />
<p><tr>
<td>OPERAZIONE</td><td><select name="ordine" onchange="invia()">
<option value="<?php echo '0,0,0,0,0,0';?>"<?php echo ($ordine == "0" ? " selected="selected"" : ""); ?>>----- seleziona -----</option>
<option value="<?php echo '1,0,0,0,0,0';?>"<?php echo ($ordine == "1" ? " style='background-color:#999999' selected="selected"" : ""); ?>>Raccolta dati</option>
<option value="<?php echo '2,0,0,0,0,0';?>"<?php echo ($ordine == "2" ? " style='background-color:#999999' selected="selected"" : ""); ?>>Indicatoti (KPI)</option>
<option value="<?php echo '3,0,0,0,0,0';?>"<?php echo ($ordine == "3" ? " style='background-color:#999999' selected="selected"" : ""); ?>>Verifica esecuzione controlli</option>
</select></td>
</p></tr><!-- INIZIO discesa dell'albero -->
<?php if ($ordine == "1") { ?>
<p><tr>
<?php
$sql_servizi="SELECT ID_SERV, N_SERV FROM t_serv ORDER BY ORD";$result_mssql_servizi=@mssql_query($sql_servizi,$link);
if(!$result_mssql_servizi) {
exit('<p>Errore! Non sono presenti servizi nel database!<br/>' .
'Error: ' . mssql_error() . '</p>');
}
$opt_servizi="<option value='1,0,0,0,0,0' ($servizi == '0' ? ' selected='selected'' : '')>----- seleziona -----</option>";
while($result_servizi=mssql_fetch_array($result_mssql_servizi)){
$ids_serv = $result_servizi ["ID_SERV"];//sigla
$n_serv=$result_servizi ["N_SERV"];//nome per esteso
$opt_servizi.="<option value='1,$ids_serv,0,0,0,0' ".($servizi == $ids_serv ? ' style="background-color:#999999" selected='selected'' : '').">$n_serv</option>";
}
?>
<td>SERVIZI</td><td><select name="servizi" onchange="invia()">
<?php echo "$opt_servizi";?>
</select></td>
</p></tr>
<?php } ?>
<?php if ($servizi != "0") { ?>
<p><tr>
<?php
$sql_aree="SELECT * FROM tl_serv_aree INNER JOIN t_aree ON tl_serv_aree.ID_AREA=t_aree.ID_AREA WHERE ID_SERV='$servizi' ORDER BY ORD";$result_mssql_aree=@mssql_query($sql_aree,$link);
if(!$result_mssql_aree) {
exit('<p>Errore! Non sono presenti servizi nel database!<br/>' .
'Error: ' . mssql_error() . '</p>');
}
$opt_aree="<option value='1,$ids_serv,0,0,0,0' ($aree == '0' ? ' selected='selected'' : '')>----- seleziona -----</option>";
while($result_aree=mssql_fetch_array($result_mssql_aree)){
$ids_area = $result_aree ["ID_AREA"];//sigla
$n_area=$result_aree ["N_AREA"];//nome per esteso
$opt_aree.="<option value='1,$ids_serv,$ids_area,0,0,0' ".($aree == $ids_area ? ' style="background-color:#999999" selected='selected'' : '').">$n_area</option>";
}
?>
<td>AREE</td><td><select name="aree" onchange="invia()">
<?php echo "$opt_aree";?>
</select></td>
</p></tr><?php } ?>
<?php if ($aree != "0") { ?>
<p><tr>
<?php
$sql_aop="SELECT * FROM tl_aree_a_op INNER JOIN t_a_op ON tl_aree_a_op.ID_A_OP=t_a_op.ID_A_OP WHERE ID_AREA='$aree' ORDER BY ORD";$result_mssql_aop=@mssql_query($sql_aop,$link);
if(!$result_mssql_aop) {
exit('<p>Errore! Non sono presenti servizi nel database!<br/>' .
'Error: ' . mssql_error() . '</p>');
}
$opt_aop="<option value='1,$ids_serv,$ids_area,0,0,0' ($aop == '0' ? ' selected='selected'' : '')>----- seleziona -----</option>";
while($result_aop=mssql_fetch_array($result_mssql_aop)){
$id_aop = $result_aop ["ID_A_OP"];//numero univoco
$ids_aop = $result_aop ["S_A_OP"];//sigla
$n_aop=$result_aop ["N_A_OP"];//nome per esteso
$opt_aop.="<option value='1,$ids_serv,$ids_area,$id_aop,0,0' ".($aop == $id_aop ? ' style="background-color:#999999" selected='selected'' : '').">$n_aop</option>";
}
?>
<td>AMBITI OPERATIVI</td><td><select name="aop" onchange="invia()">
<?php echo "$opt_aop";?>
</select></td>
</p></tr><?php } ?>
<?php if ($aop != "0") { ?>
<p><tr>
<?php
$sql_sotta="SELECT * FROM tl_a_op_sott_a INNER JOIN t_sott_a ON tl_a_op_sott_a.ID_SOTT_A=t_sott_a.ID_SOTT_A WHERE ID_A_OP='$aop' ORDER BY ORD";$result_mssql_sotta=@mssql_query($sql_sotta,$link);
if(!$result_mssql_sotta) {
exit('<p>Errore! Non sono presenti servizi nel database!<br/>' .
'Error: ' . mssql_error() . '</p>');
}
$opt_sotta="<option value='1,$ids_serv,$ids_area,$id_aop,0,0' ($sotta == '0' ? ' selected='selected'' : '')>----- seleziona -----</option>";
while($result_sotta=mssql_fetch_array($result_mssql_sotta)){
$id_sotta = $result_sotta ["ID_SOTT_A"];//numero univoco
$ids_sotta = $result_sotta ["S_SOTT_A"];//sigla
$n_sotta=$result_sotta ["N_SOTT_A"];//nome per esteso
$opt_sotta.="<option value='1,$ids_serv,$ids_area,$id_aop,$id_sotta,0' ".($sotta == $id_sotta ? ' style="background-color:#999999" selected='selected'' : '').">$n_sotta</option>";
}
?>
<td>SOTTAMBITI OPERATIVI</td><td><select name="sotta" onchange="invia()">
<?php echo "$opt_sotta";?>
</select></td>
</p></tr><?php } ?>
<?php if ($sotta != "0") { ?>
<p><tr>
<?php
$sql_matt="SELECT * FROM tl_sott_a_m_att_proc INNER JOIN t_m_att ON tl_sott_a_m_att_proc.ID_M_ATT=t_m_att.ID_M_ATT WHERE ID_SOTT_A='$sotta' ORDER BY ORD";$result_mssql_matt=@mssql_query($sql_matt,$link);
if(!$result_mssql_matt) {
exit('<p>Errore! Non sono presenti servizi nel database!<br/>' .
'Error: ' . mssql_error() . '</p>');
}
$opt_sotta="<option value='1,$ids_serv,$ids_area,$id_aop,$id_sotta,0' ($matt == '0' ? ' selected='selected'' : '')>----- seleziona -----</option>";
while($result_matt=mssql_fetch_array($result_mssql_matt)){
$id_matt = $result_matt ["ID_M_ATT"];//numero univoco
$ids_matt = $result_matt ["S_M_ATT"];//sigla
$n_matt=$result_matt ["N_M_ATT"];//nome per esteso
$opt_matt.="<option value='1,$ids_serv,$ids_area,$id_aop,$id_sotta,$id_matt' ".($matt == $id_matt ? ' style="background-color:#999999" selected='selected'' : '').">$n_matt</option>";
}
?>
<td>MACROATTIVITA'</td><td><select name="matt" onchange="">
<?php echo "$opt_matt";?>
</select></td>
</p></tr><p><tr><td>
<input type="button" value="CONFERMA" onClick="javascript: submit_racc_dati();">
<!--<input type="submit" value="INVIA">--></td><td></td>
</p></tr><?php } ?>
<!-- FINE discesa dell'albero --><!-- INIZIO discesa KPI -->
<?php if ($ordine == "2") { ?>
<p><tr>
<?php
$sql_servizi="SELECT ID_SERV, N_SERV FROM t_serv ORDER BY ORD";$result_mssql_servizi=@mssql_query($sql_servizi,$link);
if(!$result_mssql_servizi) {
exit('<p>Errore! Non sono presenti servizi nel database!<br/>' .
'Error: ' . mssql_error() . '</p>');
}
$opt_servizi="<option value='0' ($kpi_servizi == '0' ? ' selected='selected'' : '')>----- seleziona -----</option>";
while($result_servizi=mssql_fetch_array($result_mssql_servizi)){
$ids_serv = $result_servizi ["ID_SERV"];//sigla
$n_serv=$result_servizi ["N_SERV"];//nome per esteso
$opt_servizi.="<option value='$ids_serv' ".($kpi_servizi == $ids_serv ? ' style="background-color:#999999" selected='selected'' : '').">$n_serv</option>";
}
?>
<td>KPI SERVIZI</td><td><select name="kpi_servizi" onchange="invia()">
<?php echo "$opt_servizi";?>
</select></td>
</p></tr><?php } ?>
<?php if ($kpi_servizi != "0") { ?>
<p><tr>
<?php
$sql_aree="SELECT * FROM tl_serv_aree INNER JOIN t_aree ON tl_serv_aree.ID_AREA=t_aree.ID_AREA WHERE ID_SERV='$kpi_servizi' ORDER BY ORD";$result_mssql_aree=@mssql_query($sql_aree,$link);
if(!$result_mssql_aree) {
exit('<p>Errore! Non sono presenti servizi nel database!<br/>' .
'Error: ' . mssql_error() . '</p>');
}
$opt_aree="<option value='0' ($kpi_aree == '0' ? ' selected='selected'' : '')>----- seleziona -----</option>";
while($result_aree=mssql_fetch_array($result_mssql_aree)){
$ids_area = $result_aree ["ID_AREA"];//sigla
$n_area=$result_aree ["N_AREA"];//nome per esteso
$opt_aree.="<option value='$ids_area' ".($kpi_aree == $ids_area ? ' style="background-color:#999999" selected='selected'' : '').">$n_area</option>";
}
?>
<td>KPI AREE</td><td><select name="kpi_aree" onchange="invia()">
<?php echo "$opt_aree";?>
</select></td>
</p></tr><?php } ?>
<?php if ($kpi_aree != "0") { ?><p><tr><td>
<input type="button" value="CONFERMA" onClick="javascript: submit_kpi_aop();">
<!--<input type="submit" value="INVIA">--></td><td></td>
</p></tr><?php } ?>
<!-- FINE discesa KPI -->
<p><tr><td>
<input type="button" value="RESET" onClick="javascript: resetta();">
<!--<input type="button" value="CONFERMA" onClick="javascript: submit_finale();">-->
<!--<input type="submit" value="INVIA">--></td><td></td>
</p></tr>
</form></table>
<?php mssql_close($link); ?>
</div>
</div>[/PHP]
chi mi aiuta non saprei cosa fare?x:x
-
Bene ho deciso di cambiare il lavoro fatto in qualcosa di più standardizzato ed orientato all'utente finale.
Ho deciso di fare un form dove in base alle scelte dell'utente si filtrano delle select e compaiono campi nuovi da avvalorare.
Proprio a questo proposito (campi a comaprsa) ho un problemino nel senso che di solito funziona nella pagina ma... vi posto prima il codice
[PHP]
/INIZIO CODICE in javascript PER VISUALIZZAZIONE CAMPI NASCOSTI con checkbox/
function MostraCampi(obj, a){
var e=document.getElementById(a);
var ck=(obj.checked)?"block":"none";
e.style.display=ck;
}/**/
/FINE CODICE PER VISUALIZZAZIONE CAMPI NASCOSTI/<?php if($db_errore_operativo!=NULL or $db_numero_pezzi_errore_operativo!=NULL or $db_kpi_errore_operativo!=NULL or $db_numero_pezzi_kpi_errore_operativo!=NULL or $db_gravita_errore_operativo!=NULL){?>
<div id="errore_operativo">
<tr><td style="width:300px" align="right" bgcolor="#CCCCCC">Errore operativo<input type="checkbox" name="CheckThis_eo" onclick="MostraCampi(this,'tr_errore_operativo_kpi')"/></td><td align="right">N° pezzi<input type="text" name="UserName" onfocus="CheckCheckBox_eo(this.form)" style="width:40px" onkeyup="verify_num(this);"/></td></tr>
<div id="errore_operativo_kpi">
<tr id="tr_errore_operativo_kpi" style="display:none"><td colspan="2" align="right">
<?php
if($prodotto_causa!="0"){
$sql_errore_operativo="
SELECT
DISTINCT(ID_KPI)
FROM
AX_VIEW_ERRORE_OPERATIVO
WHERE
ID_PRODOTTO='$prodotto_causa'
";
}else if($macroattivita_causa!="0"){
$sql_errore_operativo="
SELECT
DISTINCT(ID_KPI)
FROM
AX_VIEW_ERRORE_OPERATIVO
WHERE
ID_MACROATTIVITA='$macroattivita_causa'
";
}$result_mssql_errore_operativo=@mssql_query($sql_errore_operativo,$link);
while($result_errore_operativo=mssql_fetch_array($result_mssql_errore_operativo)){
$id_errore_operativo = $result_errore_operativo ["ID_CAUSA"];//id
$n_causa = $result_errore_operativo ["N_CAUSA"];//nome per esteso
$id_kpi = $result_errore_operativo ["ID_KPI"];//id kpi
$domanda_quantita_kpi = $result_errore_operativo ["DOMANDA QUANTITA KPI"];//domanda quantità kpi
$quantita_kpi = $result_errore_operativo ["QUANTITA KPI"];//quantita kpi
$gravita_causa = $result_errore_operativo ["GRAVITA CAUSA"];//gravità causa errore?>
<?php if($id_kpi=="0"){?>
KPI Errore operativo<select name="kpi_errore_operativo" style="width:400px">
<option value="" selected>- Seleziona</option>
<option value="1">kpi 1</option>
<option value="2">kpi 2</option>
<option value="3">kpi 3</option>
</select><br/>
<?php } ?>
<?php if($quantita_kpi==NULL){
if($domanda_quantita_kpi==NULL){
?>
N° pezzi KPI<input type="text" name="n_pezzi_kpi_errore_operativo" style="width:40px" onkeyup="verify_num(this);"/>
<?php }else{ ?>
<?php echo $domanda_quantita_kpi;?><input type="text" name="n_pezzi_kpi_errore_operativo" style="width:40px" onkeyup="verify_num(this);"/>
<?php } ?>
<?php } ?>
<?php if($gravita_causa==NULL){?>
Gravità errore<select name="gravita_kpi_errore_operativo" style="width:100px">
<option value="" selected>- Seleziona</option>
<option value="Lieve">Lieve</option>
<option value="Medio">Medio</option>
<option value="Grave">Grave</option>
</select>
<?php } ?>
<?php }//spostare ?>
</td></tr>
</div>
<div id="errore_operativo_specifico">
<?php
if($prodotto_causa!="0" and $macroattivita_causa=="0"){
$sql_errore_operativo_specifico="
SELECT
*
FROM
AX_VIEW_ERRORE_OPERATIVO
WHERE
ID_PRODOTTO='$prodotto_causa'
ORDER BY
ORD
";
}else if($prodotto_causa=="0" and $macroattivita_causa!="0"){
$sql_errore_operativo_specifico="
SELECT
*
FROM
AX_VIEW_ERRORE_OPERATIVO
WHERE
ID_MACROATTIVITA='$macroattivita_causa'
ORDER BY
ORD
";
}else if($prodotto_causa=="0" and $macroattivita_causa=="0"){
$sql_errore_operativo_specifico="
SELECT
*
FROM
AX_VIEW_ERRORE_OPERATIVO
WHERE
ID_PRODOTTO='$prodotto_causa' AND ID_MACROATTIVITA='$macroattivita_causa'
ORDER BY
ORD
";
}else if($prodotto_causa!="0" and $macroattivita_causa!="0"){
$sql_errore_operativo_specifico="
SELECT
*
FROM
AX_VIEW_ERRORE_OPERATIVO
WHERE
ID_PRODOTTO='$prodotto_causa' AND ID_MACROATTIVITA='$macroattivita_causa'
ORDER BY
ORD
";
}$result_mssql_errore_operativo_specifico=@mssql_query($sql_errore_operativo_specifico,$link);
while($result_errore_operativo_specifico=mssql_fetch_array($result_mssql_errore_operativo_specifico)){
$id_errore_operativo_specifico = $result_errore_operativo_specifico ["ID_CAUSA"];//id
$n_causa = $result_errore_operativo_specifico ["N_CAUSA"];//nome per esteso
$id_kpi = $result_errore_operativo_specifico ["ID_KPI"];//id kpi
$domanda_quantita_kpi = $result_errore_operativo_specifico ["DOMANDA QUANTITA KPI"];//domanda quantità kpi
$quantita_kpi = $result_errore_operativo_specifico ["QUANTITA KPI"];//quantita kpi
$gravita_causa = $result_errore_operativo_specifico ["GRAVITA CAUSA"];//gravità causa errore$causa_errore_operativo="";
$causa_errore_operativo.="<tr><td style='width:300px' align='right'>$n_causa<input type='checkbox' name='$id_errore_operativo_specifico' onclick='MostraCampi(this,'tr_$id_errore_operativo_specifico')'/></td><td align='right'>N° pezzi<input type='text' name='UserName' style='width:40px' onkeyup='verify_num(this);'/></td></tr>";
if($id_kpi=="0" or $quantita_kpi==NULL or $gravita_causa==NULL){
$causa_errore_operativo.="<tr id='tr_$id_errore_operativo_specifico' style='display:none'>";
if($id_kpi=="0"){
$causa_errore_operativo.="<td colspan='2' align='right'>
KPI $n_causa<select name='kpi_$n_causa' style='width:400px'>
<option value='0' selected>- Seleziona</option>
<option value='1'>kpi 1</option>
<option value='2'>kpi 2</option>
<option value='3'>kpi 3</option>
</select></td>";
}
if($quantita_kpi==NULL or $gravita_causa==NULL){
$causa_errore_operativo.="<tr><td colspan='2' align='right'>";
if($quantita_kpi==NULL){
if($domanda_quantita_kpi==NULL){
$causa_errore_operativo.="N° pezzi KPI<input type='text' name='n_pezzi_kpi_$n_causa' style='width:40px' onkeyup='verify_num(this);'/>";
}else{
$causa_errore_operativo.="$domanda_quantita_kpi<input type='text' name='n_pezzi_kpi_$n_causa' style='width:40px' onkeyup='verify_num(this);'/>";
}
}
if($gravita_causa==NULL){
$causa_errore_operativo.="Gravità errore<select name='gravita_kpi_$n_causa' style='width:100px'>
<option value='0' selected>- Seleziona</option>
<option value='Lieve'>Lieve</option>
<option value='Medio'>Medio</option>
<option value='Grave'>Grave</option>
</select>
";
}
$causa_errore_operativo.="</td></tr>";
}
}
$causa_errore_operativo.="</tr>";
echo $causa_errore_operativo;
}
?>
</div>
</div>
<?php } ?>
<?php if($db_ritardo_operativo!=NULL or $db_numero_pezzi_ritardo_operativo!=NULL or $db_kpi_ritardo_operativo!=NULL or $db_numero_pezzi_kpi_ritardo_operativo!=NULL or $db_gravita_ritardo_operativo!=NULL){?>
<div id="ritardo_operativo">
<tr><td style="width:300px" align="right" rowspan="2" bgcolor="#CCCCCC">Ritardo operativo<input type="checkbox" name="CheckThis_ro" onclick="MostraCampi(this,'tr_ritardo_operativo_kpi')"/></td><td align="right">N° pezzi<input type="text" name="UserName" onfocus="CheckCheckBox_ro(this.form)" style="width:40px" onkeyup="verify_num(this);"/></td></tr>
<tr><td align="right">Giorni di ritardo<input type="text" name="giorni_ritardo" onfocus="CheckCheckBox_ro(this.form)" style="width:40px" onkeyup="verify_num(this);"/></td></tr>
<div id="ritardo_operativo_kpi">
<tr id="tr_ritardo_operativo_kpi" style="display:none"><td colspan="2" align="right">
KPI Ritardo operativo<select name="kpi_ritardo_operativo" style="width:400px">
<option value="" selected>- Seleziona</option>
<option value="1">kpi 1</option>
<option value="2">kpi 2</option>
<option value="3">kpi 3</option>
</select><br/>
N° pezzi KPI<input type="text" name="n_pezzi_kpi_ritardo_operativo" style="width:40px" onkeyup="verify_num(this);"/>
Gravità errore<select name="gravita_kpi_ritardo_operativo" style="width:100px">
<option value="" selected>- Seleziona</option>
<option value="Lieve">Lieve</option>
<option value="Medio">Medio</option>
<option value="Grave">Grave</option>
</select>
</td></tr>
</div>
</div>
<?php } ?>
[/PHP]Praticamente diciamo che l'utente sceglie un prodotto e dalla sua scelta vengono visualizzati gli errori relativi al prodotto scelto.
Prima di tutto vendono visualizzate le famiglie di errore (qui postato solo la famiglia errore operativo) poi sotto ognuno di questi vi sono inseriti gli errori specifici letti dal database.
Se l'utente seleziona la checkbox della famiglia errore operativo può pooi mettere il numero di errori e se non è definito sul db compare l'indicatore relativo all'errore e altri dati.
Questo funziona ma quando vengono creati dinamicamente gli errori specifici il codice (che è uguale a quello dell'errore principale) non funziona nwel senso che la checkbox non serve perchè la funzione MostraCampi() non fa il suo dovere e la riga della tabella contenente i campi dei form a comparsa non fa funzionare il comando style='display:none'.
Chi mi sa dire perchè il codice fa i capricci.P.S. ricordo che la parte dinamica degl'errori specifici sono caricati su una variabile nel codice php e poi stampati a video mentre la famiglia dell'errore è codice html
:?:?:?:?:?:?
-
ho risolto così banalmente.
[PHP]$causa_errore_operativo.="<tr><td style='width:300px' align='right'>$n_causa<input type='checkbox' name='$id_errore_operativo_specifico' onclick="MostraCampi(this,'tr_$id_errore_operativo_specifico')"/></td><td align='right'>N° pezzi<input type='text' name='UserName' style='width:40px' onkeyup='verify_num(this);'/></td></tr>";
[/PHP]è possibile che " possa risolvere la vita?
-
decisamente... senza il " ti interpreta i " come chiusura dell'assegnazione alla variabile del contenuto e riprende al " successivo... quello che c'è in mezzo si aspetta che sia sintatticamente corretto in PHP e non un pezzo di stringa... generando ovviamente un errore... usando \ dici al parser che le " associate non sono di chiusura ma devono essere trattate come parte della stringa di testo...
keiske
-
Ho trovato in giro un bel codice in javascript che mi permettesse di avere un campo data scelta da un calendario.
Il mio problema è che ho più campi di questo genere nello stesso form e che per le date in cima del form il calendario viene mostrato quasi affianco al suo bottone ma invece per le date in fondo al form il calendario viene ancora mostrato in cima e mi tocca scrollare la pagina (molto poco elegante).
[PHP]
/INIZIO CODICE in javascript PER FORM CALENDARIO/
var source;
var tipo;
var campi = new Array();
function cal(val, e, t) {
var dt = new Array();
xPos = (document.layers) ? e.pageX : ((document.all) ? event.x : e.clientX);
yPos = (document.layers) ? e.pageY : ((document.all) ? event.y : e.clientY);
tipo = t;
source = val;
if (t == 0) {
dt[0] = val[0].value;
dt[1] = val[1].value;
dt[2] = val[2].value;
}
else
dt = val.value.split('-');
showCalendar(new Date(dt[2], dt[1] - 1, dt[0]), xPos, yPos);
}
/FINE CODICE PER FORM CALENDARIO/
[/PHP]
[PHP]//esempio di codice di un campo richiamante il calendario
<tr><td class="td_form_sx">Data di rilevazione</td>
<td align="right">
<input type="text" name="datacompleta1" style="width:230px" maxlength="10" value="<?php echo $data_rilevazione;?>">
<input type="button" name="go1" value="V" onMouseDown="cal(datacompleta1, event, 1)"></td>
</tr>
[/PHP]
e quest'ultimo file ax_data.js e quello che richiama e costruisce il calendario
[PHP]
var xwidth = 220;
var xheight = 180;
var browser = document.layers ? 0 : document.all ? 1 : 2;// colori
var backtable = '#999999';//#90C0FF
var calendback = '#CCCCCC';//#DDDDBB
var lines = '#404040';//#404040
var bright = '#000000';//#000000
var festa = '#FF0000';//#FD9139
// ------ Non cambiare ----------
var mesi = new Array('Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno',
'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre');
var days = new Array('Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa', 'Do');
var dd = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var today = new Date();
var anno = today.getFullYear();
var mese = today.getMonth();
var currday = today.getDate();
var cellwidth = Math.floor(xwidth / 7);
xwidth = cellwidth * 7;
var xmese = 0;
var aboutx = false;
var isOn = false;function action(g, m , a) {
function format(x) {
return x > 9 ? x : "0" + x;
}
getId().showIt(false);
if (tipo == 0) {
source[0].value = format(g);
source[1].value = format(m + 1);
source[2].value = a;
}
else
source.value = format(g) + '-' + format(m + 1) + '-' + a;
}
document.write('<style type="text/css">\n<!--');
document.write('.cal { font-family: Arial, Helvetica, sans-serif; font-size: 10px; font-weight: bold; color: #000099}');
document.write('.num { font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-decoration:none}');
document.write('.mese { font-family: Arial, Helvetica, sans-serif; font-size: 14px; font-weight: bold; color: #663300}');
document.write('.butt { font-family: Arial, Helvetica, sans-serif; font-size: 10px}');
document.write('-->\n</style>');function comparedate(d1, d2) {
if (d1.getFullYear() == d2.getFullYear() && d1.getMonth() == d2.getMonth() && d1.getDate() == d2.getDate())
return true;
return false;
}
function pasqua(aa) {
var xx = new Array(22, 22, 23, 23, 24, 24);
var yy = new Array(2, 2, 3, 4, 5, 5);
var a = aa % 19;
var b = aa % 4;
var c = aa % 7;
var i = Math.floor(aa / 100) - 15;
var x = xx*, y = yy*;
var d = (19a + x) % 30;
var e = (2b + 4*c + 6 * d + y) % 7;
var p = 22 + d + e;
var m = 300;
if (p > 31) {
m = 400;
p = p - 31;
}
return m + p;
}function isfesta(d) {
var feste = new Array(0, 101, 106, 425, 501, 602, 815, 1101, 1208, 1225, 1226);
if (d.getDay() == 0)
return true;
var pp = pasqua(d.getFullYear()) + 1; // Pasquetta
if (pp % 100 > 31)
pp = 401;
feste[0] = pp;
for (var i = 0; i < feste.length; i++)
if (Math.floor(feste* / 100) == d.getMonth() + 1) {
var gg = feste* % 100;
if (gg == d.getDate())
return true;
}
return false;
}function calendar(currday, mese, anno) {
var dx = 2 - (new Date(anno, mese, 1)).getDay();
if (dx == 2)
dx = -5;
var daysInMonth = dd[mese];
if (mese == 1) {
if (anno % 4 == 0 && anno % 100 != 0 || anno % 400 == 0)
daysInMonth++
}
var tx = '<div class="mese"> ' + mesi[mese] + ' ' + anno +'</div>\n';
tx += '<table width="' + xwidth + '" border="0" cellspacing="1" cellpadding="1">\n';
tx += '<tr align="right">\n';
for (var i = 0; i < 7; i++)
tx += '<td width="' + cellwidth+ '" class="cal">' + days* + ' </td>\n';
tx += '</tr>\n';
for (var j = 0; j < 6; j++) {
tx += '<tr bgcolor="' + calendback + '" align="right">\n';
for (var i = 0; i < 7; i++) {
var bgstring = "";
var fgcol = lines;
var fgstring = ' ';
if (dx > 0 && dx <= daysInMonth) {
fgstring = dx;
var ddx = new Date(anno, mese, dx);
if (isfesta(ddx)) {
bgstring = ' bgcolor="' + festa + '"';
}
if (comparedate(ddx, today)) {
fgcol = bright;
fgstring = '<b><u>' + dx + '</u></b>\n';
}
var tempdate = ddx.getDate() + ", " + ddx.getMonth() + ", " + ddx.getFullYear();
fgstring = '<a href="javascript:action(' + tempdate + ')" class = "num"><font color="' + fgcol + '">' + fgstring + '</font></a>\n';
}
tx += '<td width="' + cellwidth + '" class="num"' + bgstring + '>\n';
tx += fgstring;
tx += '</td>\n';
dx++;
}
tx += '</tr>\n';
}
tx += '</table>\n';
return tx;
}function dataframe(x) {
var s = '<table width="' + xwidth + '" border="1" cellspacing="0" cellpadding="0" bgcolor="' + backtable + '">';
s += '<tr>\n<td class="mese" valign="middle">';
s += x; // calendar(currday, mese, anno);s += '</td></tr><tr><td>';
s += '<form class="butt"><table width="100%" border="0" cellspacing="0" cellpadding="2">';
s += '<tr>';
s += '<td></td>';
s += '<td align="right"><input type="button" name="prev" value=" - " class="butt" onclick="altro_mese(-1)">';
s += '<input type="button" name="current" value="Default" class="butt" onclick="altro_mese(9)">';
s += '<input type="button" name="next" value=" + " class="butt" onclick="altro_mese(1)"></td>';
s += '</tr></form></table>';
s += '</td>\n</tr>\n</table>';
return s;
}function altro_mese(x) {
xmese += x;
if (x == 9)
xmese = 0;
var xday = (xmese == 0)? currday : 99;
var mm = (mese + xmese) % 12;
while (mm < 0)
mm += 12;
var s = dataframe(calendar(xday, mm, anno + Math.floor((mese + xmese) / 12)));
writeLayer(s);
aboutx = false;
}
function getId() {
switch (browser) {
case 0:
return document.layers.calframe;
case 1:
return eval('calframe');
case 2:
return document.getElementById("calframe");
}
}function moveLayer(xPos, yPos) {
switch (browser) {
case 0:
this.left = xPos+50;
this.top = yPos;
break;
case 1:
this.style.pixelLeft = xPos+50;
this.style.pixelTop = yPos;
break;
default:
this.style.left = xPos+50;
this.style.top = yPos;
}
}function createlayer() {
var s;
if (document.layers)
s = '<layer id="calframe" visibility="hide" z-index=1>';
else
s = '<div id="calframe" style="position:absolute; visibility: hidden">';
if (document.layers)
s += '</layer>';
else
s += '</div>';
document.writeln(s);
}function showIt(on) {
isOn = on;
if (browser)
this.style.visibility = (on) ? "visible" : "hidden";
else
this.visibility = (on) ? "show" : "hide"
}function writeLayer(s) {
var id = getId();
if (browser)
id.innerHTML = s;
else {
id.document.open();
id.document.write(s);
id.document.close();
}
}
function init() {
var id = getId();
id.moveLayer = moveLayer;
id.showIt = showIt;
id.showIt(false);
}function showCalendar(d, xpos, ypos) {
if (!isOn) {if (d) {
anno = d.getFullYear();
mese = d.getMonth();
currday = d.getDate();
} else {
anno = today.getFullYear();
mese = today.getMonth();
currday = today.getDate();
}
if (arguments.length > 2) {
var id = getId();
id.moveLayer(xpos, ypos);
}
else
getId().moveLayer(100, 100);
xmese = 0;
writeLayer(dataframe(calendar(currday, mese, anno)));}
getId().showIt(!isOn);
}createlayer(1);
onload = init;
[/PHP]
Tutto funziona benissimo ma volevo sapere se qualcuno mi sa indicare come modificare questo codice affinchè il calendario venga visualizzato affienco al bottone premuto.P.S. Io devo utilizzare IExplorer
Grazie
-
Devi cercare dove viene impostata la posizione del layer...
Nello statico vedo un class="td_form_sx". Puoi iniziare controllando la classe td_form_sx che fa... se dovesse posizonarlo sei a cavallo perchè ti basta creare una classe tipo .td_form_dx e metterlo altrove...
Altrimenti c'è una caterva di codice html creato nella comunicazione asincrona con ajax
Questa porzione è molto indiziata:
function moveLayer(xPos, yPos) {
switch (browser) {
case 0:
this.left = xPos+50;
this.top = yPos;
break;
case 1:
this.style.pixelLeft = xPos+50;
this.style.pixelTop = yPos;
break;
default:
this.style.left = xPos+50;
this.style.top = yPos;
}
}
-
grazie per la risposta veloce ma td_form_sx l'ho creata io per formattare il campo ma non condiziona il calendario mentre anch'io ho trovato quel codice e l'ho modificato con quei +50 che me mi distanziano più a destra il calendario.
Quello che non capisco è perchè xpos e ypos non prendono la posizione del bottone cliccato oppure non capisco perchè posiziona il calendario sempre in alto
-
Li definisce qui:
xPos = (document.layers) ? e.pageX : ((document.all) ? event.x : e.clientX);
yPos = (document.layers) ? e.pageY : ((document.all) ? event.y : e.clientY);e.pageX / event.x / e.clientX sono le posizioni dove avviene un evento... in pratica lui parte dal punto in cui avviene l'evento... la chiave sta lì...
keiske
-
ci sono ho capito anch'io che è questa la parte di codice di interesse infatti il calendario si sposta sulla pagina ma se clikko su l'ultimo campo della data il calendario compare in cima e questo secondo le coordinate è un assurdo.
Chi mi sa aiutare?:?:?:?
-
Prova temporaneamente a mettere
xPos = 200;
yPos = 200;E vedi come si comporta...
keiske
-
seguendo il tuo consiglio il calendario viene sempre mostrato nella stessa posizione cioè alle coordinate x=200 e y=200
-
Almeno abbiamo capito che è lì la chiave di tutto... adesso bisogna capire perchè (document.layers) ? e.pageX : ((document.all) ? event.x : e.clientX); non ti cattura la coordinata dove avviene l'evento del mouse... controlla in rete le sintassi di "e.pageX, event.x e e.clientX
Suppongo che dipenda dai browser... non è che c'è modo di accedere con DOM?
Prova così:
xPos = event.clientX;
yPos = event.clientY;
-
come mi dici tu scende un po' ma il risultato non è ancora accettabile però leggevo qua e la che:
document.layers indicava il vecchio DOM di Netscape Navigator fino alla versione 4.
document.all indicava il vecchio DOM di Internet Explorer fino alla versione 4 (ma il vecchio DOM è ancora supportato anche all'interno della versione 6)
document.getElementById indica il DOM secondo gli standard del W3C e contraddistingue tutti i browser moderni, compresi Netscape 6 o superiori, Internet Explorer 5 o superiori e molti altri browser (FireFox, Opera, Safari, eccetera)
In pratica document.layers e document.all appartengono al passato.
Oggi devi usare sempre document.getElementById o sintassi secondo gli standard W3C.Io lavoro su internet explorer 7 e dove invece dovrò implementare il codice ha internet explorer 6
-
scusa, mi fai uno screenshot del mouse sul bottone che ha appena cliccato ed è comparso il layer?
Nel tuo caso non usi getElementById, o meglio... vuoi svincolarti dall'evento del mouse?
onclick="document.getElementById('id_del_layer').style.cssText = 'visibility:visible;top:XXpx;left:XXpx'"
A quell'id applichi una classe staticamente che definisce "position:absolute;visibility:hidden" e le cose fisse
In questo modo al click del mouse il layer diventa visibile e si "piazza" dove dici tu e per ogni bottone puoi individuare dove lo vuoi... (ci sono modi più belli esteticamente a livello di codice, ma non conosco bene la tua pagina)
keiske
keiske
-
allora i cerchi rossi indicano i vari campi che richiamano il calendario e nel caso dei bottoni in alto il calendario compare in una posizione accettabile mentre nel caso dei bottoni in basso il calendario non scende di molto e cmq rimane visualizzato sempre troppo in alto e mi tocca scrollare la pagina.