Ciao a tutti,
Partendo dalla precedenza esperienza con il Cercaruota, ho pensato di modificare il mio form di Modifica, Inserimento, Ricerca, ecc in modo tale da renderlo più perfettamente funzionante rispetto a quello fatto in precedenza.
Ho cercato di trovare un metodo per passare attraverso la stringa data i valori dei campi record in modo tale che potessi successivamente splittare la stringa ricavando un Array con i singoli valori campi da inserire poi sui corrispettivi tag del form.
Qui nasce la prima domanda: esiste un approccio migliore...ho visto json_encode che potrebbe fare al mio caso ma lo trovo abbastanza ostico da gestire poi in javascript.
A questo punto passo al codice:
passo la stringa debitamente formattata per lo splittamento al tag #hid (hidden) in modo tale che possa essere poi passato post al form tabellamod.php o tabellains.php (non ho esigenze di compatibilità con browser differenti in questo caso).
poi alcune delle funzioni contenute nel file Select.class.php:
Seconda domanda: succede un problema strano che non sono riuscito a risolvere e cioè nella Select Ruota ho il Select Text giusto per ogni Record che scorro fatto salvo per il Select Text "Nylon+Poliuretano/PA+PU Wheels". Ho provato con trim($ruota) e trim($row['tiporuota']). Ho provato con if (strcasecmp($ruota, $row['tiporuota']) == 0) anzichè if ($ruota==$row['tiporuota']) ma niente! Nella Select Text ho il valore zero "scegli...." solo nel caso di Select Text = "Nylon+Poliuretano/PA+PU Wheels".
Disponibile ovviamente ad inviare la View e il db Form con tabella tiporuota
Partendo dalla precedenza esperienza con il Cercaruota, ho pensato di modificare il mio form di Modifica, Inserimento, Ricerca, ecc in modo tale da renderlo più perfettamente funzionante rispetto a quello fatto in precedenza.
Ho cercato di trovare un metodo per passare attraverso la stringa data i valori dei campi record in modo tale che potessi successivamente splittare la stringa ricavando un Array con i singoli valori campi da inserire poi sui corrispettivi tag del form.
Qui nasce la prima domanda: esiste un approccio migliore...ho visto json_encode che potrebbe fare al mio caso ma lo trovo abbastanza ostico da gestire poi in javascript.
A questo punto passo al codice:
PHP:
<form id="myForm" action="tabellamod.php" method="POST" >
<table width="400" border="0">
<thead>
<tr>
<th ><div align="left">Login Modifica</div></th>
</tr>
</thead>
<tbody>
<tr>
<!-- Combo -->
<td >
<label for="utente">Utente: </label>
<input type="text" id="utente" name="utente" maxlength="35" size="25" value="" />
</td>
</tr>
<tr>
<td >
<label for="password">Password: </label>
<input type="password" id="passw" name="passw" maxlength="35" size="25" value="" />
</td>
</tr>
<tr>
<td>
Modifica/Inserimento:
<select id="dove" name="dove" >
<option value="0">scegli...</option>
<option value="1">tabellains.php</option>
<option value="2">tabellamod.php</option>
</select>
</td>
</tr>
<tr>
<td height="50">
<div align="left" id="dt"> <input type="hidden" id="hid" name="hid" value="" /> </div>
<div align="right"><input type="submit" id="btn" name="btn" value="Elabora Dati" /></div>
</td>
</tr>
</tbody>
</table>
</form>
Codice:
$(document).ready(function(){
$("select#dove").val(0);
$("select#dove").change(function(){ Tabelle() });
function Tabelle()
{
var ut =document.getElementById('utente').value;
var psw =document.getElementById('passw').value;
var dove = $("select#dove option:selected").attr('value');
var frm = document.getElementById('myForm');
if (ut=='' || psw=='' ) { alert("Utente o Password non valida!"); window.location.href = "modifica.php"; return false; }
else if (dove==0){ alert("Non hai scelto la tabella da caricare!"); window.location.href = "modifica.php"; return false; }
else
{
var nr=-1;
if (dove==1){ frm.action="tabellains.php"; nr=-1;} // valore nr indica per me ultimo record per tab ins
else if (dove==2) { frm.action="tabellamod.php"; nr=0; } // valore nr che indica primo rec - tab modif
$.ajax ({
type: "POST",
url: "conn.php",
data:
{
ut : ut,
psw : psw,
nrR : nr
},
dataType: "html",
success: function(data)
{
$("#hid").val(data);
},
error: function() { alert("malfunzionamento conn.php"); }
});
}
}
passo la stringa debitamente formattata per lo splittamento al tag #hid (hidden) in modo tale che possa essere poi passato post al form tabellamod.php o tabellains.php (non ho esigenze di compatibilità con browser differenti in questo caso).
PHP:
<?php
require_once 'select.class.php';
$opt = new SelectList();
if(empty($_POST['passw'])) header( 'Location: modifica.php' );
else
{
extract($_POST, EXTR_OVERWRITE);
if(!empty($hid)) $Arr=explode("***", $hid);
}
?>
<table width="970" border="0">
<form id="myForm" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="POST" >
<thead>
<tr>
<th >
<div align="right">Modifica il Record </div><th><div div align="left"> / Modify the Record</div>
</th></th>
</tr>
</thead>
<tbody>
<!-- Combo -->
<tr>
<td >
Codice Meccanografico: <input type="text" name="codice" id="codice" value="<?php if (!empty($Arr[0])) echo $Arr[0]; ?>" size="20" />
</td>
<td >
Descrizione: <input type="text" name="descrizione" id="descrizione" value="<?php if (!empty($Arr[1])) echo $Arr[1]; ?>" size="50" />
</td>
</tr>
<tr>
<td >
Altezza Supporto: <input type="text" name="altezza" id="altezza" value="<?php if (!empty($Arr[8])) echo $Arr[8]; ?>" size="10" />
</td>
<td >
Disassamento: <input type="text" name="disassamento" id="disassamento" value="<?php if (!empty($Arr[9])) echo $Arr[9]; ?>" size="10" />
</td>
</tr>
<tr>
<td >
Dimensioni Piastra: <input type="text" name="dimpiastra" id="dimpiastra" value="<?php if (!empty($Arr[10])) echo $Arr[10]; ?>" size="10" />
</td>
<td >
Interassi foro: <input type="text" name="intforo" id="intforo" value="<?php if (!empty($Arr[11])) echo $Arr[11]; ?>" size="10" />
</td>
</tr>
<tr>
<td >
Spessore Piastra: <input type="text" name="spespiastra" id="spespiastra" value="<?php if (!empty($Arr[12])) echo $Arr[12]; ?>" size="10" />
</td>
<td >
Freno: <input type="checkbox" id="freno" name="freno" value="" <?php if ($Arr[17]==1) echo 'checked'; ?> />
</td>
</tr>
<tr>
<td >
Spessore Forca: <input type="text" name="spesforca" id="spesforca" value="<?php if (!empty($Arr[14])) echo $Arr[14]; ?>" size="10" />
</td>
<td >
Larghezza Forca: <input type="text" name="largforca" id="largforca" value="<?php if (!empty($Arr[13])) echo $Arr[13]; ?>" size="10" />
</td>
</tr>
<tr>
<td >
Foro centrale: <input type="text" name="forocen" id="forocen" value="<?php if (!empty($Arr[15])) echo $Arr[15]; ?>" size="10" />
</td>
<td >
Foro asse: <input type="text" name="foroasse" id="foroasse" value="<?php if (!empty($Arr[16])) echo $Arr[16]; ?>" size="10" />
</td>
</tr>
<tr>
<td >
Applicazione/Application:
<select id="applicazione" name="applicazione" >
<?php
$idAp=0;
if ($Arr2=1) $idAp=2;
else if ($Arr[2]=0) $idAp=1;
echo $opt->ShowApplicazioni($Arr[2]);
?>
</select>
</td>
<td >
<?php
$idComeR=0;
if ($Arr[5]!='' && $Arr[18]!='') $idComeR=3;
else if ($Arr[5]=='' && $Arr[18]!='') $idComeR=1;
else if ($Arr[5]!='' && $Arr[18]=='') $idComeR=2;
?>
Volvenza/Bearing:
<select id="volvenza" name="volvenza">
<?php echo $opt->ShowVolvenza($idAp, $idComeR, $Arr[19]); ?>
</select>
</td>
</tr>
<tr>
<td >
Come Ruota/How is the wheel?:
<select id="comeRuota" name="comeRuota" >
<?php
echo $opt->ShowComeRuota($idComeR);
?>
</select>
</td>
<td>
Ruota/Wheel?:
<select id="TipoRuota" name="TipoRuota">
<?php echo $opt->ShowRuota($idAp, $idComeR, $Arr[18]); ?>
</select>
</td>
</tr>
<tr>
<td height="50">
Diametro/Diameter:
<select id="Diametro" name="Diametro">
<?php echo $opt->ShowDiametro($idAp, $idComeR, $Arr[3]); ?>
</td>
<td height="50">
Portata/Carrying Capacity:
<select id="Portata" name="Portata">
<?php echo $opt->ShowPortata($idAp, $idComeR, $Arr[4]); ?>
</select>
</td>
</tr>
<tr>
<td height="50">
Supporto/Housing:
<select id="TipoSupporto" name="TipoSupporto">
<?php echo $opt->ShowSupporto($idAp, $idComeR, $Arr[7]); ?>
</select>
</td>
<td >
Serie Supporti/Housing Series:
<select id="SerieSupporti" name="SerieSupporti">
<?php echo $opt->ShowSerieSup($idAp, $idComeR, $Arr[5]); ?>
</select>
</td>
</tr>
<tr>
<td height="50">
Tipo Lamiera/Metal Sheet:
<select id="TipoLamiera" name="TipoLamiera">
<?php echo $opt->ShowLamiera($idAp, $idComeR, $Arr[6]); ?>
</select>
</td>
<td height="50">
Tipi Pavimenti/Which Floor?:
<select id="TipoPavimenti" name="TipoPavimenti">
<?php
if ($Arr[20]=='PavimentoPiastrelle') $Arr[20]='Piastrelle/Tile';
else $Arr[20]='Tutti i Pavimenti/All Floors';
echo $opt->ShowPavimenti($idAp, $idComeR, $Arr[20] ); ?>
</select>
</td>
</tr>
<tr>
<td >
Link foto: <input type="text" name="linkfoto" id="linkfoto" value="<?php if (!empty($Arr[21])) echo $Arr[21]; ?>" size="50" />
</td>
<td >
Link note: <input type="text" name="linknote" id="linknote" value="<?php if (!empty($Arr[22])) echo $Arr[22]; ?>" size="50" />
</td>
</tr>
<tr>
<td >
Link PDF: <input type="text" name="linkpdf" id="linkpdf" value="<?php if (!empty($Arr[23])) echo $Arr[23]; ?>" size="50" />
</td>
<td >
Link DWG: <input type="text" name="linkdwg" id="linkdwg" value="<?php if (!empty($Arr[24])) echo $Arr[24]; ?>" size="50" />
</td>
</tr>
<tr>
<td >
Link Altro disegno: <input type="text" name="linkdis3" id="linkdis3" value="<?php if (!empty($Arr[25])) echo $Arr[25]; ?>" size="50" />
</td>
<td >
Link Altro disegno: <input type="text" name="linkdis4" id="linkdis4" value="<?php if (!empty($Arr[26])) echo $Arr[26]; ?>" size="50" />
</td>
</tr>
<tr>
<td >
Link al Sito Web: <input type="text" name="linkweb" id="linkweb" value="<?php if (!empty($Arr[27])) echo $Arr[27]; ?>" size="60" />
</td>
<td >
<input type="hidden" name="ut" id="ut" value="<?php if (!empty($utente)) echo $utente; ?>" />
<input type="hidden" name="ps" id="ps" value="<?php if (!empty($passw)) echo $passw; ?>" />
</td >
<tr>
<td >
<div align="right"><input type="submit" id="primo" nome="primo" value="<<" /><input type="submit" id="indietro" nome="indietro" value="<" /></div>
<div align="right">Nr. Rec.: <input type="text" id="nrRec" name="nrRec" class="resizedTextbox" readonly value="1" /></div>
<div style="text-align: left" /><img src="./img/delete.png" style="visibility: hidden;" width="30" visible="false" /></div>
</td>
<td height="50">
<div align="left"><input type="submit" id="avanti" nome="avanti" value=">" /><input type="submit" id="ultimo" name="ultimo" value=">>" />
<div align="left"><input type="text" id="totRec" name="totRec" readonly value="<?php if (!empty($Arr[28])) echo $Arr[28]; ?>" class="resizedTextbox2" /> Totale Rec.:</div>
<div style="text-align: right" >
<input type="image" src="./img/delete.png" id="del" title="cancella" width="30" />
<input type="image" src="./img/update.png" title="aggiorna" width="30" />
<input type="image" src="./img/lente.png" id="cerca" nome="cerca" title="cerca" width="30" />
</div>
</td>
</tr>
<tr>
</tbody>
</form>
</table>
<p> </p>
</div>
Codice:
$(document).ready(function(){
var ut = $("#ut").val();
var psw = $("#ps").val();
$("#primo").click(function(){ Primo() });
$("#ultimo").click(function(){ Ultimo() });
$("#avanti").click(function(){ Avanti() });
$("#indietro").click(function(){ Indietro() });
$("#cerca").click(function(){ Cerca() });
$( "#myForm" ).submit(function( event ) {
event.preventDefault();
})
function Cerca()
{
var risp=prompt("Parola da cercare?","scegli:");
if (risp==null || risp=="") alert("non hai digitato nulla!");
else
CaricaDB(ut, psw, risp);
}
function Indietro()
{
var nr=parseInt($( ".resizedTextbox" ).val());
var parag=nr;
parag-=1;
if (parag>=1)
nr-=1;
CaricaDB(ut, psw, nr-1);
$( ".resizedTextbox" ).val(nr.toString());
}
function Avanti()
{
var ultrec=$( ".resizedTextbox2" ).val();
var nr=parseInt($( ".resizedTextbox" ).val());
var parag=nr;
parag+=1;
if (parag<=ultrec)
nr+=1;
CaricaDB(ut, psw, nr-1);
$( ".resizedTextbox" ).val(nr.toString());
}
function Primo()
{
CaricaDB(ut, psw, '0');
$( ".resizedTextbox" ).val('1');
}
function Ultimo()
{
var ultrec=parseInt($( ".resizedTextbox2" ).val());
CaricaDB(ut, psw, ultrec-1);
$( ".resizedTextbox" ).val(ultrec);
}
function CaricaDB(ut, psw, fl )
{
$.ajax ({
type: "POST",
url: "conn.php",
data:
{
ut : ut,
psw : psw,
nrR : fl
},
dataType: "html",
success: function(data)
{
InTextbox(data);
},
error: function() { alert("malfunzionamento conn.php"); }
});
}
function InTextbox(st)
{
var app;
var res = st.split('***');
var ComeR;
// Serie Supporti vuota e TipoRuota non vuota = Solo Ruota
if (res[5]=='' && res[18]!='') ComeR=1;
// Serie Supporti non vuota e TipoRuota vuota = Solo Supporto
else if (res[5]!='' && res[18]=='') ComeR=2;
// Serie Supporti non vuota e TipoRuota non vuota = Ruota Montata
else if (res[5]!='' && res[18]!='') ComeR=3;
if (res[2]==1) { app=2; } else { app=1; }
for (var i = 0; i < res.length; i++) {
switch(i){
case 0:
$("#codice").val(res[i]);
break
case 1:
$("#descrizione").val(res[i]);
break
case 2:
$("select#applicazione").val(app);
break
case 3:
loadXMLDoc("Diametro","Diametro",app,ComeR,res[i]);
break
case 4:
loadXMLDoc("Portata","Portata",app,ComeR,res[i]);
break
case 5:
loadXMLDoc("SerieSupporti","SerieSup",app,ComeR,res[i]);
break
case 6:
loadXMLDoc("TipoLamiera","Lamiera",app,ComeR,res[i]);
break
case 7:
loadXMLDoc("TipoSupporto","Supporto",app,ComeR,res[i]);
break
case 8:
$("#altezza").val(res[i]);
break
case 9:
$("#disassamento").val(res[i]);
break
case 10:
$("#dimpiastra").val(res[i]);
break
case 11:
$("#intforo").val(res[i]);
break
case 12:
$("#spespiastra").val(res[i]);
break
case 13:
$("#largforca").val(res[i]);
break
case 14:
$("#spesforca").val(res[i]);
break
case 15:
$("#forocen").val(res[i]);
break
case 16:
$("#foroasse").val(res[i]);
break
case 17:
$("#freno").prop("checked", res[i]);
break
case 18:
res[i]=res[i].trim();
loadXMLDoc("TipoRuota","Ruota",app,ComeR,res[i]);
break
case 19:
loadXMLDoc("volvenza","volvenza",app,ComeR,res[i]);
break
case 20:
// converto TipoPavimenti per Verfica con Form
if (res[i]=='PavimentoPiastrelle') res[i]='Piastrelle/Tile';
else res[i]='Tutti i Pavimenti/All Floors';
loadXMLDoc("TipoPavimenti","Pavimenti",app,ComeR,res[i]);
break
case 21:
$("#linkfoto").val(res[i]);
break
case 22:
$("#linknote").val(res[i]);
break
case 23:
$("#linkpdf").val(res[i]);
break
case 24:
$("#linkdwg").val(res[i]);
break
case 25:
$("#linkdis3").val(res[i]);
break
case 26:
$("#linkdis4").val(res[i]);
break
case 27:
$("#linkweb").val(res[i]);
break
}
}
}
function loadXMLDoc(form_tag, funzione, applic, comeR,inText)
{
var xURL = "characteristics.php?funzione="+funzione+"&id="+applic+"&id2="+comeR+"&inText="+inText;
var attendere = '<option value="-1">Attendere...</option>';
$("select#"+form_tag).html(attendere);
$("select#"+form_tag).attr("disabled", "disabled");
GetData("select#"+form_tag, xURL);
return;
}
function GetData(form_tag, xURL)
{
var xmlhttp=false;
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
{
try { xmlhttp = new XMLHttpRequest(); }
catch (e) { xmlhttp = false; }
}
if (!xmlhttp && window.createRequest)
{
try { xmlhttp = window.createRequest(); }
catch (e) { xmlhttp = false; }
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState===4 && xmlhttp.status===200)
{
data = xmlhttp.responseText;
SetValues(form_tag, data);
}
}
xmlhttp.open("GET", xURL, true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(null);
return
}
function SetValues(form_tag, data)
{
$(form_tag).removeAttr("disabled");
var n1 = data.indexOf("<option");
var n2 = data.indexOf("</select>");
data = data.substring(n1, n2);
$(form_tag).html(data);
return
}
});
poi alcune delle funzioni contenute nel file Select.class.php:
PHP:
<?php
class SelectList
{
function MieQuery($qualiQuery, $risp='')
{
// view come da suggerimento di Marino
$SelTrova="SELECT codice, descrizione, industriale, diametro, portata, seriesupporti, ";
$SelTrova.="tipolamiera, tiposupporto, altezza, disassamento, dimensionipiastra, interassiforo, ";
$SelTrova.="spessorepiastra,larghezzaforca,spessoreforca,forocentrale, foroasse, freno, tiporuota, ";
$SelTrova.="volvenza, tipopavimenti, linkfoto, linknote, linkpdf, linkdwg, linkdisegno3, linkdisegno4, ";
$SelTrova.="LinkWeb FROM tabellamod";
$SelCerca=$SelTrova;
//$SelTrova2=" Order By trovaruota.codice";
$SelTrova2=" Order By codice";
$SelTrova=$SelTrova.$SelTrova2;
$SelCount="SELECT count(*) FROM trovaruota";
$SelCerca.=" Where (trovaruota.codice Like '%".$risp."%') Or ";
$SelCerca.="(trovaruota.descrizione Like '%".$risp."%') Or (diametro.diametro Like '%".$risp."%') Or ";
$SelCerca.="(portata.portata Like '%".$risp."%') Or (seriesupporti.seriesupporti Like '%".$risp."%') Or ";
$SelCerca.="(tipolamiera.tipolamiera Like '%".$risp."%') Or (tiposupporto.tiposupporto Like '%".$risp."%') Or ";
$SelCerca.="(dimensionesupporto.dimensionipiastra Like '%".$risp."%') Or (dimensionesupporto.interassiforo Like '%".$risp."%') Or ";
$SelCerca.="(tiporuota.tiporuota Like '%".$risp."%') Or (volvenza.volvenza Like '%".$risp."%') Or ";
$SelCerca.="(tipopavimenti.tipopavimenti Like '%".$risp."%')";
$SelCerca.=$SelTrova2;
switch ($qualiQuery) {
case 1:
return $SelTrova;
break;
case 2:
return $SelCount;
break;
case 3:
return $SelCerca;
break;
// poi ci sarà anche select ultimo record per tabella inserimento
default:
return $SelTrova;
}
}
public function ShowRuota ($idApp, $idcomeR, $ruota)
{
$options = '<select id="TipoRuota" name="TipoRuota">';
$options= $this->OptionZero();
$sql = "SELECT * FROM tiporuota ";
$sql.= "WHERE applicazioneid =".$idApp." AND comeruotaid =".$idcomeR;
$res = $this->connDatabaseForm($sql);
while($row = mysql_fetch_array($res))
if ($ruota==$row['tiporuota'])
$options.= '<option value="' . $row['ruotacercaid'] . '" selected="selected" >' . $row['tiporuota'] . '</option>';
else
$options.= '<option value="' . $row['ruotacercaid'] . '">' . $row['tiporuota'] . '</option>';
$options.= '</select>';
return $options;
}
Seconda domanda: succede un problema strano che non sono riuscito a risolvere e cioè nella Select Ruota ho il Select Text giusto per ogni Record che scorro fatto salvo per il Select Text "Nylon+Poliuretano/PA+PU Wheels". Ho provato con trim($ruota) e trim($row['tiporuota']). Ho provato con if (strcasecmp($ruota, $row['tiporuota']) == 0) anzichè if ($ruota==$row['tiporuota']) ma niente! Nella Select Text ho il valore zero "scegli...." solo nel caso di Select Text = "Nylon+Poliuretano/PA+PU Wheels".
Disponibile ovviamente ad inviare la View e il db Form con tabella tiporuota