Non riesco a trovare un sistema per abbattere il più possibile i tempi di interrogazione dati di un database ( le tabelle sono normalizzate) che viene interrogato da script jquery e php:
salto il php che include la classe prevista nel file select.php perché si tratta solo di un file di richiamo
file select.php:
Tutto dovrebbe funzionare bene, come si può vedere in http://www.cebora.it/ruote/pp1/cercaruota.php ma vorrei abbattere ulteriormente i tempi di interrogazione del database soprattutto della Query Select count(*) quando lanciata da i primi due combo ComeRuota e Applicazione.
Posso anche postare il file sql relativo al database se necessario.
Grazie per qualsiasi consiglio.
Codice:
<?php
session_start(); // this MUST be called prior to any output including whitespaces and line breaks!
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!-- InstanceBeginEditable name="doctitle" -->
<title>Database</title>
<link href="jquery-ui.css" rel="stylesheet">
<!-- InstanceEndEditable -->
<link href="./css/tabelle.css" rel="stylesheet" type="text/css" />
<script src="jquery-1.11.1.js"></script>
<style type="text/css">
body {
color: #333333;
font-family: 'Helvetica', arial;
}
.wrap {
padding: 40px;
text-align: center;
}
hr {
clear: both;
margin-top: 40px;
margin-bottom: 40px;
border: 0;
border-top: 1px solid #aaaaaa;
}
h1 {
font-size: 30px;
margin-bottom: 40px;
}
p {
margin-bottom: 20px;
}
.btn {
background: #8C9AA6;
border: #357ebd solid 1px;
border-radius: 3px;
color: #fff;
display: inline-block;
font-size: 14px;
padding: 8px 15px;
text-decoration: none;
text-align: center;
min-width: 60px;
position: relative;
transition: color .1s ease;
}
.btn:hover {
background: #357ebd;
}
.btn.btn-big {
font-size: 18px;
padding: 15px 20px;
min-width: 100px;
}
.btn-close {
color: #aaaaaa;
font-size: 30px;
text-decoration: none;
position: absolute;
right: 5px;
top: 0;
}
.btn-close:hover {
color: #919191;
}
.modal:before {
content: "";
display: none;
background: rgba(0, 0, 0, 0.6);
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 10;
}
.modal:target:before {
display: block;
}
.modal:target .modal-dialog {
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
transform: translate(0, 0);
top: 20%;
}
.modal-dialog {
background: #fefefe;
border: #333333 solid 1px;
border-radius: 5px;
margin-left: -200px;
position: fixed;
left: 50%;
top: -100%;
z-index: 11;
width: 360px;
-webkit-transform: translate(0, -500%);
-ms-transform: translate(0, -500%);
transform: translate(0, -500%);
-webkit-transition: -webkit-transform 0.3s ease-out;
-moz-transition: -moz-transform 0.3s ease-out;
-o-transition: -o-transform 0.3s ease-out;
transition: transform 0.3s ease-out;
}
.modal-body {
padding: 20px;
}
.modal-header,
.modal-footer {
padding: 10px 20px;
}
.modal-header {
border-bottom: #eeeeee solid 1px;
}
.modal-header h2 {
font-size: 20px;
}
.modal-footer {
border-top: #eeeeee solid 1px;
text-align: right;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
var scegli = '<option value="0">Scegli...</option>';
var attendere = '<option value="0">Attendere...</option>';
$("select#Diametro").html(scegli);
$("select#Diametro").attr("disabled", "disabled");
$("select#TipoSupporto").html(scegli);
$("select#TipoSupporto").attr("disabled", "disabled");
$("select#TipoLamiera").html(scegli);
$("select#TipoLamiera").attr("disabled", "disabled");
$("select#TipoPavimenti").html(scegli);
$("select#TipoPavimenti").attr("disabled", "disabled");
$("select#volvenza").html(scegli);
$("select#volvenza").attr("disabled", "disabled");
$("select#TipoRuota").html(scegli);
$("select#TipoRuota").attr("disabled", "disabled");
$("select#Portata").html(scegli);
$("select#Portata").attr("disabled", "disabled");
$("select#SerieSupporti").html(scegli);
$("select#SerieSupporti").attr("disabled", "disabled");
$("select#SerieSupporti").html(scegli);
$("select#SerieSupporti").attr("disabled", "disabled");
$("select#applicazione").change(function(){
var applic = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
// comeruota non scelta è di default Ruota montata
if (comeR==0){comeR=3};
$("select#Diametro").html(attendere);
$("select#Diametro").attr("disabled", "disabled");
$.post("select.php", {id:applic,id2:comeR}, function(data){
$("select#Diametro").removeAttr("disabled");
$("select#Diametro").html(data);
});
});
$("select#applicazione").change(function(){
var app = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
if (comeR==0){comeR=3};
$("select#TipoSupporto").html(attendere);
$("select#TipoSupporto").attr("disabled", "disabled");
$.post("select2.php", {id:app,id2:comeR}, function(data){
$("select#TipoSupporto").removeAttr("disabled");
$("select#TipoSupporto").html(data);
});
});
$("select#applicazione").change(function(){
var app = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
if (comeR==0){comeR=3};
$("select#TipoLamiera").html(attendere);
$("select#TipoLamiera").attr("disabled", "disabled");
$.post("select5.php", {id:app,id2:comeR}, function(data){
$("select#TipoLamiera").removeAttr("disabled");
$("select#TipoLamiera").html(data);
});
});
$("select#applicazione").change(function(){
var app = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
if (comeR==0){comeR=3};
$("select#TipoPavimenti").html(attendere);
$("select#TipoPavimenti").attr("disabled", "disabled");
$.post("select9.php", {id:app,id2:comeR}, function(data){
$("select#TipoPavimenti").removeAttr("disabled");
$("select#TipoPavimenti").html(data);
});
});
$("select#applicazione").change(function(){
var app = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
if (comeR==0){comeR=3};
$("select#volvenza").html(attendere);
$("select#volvenza").attr("disabled", "disabled");
$.post("select7.php", {id:app,id2:comeR}, function(data){
$("select#volvenza").removeAttr("disabled");
$("select#volvenza").html(data);
});
});
$("select#applicazione").change(function(){
var app = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
if (comeR==0){comeR=3};
$("select#TipoRuota").html(attendere);
$("select#TipoRuota").attr("disabled", "disabled");
$.post("select11.php", {id:app,id2:comeR}, function(data){
$("select#TipoRuota").removeAttr("disabled");
$("select#TipoRuota").html(data);
});
});
$("select#applicazione").change(function(){
var app = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
if (comeR==0){comeR=3};
$("select#Portata").html(attendere);
$("select#Portata").attr("disabled", "disabled");
$.post("select13.php", {id:app,id2:comeR}, function(data){
$("select#Portata").removeAttr("disabled");
$("select#Portata").html(data);
});
});
$("select#applicazione").change(function(){
var app = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
if (comeR==0){comeR=3};
$("select#SerieSupporti").html(attendere);
$("select#SerieSupporti").attr("disabled", "disabled");
$.post("select15.php", {id:app,id2:comeR}, function(data){
$("select#SerieSupporti").removeAttr("disabled");
$("select#SerieSupporti").html(data);
});
});
$("select#comeRuota").change(function(){
var comeR = $("select#comeRuota option:selected").attr('value');
var applic = $("select#applicazione option:selected").attr('value');
// applicazione non scelto è di default Collettività
if(applic==0) {applic=1};
$("select#Diametro").html(attendere);
$("select#Diametro").attr("disabled", "disabled");
$.post("select3.php", {id:applic,id2:comeR}, function(data){
$("select#Diametro").removeAttr("disabled");
$("select#Diametro").html(data);
});
});
$("select#comeRuota").change(function(){
var comeR = $("select#comeRuota option:selected").attr('value');
var applic = $("select#applicazione option:selected").attr('value');
// applicazione non scelto è di default Collettività
if(applic==0) {applic=1};
$("select#TipoSupporto").html(attendere);
$("select#TipoSupporto").attr("disabled", "disabled");
$.post("select4.php", {id:applic,id2:comeR}, function(data){
$("select#TipoSupporto").removeAttr("disabled");
$("select#TipoSupporto").html(data);
});
});
$("select#comeRuota").change(function(){
var comeR = $("select#comeRuota option:selected").attr('value');
var applic = $("select#applicazione option:selected").attr('value');
// applicazione non scelto è di default Collettività
if(applic==0) {applic=1};
$("select#TipoLamiera").html(attendere);
$("select#TipoLamiera").attr("disabled", "disabled");
$.post("select6.php", {id:applic,id2:comeR}, function(data){
$("select#TipoLamiera").removeAttr("disabled");
$("select#TipoLamiera").html(data);
});
});
$("select#comeRuota").change(function(){
var comeR = $("select#comeRuota option:selected").attr('value');
var applic = $("select#applicazione option:selected").attr('value');
// applicazione non scelto è di default Collettività
if(applic==0) {applic=1};
$("select#TipoPavimenti").html(attendere);
$("select#TipoPavimenti").attr("disabled", "disabled");
$.post("select10.php", {id:applic,id2:comeR}, function(data){
$("select#TipoPavimenti").removeAttr("disabled");
$("select#TipoPavimenti").html(data);
});
});
$("select#comeRuota").change(function(){
var comeR = $("select#comeRuota option:selected").attr('value');
var applic = $("select#applicazione option:selected").attr('value');
// applicazione non scelto è di default Collettività
if(applic==0) {applic=1};
$("select#volvenza").html(attendere);
$("select#volvenza").attr("disabled", "disabled");
$.post("select8.php", {id:applic,id2:comeR}, function(data){
$("select#volvenza").removeAttr("disabled");
$("select#volvenza").html(data);
});
});
$("select#comeRuota").change(function(){
var comeR = $("select#comeRuota option:selected").attr('value');
var applic = $("select#applicazione option:selected").attr('value');
// applicazione non scelto è di default Collettività
if(applic==0) {applic=1};
$("select#TipoRuota").html(attendere);
$("select#TipoRuota").attr("disabled", "disabled");
$.post("select12.php", {id:applic,id2:comeR}, function(data){
$("select#TipoRuota").removeAttr("disabled");
$("select#TipoRuota").html(data);
});
});
$("select#comeRuota").change(function(){
var comeR = $("select#comeRuota option:selected").attr('value');
var applic = $("select#applicazione option:selected").attr('value');
// applicazione non scelto è di default Collettività
if(applic==0) {applic=1};
$("select#Portata").html(attendere);
$("select#Portata").attr("disabled", "disabled");
$.post("select14.php", {id:applic,id2:comeR}, function(data){
$("select#Portata").removeAttr("disabled");
$("select#Portata").html(data);
});
});
$("select#comeRuota").change(function(){
var comeR = $("select#comeRuota option:selected").attr('value');
var applic = $("select#applicazione option:selected").attr('value');
// applicazione non scelto è di default Collettività
if(applic==0) {applic=1};
$("select#SerieSupporti").html(attendere);
$("select#SerieSupporti").attr("disabled", "disabled");
$.post("select16.php", {id:applic,id2:comeR}, function(data){
$("select#SerieSupporti").removeAttr("disabled");
$("select#SerieSupporti").html(data);
});
});
$("select#comeRuota").change(function(){
var comeR = $("select#comeRuota option:selected").attr('value');
var ap = $("select#applicazione option:selected").attr('value');
// applicazione non scelto è di default Collettività
if(ap==0) {ap=1};
$.post("count.php", {id:ap,id2:comeR}, function(data){
$("#result").html(data);
});
});
$("select#applicazione").change(function(){
var ap = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
if (comeR==0){comeR=3};
$.post("count.php", {id:ap,id2:comeR}, function(data){
$("#result").html(data);
});
});
$("select#Diametro").change(function(){
var diam = $("select#Diametro option:selected").text();
var ap = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
// applicazione non scelto è di default Collettività
if(ap==0) {ap=1};
// comeruota non scelta è di default Ruota montata
if (comeR==0){comeR=3};
$.post("count2.php", {id:ap,id2:comeR,dmt:diam}, function(data){
$("#result").html(data);
});
});
$("select#TipoSupporto").change(function(){
var sup = $("select#TipoSupporto option:selected").text();
var diam = $("select#Diametro option:selected").text();
var ap = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
if(diam=='scegli...') {diam=""};
// applicazione non scelto è di default Collettività
if(ap==0) {ap=1};
// comeruota non scelta è di default Ruota montata
if (comeR==0){comeR=3};
$.post("count3.php", {id:ap,id2:comeR,dmt:diam,suppt:sup}, function(data){
$("#result").html(data);
});
});
$("select#TipoLamiera").change(function(){
var lam = $("select#TipoLamiera option:selected").text();
var sup = $("select#TipoSupporto option:selected").text();
var diam = $("select#Diametro option:selected").text();
var ap = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
if(diam=='scegli...') {diam=""};
if(sup=='scegli...') {sup=""};
// applicazione non scelto è di default Collettività
if(ap==0) {ap=1};
// comeruota non scelta è di default Ruota montata
if (comeR==0){comeR=3};
$.post("count4.php", {id:ap,id2:comeR,dmt:diam,suppt:sup,lamier:lam}, function(data){
$("#result").html(data);
});
});
$("select#volvenza").change(function(){
var volv = $("select#volvenza option:selected").text();
var lam = $("select#TipoLamiera option:selected").text();
var sup = $("select#TipoSupporto option:selected").text();
var diam = $("select#Diametro option:selected").text();
var ap = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
if(diam=='scegli...') {diam=""};
if(sup=='scegli...') {sup=""};
if(lam=='scegli...') {lam=""};
// applicazione non scelto è di default Collettività
if(ap==0) {ap=1};
// comeruota non scelta è di default Ruota montata
if (comeR==0){comeR=3};
$.post("count5.php", {id:ap,id2:comeR,dmt:diam,suppt:sup,lamier:lam,vol:volv}, function(data){
$("#result").html(data);
});
});
$("select#TipoRuota").change(function(){
var TipoR = $("select#TipoRuota option:selected").text();
var volv = $("select#volvenza option:selected").text();
var lam = $("select#TipoLamiera option:selected").text();
var sup = $("select#TipoSupporto option:selected").text();
var diam = $("select#Diametro option:selected").text();
var ap = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
if(diam=='scegli...') {diam=""};
if(sup=='scegli...') {sup=""};
if(lam=='scegli...') {lam=""};
if(volv=='scegli...') {volv=""};
// applicazione non scelto è di default Collettività
if(ap==0) {ap=1};
// comeruota non scelta è di default Ruota montata
if (comeR==0){comeR=3};
$.post("count6.php", {id:ap,id2:comeR,dmt:diam,suppt:sup,lamier:lam,vol:volv,Ruot:TipoR}, function(data){
$("#result").html(data);
});
});
$("select#Portata").change(function(){
var Port = $("select#Portata option:selected").text();
var TipoR = $("select#TipoRuota option:selected").text();
var volv = $("select#volvenza option:selected").text();
var lam = $("select#TipoLamiera option:selected").text();
var sup = $("select#TipoSupporto option:selected").text();
var diam = $("select#Diametro option:selected").text();
var ap = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
if(TipoR=='scegli...') {TipoR=""};
if(diam=='scegli...') {diam=""};
if(sup=='scegli...') {sup=""};
if(lam=='scegli...') {lam=""};
if(volv=='scegli...') {volv=""};
// applicazione non scelto è di default Collettività
if(ap==0) {ap=1};
// comeruota non scelta è di default Ruota montata
if (comeR==0){comeR=3};
$.post("count7.php", {id:ap,id2:comeR,dmt:diam,suppt:sup,lamier:lam,vol:volv,Ruot:TipoR,por:Port}, function(data){
$("#result").html(data);
});
});
$("select#SerieSupporti").change(function(){
var Series = $("select#SerieSupporti option:selected").text();
var Port = $("select#Portata option:selected").text();
var TipoR = $("select#TipoRuota option:selected").text();
var volv = $("select#volvenza option:selected").text();
var lam = $("select#TipoLamiera option:selected").text();
var sup = $("select#TipoSupporto option:selected").text();
var diam = $("select#Diametro option:selected").text();
var ap = $("select#applicazione option:selected").attr('value');
var comeR = $("select#comeRuota option:selected").attr('value');
if(Port=='scegli...') {Port=""};
if(TipoR=='scegli...') {TipoR=""};
if(diam=='scegli...') {diam=""};
if(sup=='scegli...') {sup=""};
if(lam=='scegli...') {lam=""};
if(volv=='scegli...') {volv=""};
// applicazione non scelto è di default Collettività
if(ap==0) {ap=1};
// comeruota non scelta è di default Ruota montata
if (comeR==0){comeR=3};
$.post("count8.php", {id:ap,id2:comeR,dmt:diam,suppt:sup,lamier:lam,vol:volv,Ruot:TipoR,por:Port,seriesup:Series}, function(data){
$("#result").html(data);
});
});
});
// cerca codice
function Cerca() {
var risp=window.prompt("Codice da cercare?","");
if(risp === null)
{ alert("non hai digitato nulla!"); }
else if (risp=="") { alert("non hai digitato nulla!"); }
else
{ window.location='cerca.php?cod='+risp; }
return "0"; }
</script>
</head>
<body>
<?php
include_once 'select.class.php';
$opt = new SelectList();
?>
<div class="contenitore_tabella">
<table width="900" border="0">
<form id="myForm" action="ruote_email.php" method="POST" >
<thead>
<tr>
<th ><div align="right">Scegli la ruota che preferisci</div><th>/ Choose your favourite castor
Nr. Record:<label id="result"> </div>
</th></th>
</tr>
</thead>
<tbody>
<!-- Ruota montata: -->
<!-- Combo -->
<tr>
<tr>
<td >
Applicazione/Application:
<select id="applicazione" name="applicazione">
<?php echo $opt->ShowApplicazioni(); ?>
</select>
</td>
<td >
Volvenza/Bearing:
<select id="volvenza" name="volvenza">
<option>Scegli...</option>
</select>
</td>
</tr>
<td >
<div >Come Ruota/How is the wheel?:
<select id="comeRuota" name="comeRuota">
<?php echo $opt->ShowComeRuota(); ?>
</select></div>
</td>
<td>
<div> Ruota/Wheel?:
<select id="TipoRuota" name="TipoRuota">
<option>Scegli...</option>
</select></div>
</td>
</tr>
<tr>
<td height="50">
Diametro/Diameter:
<select id="Diametro" name="Diametro">
<option>Scegli...</option>
</select>
</td>
<td height="50">
Portata/Carrying Capacity:
<select id="Portata" name="Portata">
<option>Scegli...</option>
</select>
</td>
</tr>
<tr>
<td height="50">
Supporto/Housing:
<select id="TipoSupporto" name="TipoSupporto">
<option>Scegli...</option>
</select>
</td>
<td >
<div >Serie Supporti/Housing Series:
<select id="SerieSupporti" name="SerieSupporti">
<option>Scegli...</option>
</select></div>
</td>
</tr>
<tr>
<td height="50">
Tipo Lamiera/Metal Sheet:
<select id="TipoLamiera" name="TipoLamiera">
<option>Scegli...</option>
</select>
</td>
<td height="50">
</td>
</tr>
<tr>
<td >
<div > Tipi Pavimenti/Which Floor?:
<select id="TipoPavimenti" name="TipoPavimenti">
<option>Scegli...</option>
</select></div>
</td>
<td height="50">
<div align="left"><input type="submit" value="Invia/Submit" /></div>
</td>
</tr>
</th>
</tbody>
</form>
<td ></td><td style="vertical-align:bottom; text-align:center; ">Ricerca per codice:
<?php include 'myinputbox.php'; ?>
</td>
<!-- Modal -->
<div class="modal" id="modal-one" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-header">
<h2>Non hai inserito il Codice</h2>
<a href="#" class="btn-close" aria-hidden="true">!</a>
</div>
<div class="modal-body">
<p>Codice non inserito!</p>
</div>
<div class="modal-footer">
<a href="#" class="btn">|||</a>
</div>
</div>
</div>
<!-- /Modal -->
</table>
<p> </p>
</div>
</body>
</html>
salto il php che include la classe prevista nel file select.php perché si tratta solo di un file di richiamo
file select.php:
PHP:
<?php
class SelectList
{
function ContaNrRec ($res)
{
$num = mysql_num_rows($res);
return $num;
}
public function CalcolaNrRcAp ()
{
//$qry="Select cercaruota.trovaruota.codice From cercaruota.trovaruota Where cercaruota.trovaruota.industriale =";
$qry="Select count(*) From cercaruota.trovaruota Where cercaruota.trovaruota.industriale =";
// 2, nella tabela applicazione del db Form, significa Industria, 1 significa Collettività, 0 che vuol dire non scelto
// è Collettività per default per cui diverso da 2.
if ($_POST['id']<>2)
{
$qry=$qry."0";
}
if ($_POST['id']==2)
{
$qry=$qry."1";
}
switch ($_POST['id2']) {
case 0:
case 3:
// case 0: nessuna scelta per cui default ruota montata - $qry non cambia
// case 3: ruota montata per cui $qry non cambia
break;
case 2:
$qry=$qry." And cercaruota.trovaruota.tiporuotaid = 13";
// case 2: solo supporto $qry + tiporuota = 13 che vuol dire nessuna ruota
break;
case 1:
$qry=$qry." And cercaruota.trovaruota.tiposupportoid = 16";
// case 3: solo ruota $qry + tiposupportoid = 16 che vuol dire nessun supporto
break;
}
$nuovaqry="";
if (!empty($_POST['dmt']) && $_POST['dmt']<>'scegli...' )
{
//Select cercaruota.trovaruota.codice From cercaruota.trovaruota Where cercaruota.trovaruota.industriale =
$divisoxspazio = explode(" ", $qry);
// numero parole divise per spazio nella stringa (nr indici nell'array)
$nrArr=count($divisoxspazio);
//Select cercaruota.trovaruota.codice From cercaruota.trovaruota
$nuovaqry=$divisoxspazio[0]." ".$divisoxspazio[1]." ".$divisoxspazio[2]." ".$divisoxspazio[3];
$nuovaqry=$nuovaqry." Inner Join diametro On trovaruota.diametroid = diametro.iddiametro";
for( $i=4; $i<$nrArr; $i++ )
{
$nuovaqry=$nuovaqry." ".$divisoxspazio[$i];
}
// campo diametrocerca = al campo diametro di cercaruota trovo diametrocerca
$queryform="Select distinct diametro.diametrocerca From diametro Where diametro.diametro = '".$_POST['dmt']."'";
$rit=$this->connDatabase($queryform);
$dataset = array();
while($row = mysql_fetch_assoc($rit, MYSQL_NUM))
{
$dataset[] = $row;
}
// $dataset[0][0] è contenuto diametrocerca
$nuovaqry=$nuovaqry." And diametro.diametro = '".$dataset[0][0]."'";
// quando ho creato query per tabelle correlate passo il valore della $nuovaquery a $qry
$qry=$nuovaqry;
}
$nuovaqry="";
if (!empty($_POST['suppt']) && $_POST['suppt']<>'scegli...')
{
// rendi minuscola la query
$nuovaqry=strtolower($qry);
$doveWhere=strpos($nuovaqry, "where");
// query fino a prima di Where
$str=substr($nuovaqry,0,$doveWhere);
// aggiungo Inner Join
$str=$str."Inner Join cercaruota.tiposupporto On cercaruota.trovaruota.tiposupportoid = cercaruota.tiposupporto.idtiposupporto ";
// aggiungo l'ultima parte
$str=$str.substr($nuovaqry,$doveWhere);
// campo diametrocerca = al campo diametro di cercaruota trovo diametrocerca
$queryform="Select distinct supporto.supportocerca From supporto Where supporto.supporto ='".$_POST['suppt']."'";
$rit=$this->connDatabase($queryform);
$dataset = array();
while($row = mysql_fetch_assoc($rit, MYSQL_NUM))
{
$dataset[] = $row;
}
$str=$str." And cercaruota.tiposupporto.tiposupporto = '";
$str=$str.$dataset[0][0]."'";
$qry=$str;
}
$nuovaqry="";
if (!empty($_POST['lamier']) && $_POST['lamier']<>'scegli...')
{
// rendi minuscola la query
$nuovaqry=strtolower($qry);
$doveWhere=strpos($nuovaqry, "where");
// query fino a prima di Where
$str=substr($nuovaqry,0,$doveWhere);
// aggiungo Inner Join
$str=$str."Inner Join cercaruota.tipolamiera On cercaruota.trovaruota.tipolamieraid = cercaruota.tipolamiera.idtipolamiera ";
// aggiungo l'ultima parte
$str=$str.substr($nuovaqry,$doveWhere);
// campo diametrocerca = al campo diametro di cercaruota trovo diametrocerca
$queryform="Select Distinct form.lamiera.lamieracerca From form.lamiera Where form.lamiera.lamiera = '".trim($_POST['lamier'])."'";
$rit=$this->connDatabase($queryform);
$dataset = array();
while($row = mysql_fetch_assoc($rit, MYSQL_NUM))
{
$dataset[] = $row;
}
$str=$str." And cercaruota.tipolamiera.tipolamiera = '";
// check se $dataset non è null
if (!empty($dataset)) {$str=$str.$dataset[0][0]."'";} else {$str=$str." '";}
$qry=$str;
}
$nuovaqry="";
if (!empty($_POST['vol']) && $_POST['vol']<>'scegli...')
{
// rendi minuscola la query
$nuovaqry=strtolower($qry);
$doveWhere=strpos($nuovaqry, "where");
// query fino a prima di Where
$str=substr($nuovaqry,0,$doveWhere);
// aggiungo Inner Join
$str=$str."Inner Join cercaruota.volvenza On cercaruota.trovaruota.volvenzaid = cercaruota.volvenza.idvolvenza ";
// aggiungo l'ultima parte
$str=$str.substr($nuovaqry,$doveWhere);
// campo volvenzacerca = al campo volvenza di cercaruota trovo volvenzacerca
$queryform="Select distinct form.volvenza.volvenzacerca From form.volvenza Where form.volvenza.volvenza = '".$_POST['vol']."'";
$rit=$this->connDatabase($queryform);
$dataset = array();
while($row = mysql_fetch_assoc($rit, MYSQL_NUM))
{
$dataset[] = $row;
}
$str=$str." And cercaruota.volvenza.volvenza = '";
$str=$str.$dataset[0][0]."'";
$qry=$str;
}
$nuovaqry="";
if (!empty($_POST['Ruot']) && $_POST['Ruot']<>'scegli...')
{
// rendi minuscola la query
$nuovaqry=strtolower($qry);
$doveWhere=strpos($nuovaqry, "where");
// query fino a prima di Where
$str=substr($nuovaqry,0,$doveWhere);
// aggiungo Inner Join
$str=$str."Inner Join cercaruota.tiporuota On cercaruota.trovaruota.tiporuotaid = cercaruota.tiporuota.idtiporuota ";
// aggiungo l'ultima parte
$str=$str.substr($nuovaqry,$doveWhere);
// campo volvenzacerca = al campo volvenza di cercaruota trovo volvenzacerca
$queryform="Select distinct tiporuota.tiporuotacerca From tiporuota Where tiporuota.tiporuota = '".$_POST['Ruot']."'";
$rit=$this->connDatabase($queryform);
$dataset = array();
while($row = mysql_fetch_assoc($rit, MYSQL_NUM))
{
$dataset[] = $row;
}
$str=$str." And cercaruota.tiporuota.tiporuota = '";
$str=$str.$dataset[0][0]."'";
$qry=$str;
}
$nuovaqry="";
if (!empty($_POST['por']) && $_POST['por']<>'scegli...')
{
// rendi minuscola la query
$nuovaqry=strtolower($qry);
$doveWhere=strpos($nuovaqry, "where");
// query fino a prima di Where
$str=substr($nuovaqry,0,$doveWhere);
// aggiungo Inner Join
$str=$str."Inner Join cercaruota.portata On cercaruota.trovaruota.portataid = cercaruota.portata.idportata ";
// aggiungo l'ultima parte
$str=$str.substr($nuovaqry,$doveWhere);
// campo portatacerca = al campo portata di cercaruota trovo portatacerca
$queryform="Select distinct portata.portatacerca From portata Where portata.portata = '".$_POST['por']."'";
$rit=$this->connDatabase($queryform);
$dataset = array();
while($row = mysql_fetch_assoc($rit, MYSQL_NUM))
{
$dataset[] = $row;
}
$str=$str." And cercaruota.portata.portata ='";
$str=$str.$dataset[0][0]."'";
$qry=$str;
}
$nuovaqry="";
if (!empty($_POST['seriesup']) && $_POST['seriesup']<>'scegli...')
{
// rendi minuscola la query
$nuovaqry=strtolower($qry);
$doveWhere=strpos($nuovaqry, "where");
// query fino a prima di Where
$str=substr($nuovaqry,0,$doveWhere);
// aggiungo Inner Join
$str=$str."Inner Join cercaruota.seriesupporti On cercaruota.trovaruota.seriesupportiid = cercaruota.seriesupporti.idseriesupporti ";
// aggiungo l'ultima parte
$str=$str.substr($nuovaqry,$doveWhere);
// campo portatacerca = al campo portata di cercaruota trovo portatacerca
$queryform="Select distinct form.seriesupporti.seriesupporticerca From form.seriesupporti Where form.seriesupporti.seriesupporti = '".$_POST['seriesup']."'";
$rit=$this->connDatabase($queryform);
$dataset = array();
while($row = mysql_fetch_assoc($rit, MYSQL_NUM))
{
$dataset[] = $row;
}
$str=$str." And cercaruota.seriesupporti.seriesupporti = '";
$str=$str.$dataset[0][0]."'";
$qry=$str;
}
$rit= $this->connDatabase($qry,false);
$dataset = array();
while($row = mysql_fetch_assoc($rit, MYSQL_NUM))
{
$dataset[] = $row;
}
return $dataset[0][0];
//$nrRec= $this ->ContaNrRec($rit);
//return $nrRec;
}
function connDatabase($query, $opt=true) {
if($opt) { include "db_config.php"; }
if(!$opt) { include "dbcerca_config.php"; }
$link = mysql_connect($host, $user, $password);
if (!$link)
{
die('connessione a Mysql non riuscita!: ' . mysql_error());
}
else
{
//connessione a database
$db_selected =mysql_select_db($db,$link);
if (!$db_selected)
{
die('connessione al database non riuscita!: ' . mysql_error());
}
//qui viene passata la query
else {
// passa query
$result = mysql_query($query,$link) or die(mysql_error()." ".$query);
//return $result;
return $result;
mysql_close($link);
}
}
}
public function ShowApplicazioni()
{
$sql = "Select * From applicazione";
$res = $this->connDatabase($sql);
$applicazioni = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$applicazioni .= '<option value="' . $row['idapplicazione'] . '">' . utf8_encode($row['applicazione']) . '</option>';
}
return $applicazioni;
}
public function ShowComeRuota()
{
$sql = "Select * From comeruota";
$res = $this->connDatabase($sql);
$comeruota = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$comeruota .= '<option value="' . $row['idcomeruota'] . '">' . utf8_encode($row['comeruota']) . '</option>';
}
return $comeruota;
}
public function ShowDiametro()
{
$sql = "Select diametro.iddiametro, diametro.diametro From diametro Where diametro.applicazioneid =".$_POST['id'];
$sql = $sql." And diametro.comeruotaid =".$_POST['id2'];
$res = $this->connDatabase($sql);
$diametro = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$diametro .= '<option value="' . $row['iddiametro'] . '">' . utf8_encode($row['diametro']) . '</option>';
}
return $diametro;
}
public function ShowSupporto()
{
$sql = "SELECT supporto.idsup, supporto.supporto FROM supporto WHERE supporto.applicazioneid=".$_POST['id'];
$sql = $sql." And supporto.comeruotaid =".$_POST['id2'];
$res = $this->connDatabase($sql);
$sup = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$sup .= '<option value="' . $row['idsup'] . '">' . utf8_encode($row['supporto']) . '</option>';
}
return $sup;
}
public function ShowLamiera()
{
$sql = "SELECT lamiera.idlamiera, lamiera.lamiera FROM lamiera WHERE lamiera.applicazioneid=".$_POST['id'];
$sql = $sql." And lamiera.comeruotaid =".$_POST['id2'];
$res = $this->connDatabase($sql);
$lam = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$lam .= '<option value="' . $row['idlamiera'] . '"> ' . utf8_encode($row['lamiera']) . ' </option>';
}
return $lam;
}
public function ShowPavimenti()
{
$sql = "Select tipipavimenti.idtipipav, tipipavimenti.tipipavimenti From tipipavimenti Where tipipavimenti.applicazioneid=".$_POST['id'];
$sql = $sql." And tipipavimenti.comeruotaid =".$_POST['id2'];
$res = $this->connDatabase($sql);
$pav = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$pav .= '<option value="' . $row['idtipipav'] . '">' . utf8_encode($row['tipipavimenti']) . '</option>';
}
return $pav;
}
public function ShowVolvenza()
{
$sql = "Select form.volvenza.idvolvenza, form.volvenza.volvenza From form.volvenza Where form.volvenza.applicazioneid = ".$_POST['id'];
$sql = $sql." And form.volvenza.comeruotaid = ".$_POST['id2'];
$res = $this->connDatabase($sql);
$volven = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$volven .= '<option value="' . $row['idvolvenza'] . '">' . utf8_encode($row['volvenza']) . '</option>';
}
return $volven;
}
public function ShowRuota()
{
$sql = "Select tiporuota.idtiporuota, tiporuota.tiporuota From tiporuota Where tiporuota.applicazioneid =".$_POST['id'];
$sql = $sql." And tiporuota.comeruotaid =".$_POST['id2'];
$res = $this->connDatabase($sql);
$ruot = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$ruot .= '<option value="' . $row['idtiporuota'] . '">' . utf8_encode($row['tiporuota']) . '</option>';
}
return $ruot;
}
public function ShowPortata()
{
$sql = "Select form.portata.idportata, form.portata.portata From form.portata Where form.portata.applicazioneid =".$_POST['id'];
$sql = $sql." And form.portata.comeruotaid =".$_POST['id2'];
$res = $this->connDatabase($sql);
$port = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$port .= '<option value="' . $row['idportata'] . '">' . utf8_encode($row['portata']) . '</option>';
}
return $port;
}
public function ShowSerieSup()
{
$sql = "Select form.seriesupporti.idseriesupporti, form.seriesupporti.seriesupporti From form.seriesupporti Where form.seriesupporti.applicazioneid =".$_POST['id'];
$sql = $sql." And form.seriesupporti.comeruotaid =".$_POST['id2'];
$res = $this->connDatabase($sql);
$series = '<option value="0">scegli...</option>';
while($row = mysql_fetch_array($res))
{
$series .= '<option value="' . $row['idseriesupporti'] . '">' . utf8_encode($row['seriesupporti']) . '</option>';
}
return $series;
}
}
?>
Tutto dovrebbe funzionare bene, come si può vedere in http://www.cebora.it/ruote/pp1/cercaruota.php ma vorrei abbattere ulteriormente i tempi di interrogazione del database soprattutto della Query Select count(*) quando lanciata da i primi due combo ComeRuota e Applicazione.
Posso anche postare il file sql relativo al database se necessario.
Grazie per qualsiasi consiglio.