- Home
- Categorie
- Coding e Sistemistica
- PHP
- sito dinamico
-
Io ho il codice seguente che si chiama racc_dati.php ed ha il compito di stamparmi a video tutte le domande che troba nel database che corrispondono ad un id data dalla variabile "matt" scelta dall'utente precedentemente ed inoltre riconosce la tipologia della risposta della domanda tramite la variabile $t_q anchessa presente in un campo della medesima tabella delle domande.
Ora io devo creare il file fatto.php che presenta il codice di registrazione delle informazioni immesse dall'utente e che controlli l'avvenuta o fallita registrazione.[HTML]
<link href="stile.css" rel="stylesheet" type="text/css" />
<?php
include ("config.php");
include ("basetop.php");
?><div class="box_top"><br/> <div class="box_top_botton"> <?php $servizio=$_REQUEST['servizio']; $area=$_REQUEST['area']; $aop=$_REQUEST['aop']; $aop_s=$_REQUEST['aop_s']; $sotta=$_REQUEST['sotta']; $sotta_s=$_REQUEST['sotta_s']; $matt=$_REQUEST['matt']; $matt_s=$_REQUEST['matt_s']; ?> <a href="index.php" title="Servizi" style='color: #990000'> <b>Servizi</b> </a><b>></b> <a href="aree.php?servizio=<?php echo"$servizio";?>" title="Aree" style='color:'> <b>Aree di <?php echo"$servizio";?></b> </a><b>></b> <a href="aop.php?servizio=<?php echo"$servizio";?>&area=<?php echo"$area";?>" title="Ambito Operativo" style='color:'> <b>Ambiti Operativi di <?php echo"$area";?></b> </a><b>></b> <a href="sotta.php?servizio=<?php echo"$servizio";?>&area=<?php echo"$area";?>&aop=<?php echo"$aop";?>&aop_s=<?php echo"$aop_s";?>" title="Sottoambito Operativo" style='color:'> <b>Sottoambiti Operativi di <?php echo"$aop_s";?></b> </a><b>></b> <a href="matt.php?servizio=<?php echo"$servizio";?>&area=<?php echo"$area";?>&aop=<?php echo"$aop";?>&aop_s=<?php echo"$aop_s";?>&sotta=<?php echo"$sotta";?>&sotta_s=<?php echo"$sotta_s";?>" title="Macro Attività" style='color:'> <b>Macro Attività di <?php echo"$sotta_s";?></b> </a> </div> <div class="box_top_title"> <b>Raccolta dati di <?php echo "$matt_s";?></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"> <div class="box_select_attivity"> <?php $sql="SELECT * FROM t_questions WHERE ID_M_ATT='".$_REQUEST['matt']."'"; $result_mssql=@mssql_query($sql,$link); if(!$result_mssql) { exit('<p>Errore! Non sono presenti tabelle di raccolta dati nel database!<br/>' . 'Error: ' . mssql_error() . '</p>'); } echo "<table width='600' border='0' cellspacing='0' cellpadding='0'> <tr> <td> <form action='fatto.php' method='post'> <input type='hidden' name='matt' value='$matt'/> <input type='hidden' name='matt_s' value='$matt_s'/> Seleziona la Banca : <select size='1' name='banca'> <option value=''></option> <option value='tutte'>Tutte le Banche</option> <option value=''></option> <option value='firenze'>Firenze</option> <option value='pistoia'>Pistoia</option> <option value='la_spezia'>La Spezia</option> <option value='civitavecchia'>Civitavecchia</option> <option value='orvieto'>Orvieto</option> <option value=''></option> <option value='no_firenze'>Pt,Sp,Cv,Or</option> <option value=''></option> <option value='infogroup'>Infogroup</option> </select> </td> </tr>"; while($result=mssql_fetch_array($result_mssql)){ $d_q = $result ["D_Q"]; $t_q = $result ["T_Q"]; $val = $result ["VAL"]; //echo "<br/>$val $t_q $d_q"; if($t_q=="si_no"){ echo "<tr> <td><br/>$d_q</td> </tr> <tr> <td> Si/No: <select size='1' name='$val'> <option value=''></option> <option value='si'>Si</option> <option value='no'>No</option> </select> $val </td> </tr>"; } if($t_q=="testo"){ include ("only_text.jsp"); echo "<tr> <td><br/>$d_q</td> </tr> <tr> <td> Testo: <input type='text' name='$val' onkeyup='verify_num(this);'/> $val </td> </tr>"; } if($t_q=="numero"){ include ("only_num.jsp"); echo "<tr> <td><br/>$d_q</td> </tr> <tr> <td> Numero: <input type='text' name='$val' onkeyup='verify_num(this);'/> </td> </tr>"; } if($t_q=="data"){ echo "<tr> <td><br/>$d_q</td> </tr> <tr> <td> Data: <input type='text' name='$val' size='10'> $val </td> </tr>"; } } echo " <tr> <td> <br/> <input type='submit' value='Registra'/> </form> </td> </tr> </table><br/>"; mssql_close($link); ?> </div>
<?php
include ("basebottom.php");
?>[/HTML]
Per farti un esempio pratico, ho a video da questo codice una cosa del genere:
Seleziona la Banca : Tutte le Banche Firenze Pistoia La Spezia Civitavecchia Orvieto Pt,Sp,Cv,Or Infogroup
Sollecito Validazione dall'area Conti Correnti? Si/No: Si No VAL1
Se SI annota la causa Testo: VAL2
Validazione effettuata entro i termini? Si/No: Si No VAL3
Se NO annota la causa Testo: VAL4
Blocco del batch? Si/No: Si No VAL5
Se SI annota la causa Testo: VAL6dove c'è il campo Banca, le domande e le risposte alle domande di diversa tipologia es SI/NO, TESTO, NUMERO,...
ORA quindi il mio file fatto.php tramite questo codice che non è altro una forma adattata al tuo consiglio
[HTML]
$data=date("dmY");
$query = "INSERT INTO (DATA, BANCA";foreach($_POST as $nome => $valore ) { $query .= ", $nome"; } $query .= ")VALUES($data "; foreach($_POST as $nome => $valore ) { $query .= ", $valore"; } $query .= ");"; echo "$query"; $query = substr($query,3,strlen($valore)-1);
[/HTML]
mi stampa a video questa queryINSERT INTO (DATA, BANCA, matt, matt_s, banca, VAL1, VAL2, VAL3, VAL4, VAL5, VAL6)VALUES(13012008 , 6, Valid, firenze, no, , si, ad, no, );
dove gli errori sono che il nome della tabella a cui deve puntare la query è "tdi_Valid" dove Valid è il terzo valore dei parametri immessi in VALUES;
poi nei nomi dei campi non voglio stampare "matt, matt_s, banca," mentre nei campi VALUES non ci devono essere " 6, Valid, firenze," .Adesso che spero di averti dato una visione di insieme più dettagliata mi sai dare un altro buon consiglio visto che mi sembri molto più in gamba di me???
Lo so che sembra una sviolinata ma come diavolo hai fatto a capire il mio problema a prima botta?????;)
-
a questo punto, metterei in una var, di sessione o come post, la listadelle domande che hai utilizzato, esploderli dopo e fare un ciclo su quelli!
-
Bene sono riuscito a risolvere il mio problema così
avevo il file racc_dati.php
[HTML]
<link href="stile.css" rel="stylesheet" type="text/css" />
<?php
include ("config.php");
include ("basetop.php");
?>
<div class="box_top"><br/>
<div class="box_top_botton">
<?php
$servizio=$_REQUEST['servizio'];
$area=$_REQUEST['area'];
$aop=$_REQUEST['aop'];
$aop_s=$_REQUEST['aop_s'];
$sotta=$_REQUEST['sotta'];
$sotta_s=$_REQUEST['sotta_s'];
$matt=$_REQUEST['matt'];
$matt_s=$_REQUEST['matt_s'];
?>
<a href="index.php" title="Servizi" style='color: #990000'> <b>Servizi</b> </a><b>></b>
<a href="aree.php?servizio=<?php echo"$servizio";?>" title="Aree" style='color:'> <b>Aree di <?php echo"$servizio";?></b> </a><b>></b>
<a href="aop.php?servizio=<?php echo"$servizio";?>&area=<?php echo"$area";?>" title="Ambito Operativo" style='color:'> <b>Ambiti Operativi di <?php echo"$area";?></b> </a><b>></b>
<a href="sotta.php?servizio=<?php echo"$servizio";?>&area=<?php echo"$area";?>&aop=<?php echo"$aop";?>&aop_s=<?php echo"$aop_s";?>" title="Sottoambito Operativo" style='color:'> <b>Sottoambiti Operativi di <?php echo"$aop_s";?></b> </a><b>></b>
<a href="matt.php?servizio=<?php echo"$servizio";?>&area=<?php echo"$area";?>&aop=<?php echo"$aop";?>&aop_s=<?php echo"$aop_s";?>&sotta=<?php echo"$sotta";?>&sotta_s=<?php echo"$sotta_s";?>" title="Macro Attività" style='color:'> <b>Macro Attività di <?php echo"$sotta_s";?></b> </a></div>
<div class="box_top_title">
<b>Raccolta dati di <?php echo "$matt_s";?></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">
<div class="box_select_attivity">
<?php$sql="SELECT * FROM t_questions WHERE ID_M_ATT='".$_REQUEST['matt']."'"; $result_mssql=@mssql_query($sql,$link); if(!$result_mssql) { exit('<p>Errore! Non sono presenti tabelle di raccolta dati nel database!<br/>' . 'Error: ' . mssql_error() . '</p>'); } echo "<table width='600' border='0' cellspacing='0' cellpadding='0'> <tr> <td> <form action='fatto.php' method='post'> <input type='hidden' name='servizio' value='$servizio'/> <input type='hidden' name='area' value='$area'/> <input type='hidden' name='aop' value='$aop'/> <input type='hidden' name='aop_s' value='$aop_s'/> <input type='hidden' name='sotta' value='$sotta'/> <input type='hidden' name='sotta_s' value='$sotta_s'/> <input type='hidden' name='matt' value='$matt'/> <input type='hidden' name='matt_s' value='$matt_s'/> Seleziona la Banca : <select size='1' name='banca'> <option value=''></option> <option value='tutte'>Tutte le Banche</option> <option value=''></option> <option value='firenze'>Firenze</option> <option value='pistoia'>Pistoia</option> <option value='la_spezia'>La Spezia</option> <option value='civitavecchia'>Civitavecchia</option> <option value='orvieto'>Orvieto</option> <option value=''></option> <option value='no_firenze'>Pt,Sp,Cv,Or</option> <option value=''></option> <option value='infogroup'>Infogroup</option> </select> </td> </tr>"; while($result=mssql_fetch_array($result_mssql)){ $d_q = $result ["D_Q"]; $t_q = $result ["T_Q"]; $val = $result ["VAL"]; //echo "<br/>$val $t_q $d_q"; if($t_q=="si_no"){ echo "<tr> <td><br/>$d_q</td> </tr> <tr> <td> Si/No: <select size='1' name='$val'> <option value=''></option> <option value='si'>Si</option> <option value='no'>No</option> </select> $val </td> </tr>"; } if($t_q=="testo"){ include ("only_text.jsp"); echo "<tr> <td><br/>$d_q</td> </tr> <tr> <td> Testo: <input type='text' name='$val' onkeyup='verify_num(this);'/> $val </td> </tr>"; } if($t_q=="numero"){ include ("only_num.jsp"); echo "<tr> <td><br/>$d_q</td> </tr> <tr> <td> Numero: <input type='text' name='$val' onkeyup='verify_num(this);'/> </td> </tr>"; } if($t_q=="data"){ echo "<tr> <td><br/>$d_q</td> </tr> <tr> <td> Data: <input type='text' name='$val' size='10'> $val </td> </tr>"; } } echo " <tr> <td> <br/> <input type='submit' value='Registra'/> </form> </td> </tr> </table><br/>"; mssql_close($link); ?> </div>
<?php
include ("basebottom.php");
?>
[/HTML]mentre il mio file fatto.php che registra i dati sul db è così strutturato
[HTML]
<link href="stile.css" rel="stylesheet" type="text/css" />
<?php
include ("config.php");
include ("basetop.php");
?>
<div class="box_top"><br/>
<div class="box_top_botton">
<?php
$servizio=$_REQUEST['servizio'];
$area=$_REQUEST['area'];
$aop=$_REQUEST['aop'];
$aop_s=$_REQUEST['aop_s'];
$sotta=$_REQUEST['sotta'];
$sotta_s=$_REQUEST['sotta_s'];
$matt=$_REQUEST['matt'];
$matt_s=$_REQUEST['matt_s'];
?>
<a href="index.php" title="Servizi" style='color:'> <b>Servizi</b> </a><b>></b>
<a href="aree.php?servizio=<?php echo"$servizio";?>" title="Aree" style='color:'> <b>Aree di <?php echo"$servizio";?></b> </a><b>></b>
<a href="aop.php?servizio=<?php echo"$servizio";?>&area=<?php echo"$area";?>" title="Ambito Operativo" style='color:'> <b>Ambiti Operativi di <?php echo"$area";?></b> </a><b>></b>
<a href="sotta.php?servizio=<?php echo"$servizio";?>&area=<?php echo"$area";?>&aop=<?php echo"$aop";?>&aop_s=<?php echo"$aop_s";?>" title="Sottoambito Operativo" style='color:'> <b>Sottoambiti Operativi di <?php echo"$aop_s";?></b> </a><b>></b>
<a href="matt.php?servizio=<?php echo"$servizio";?>&area=<?php echo"$area";?>&aop=<?php echo"$aop";?>&aop_s=<?php echo"$aop_s";?>&sotta=<?php echo"$sotta";?>&sotta_s=<?php echo"$sotta_s";?>" title="Macro Attività" style='color:'> <b>Macro Attività di <?php echo"$sotta_s";?></b> </a></div>
<div class="box_top_title">
<b>Controllo Dati</b>
</div>
<div class="box_top_login">
<a href="login_page.php" title="Amministrazione" style='color:; margin-right:10px;'> <b>Amministrazione</b></a>
</div>
</div>
<div class="box_select">
<div class="box_select_title">
<div class="box_select_attivity"><?php $data=date("dmY"); $query_ins = "INSERT INTO tdi_".$_REQUEST['matt_s']." (DATA,BANCA"; foreach($_POST as $nome => $valore ) { $val .= ",$nome"; } $query_ins.= substr("$val",strpos("$val",",VAL1")); $query_ins.= ")VALUES('$data','"; foreach($_POST as $nome => $valore ) { $val_camp .= ",'$valore'"; } $query_ins.= substr("$val_camp",strpos("$val_camp",$_REQUEST['banca'])); $query_ins.= ");"; //echo "$query_ins"; if(@mssql_query($query_ins)) { echo "<p>Il tuo dato è stato inserito correttamente.</p>"; }else { echo "<p>Il tuo dato NON è stato inserito correttamente: </p>"; } mssql_close($link); ?> </div>
<?php
include ("basebottom.php");
?>
[/HTML]ora il mio nuovo quesito è perchè i dati passati come "hidden" nel form presente in racc_dati.php non li riesco a stampare a video per ricrearmi i link di discesa nel sito?
Per capirci meglio perchè le variabili $area, $aop,$sotta e cosi via non mi li scrive nei link ed aggiungo inoltre che fino ad ora tali parametri me li sono sempre portati dietro durante la navigazione ma me li sono sempre passati tramite URL!!!:bho:
-
Ora ho risolto anche questo mio ultimo problema
-
scusate ma vorrei una informazione generale.
Ma perche se in un file vengono richiamate più file in JSP questi codici poi smettono di funzionare oppure funzionano un po' a modo loro??????
Per capirci meglio se all'interno del file io ho include(cod1.jsp) e include(cod2.jsp) uno dei due smette di funzionare bene??????
-
Bene ragazzi chi vuole partecipare al nuovo quiz????
devo fare una pagina di report che prende i dati dal database e mi scriva una tabella (es. fatto/non fatto) e che abbia come titolo delle colonne un calendario mensile o meglio con un range temporale stabilito dall'utente.
Per capirci graficamente dovrebbe essere:
| Range scelto dall'utente | |-------------------------| |1 |2 |3 |.............|31| |lun|mar|mer|.............|lun|
Campo estratto dal db| V | V | X |.............| V |
Campo estratto dal db| X | V | X |.............| X |
Dove V = fatto e X = nonn fatto
Io riesco a estrapolare i dati ma non riesco a creare la tabella con il calendario.
CHI mi sa aiutare?????:?:?:?:?:?
-
scusate si era formattato male
@@@@@@@@@@@| Range scelto dall'utente |
@@@@@@@@@@@|-------------------------|
@@@@@@@@@@@|1 |2 |3 |.............|31|
@@@@@@@@@@@|lun|mar|mer|.............|lun|Campo estratto dal db| V | V | X |.............| V |
Campo estratto dal db| X | V | X |.............| X |
-
:?credo che se ci fai un esempio di cosa tiri fuori dalla tabella del database sia meglio, ovvero, che campi tiri fuori??
-
Allora i dati estratti dal db sono voci divisi in tre colonne + il calendario del fatto/non fatto:
-la 1° colonna rigurda gli AMBITI
-la 2° colonna rigurda gli SOTTOAMBITI
-la 3° colonna rigurda gli MACROATTIVITA'
-ed infine il CALENDARIO.I dati gli ho estratti bene con una mega query però il mio problema riguarda il calendario perchè io volevo creare una pagina di report dove l'utente sceglieva tramite un form l'intervallo di tempo di suo interesse ed il report mi dovrebbe mostrare le prime tre colonne sopra citate e poi questo diavolo di calendario che mostra l'intervallo scelto su una sola riga indicante il giorno (es lun 3) e i valori immessi dentro questo calendario sono V=fatto e X=non fatto dove anche questi dati sono estrapolati dal db.
GRAFICAMENTE DOVREBBE ESSERE COSI':
AMBITO|SOTTOAMBITO|MACROATTIVITA|CALENDARIO|
precisamente il calendario dovrebbe essere così:
se l'utente scegliesse 10-01-2008 e 15-01-2008 visivamente vorrei ottenere una cosa del genere
@@@@@@@@@@Gennaio@@@@@@@@@@
Gio 10|Ven 11|Sab 12|Dom 13|Lun 14|Mar 15|
@@@@@@@@@@@@@@@@@@@@@@@@
V | X | X | X | V | V |
@@@@@@@@@@@@@@@@@@@@@@@@spero che ora mi sia spiegato meglio.
Mi sai dare una bella dritta???
-
O mi sfugge cosa tu intenda per calendario (cosa che non escludo) o credo di aver capito che la tua tabella su Db abbia i seguenti campi:
campi tabella:Ambito - Sottoambito - macroattività - campodata - spuntaè così?
-
questo primo codice report_between.php permette di immettere le due date dell'intervallo di tempo preso in questione ed inoltre è presente un calendario in php di pura illustrazione
[HTML]
<link href="stile.css" rel="stylesheet" type="text/css" />
<?php
include ("config.php");
include ("basetop.php");
?><div class="box_top"><br/> <div class="box_top_botton"> <?php $servizio=$_REQUEST['servizio']; $area=$_REQUEST['area']; $aop=$_REQUEST['aop']; $aop_s=$_REQUEST['aop_s']; $sotta=$_REQUEST['sotta']; $sotta_s=$_REQUEST['sotta_s']; $matt=$_REQUEST['matt']; $matt_s=$_REQUEST['matt_s']; $data=$_REQUEST['data']; ?> <!--<a href="index.php" title="Servizi" style='color: #990000'> Servizi </a>> <a href="aree.php?servizio=<?php echo"$servizio";?>" title="Aree" style='color:'> Aree di <?php echo"$servizio";?> </a>> <a href="aop.php?servizio=<?php echo"$servizio";?>&area=<?php echo"$area";?>" title="Ambito Operativo" style='color:'> Ambiti Operativi di <?php echo"$area";?> </a>> <a href="sotta.php?servizio=<?php echo"$servizio";?>&area=<?php echo"$area";?>&aop=<?php echo"$aop";?>&aop_s=<?php echo"$aop_s";?>" title="Sottoambito Operativo" style='color:'> Sottoambiti Operativi di <?php echo"$aop_s";?> </a>> <a href="matt.php?servizio=<?php echo"$servizio";?>&area=<?php echo"$area";?>&aop=<?php echo"$aop";?>&aop_s=<?php echo"$aop_s";?>&sotta=<?php echo"$sotta";?>&sotta_s=<?php echo"$sotta_s";?>" title="Macro Attività" style='color:'> Macro Attività di <?php echo"$sotta_s";?> </a>--> </div> <div class="box_top_title"> <b>Scelta date</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"> <div class="box_select_attivity"> <form action="result_report_between.php" method="post"> <b>Intervallo data:</b><br/><br/><br/> <table> <tr> <td></td> <td><b>GG</b></td> <td><b>MM</b></td> <td><b>AAAA</b></td> </tr> <tr> <td>data inizio</td> <td><input type="text" name="d1" size=2 maxlength=2 value="<? echo $d1?>"></td> <td><input type="text" name="m1" size=2 maxlength=2 value="<? echo $m1;?>"></td> <td><input type="text" name="y1" size=4 maxlength=4 value="<? echo $y1;?>"></td> </tr> <tr> <td>data fine</td> <td><input type="text" name="d2" size=2 maxlength=2 value="<? echo $d2?>"></td> <td><input type="text" name="m2" size=2 maxlength=2 value="<? echo $m2;?>"></td> <td><input type="text" name="y2" size=4 maxlength=4 value="<? echo $y2;?>"></td> </tr> </table> <br/><br/><input type="submit" value="Invia"> </form> <div class="box_select_calendar"> <?php function calendario($mese,$anno){
global $_GET;
if ($GET['x'] == NULL){
$mese = $mese;
$anno_ = $anno;
}
else{
$mese_ = (int)strftime( "%m" ,(int)$GET['x']);
$anno = (int)strftime( "%Y" ,(int)$GET['x']);
$mese = $mese;
$anno = $anno_;
}$prev = mktime(0, 0, 0, $mese_ -1, 1, $anno_);
$next = mktime(0, 0, 0, $mese_ +1, 1, $anno_);$human_month = array("error", "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" );
$settimana = array("Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom");
$colonne = 7;
$giorni = date("t",mktime(0, 0, 0, $mese, 1, $anno)); //giorni del mese in questione
$primo_lunedi= date("w",mktime(0, 0, 0, $mese, 1, $anno)); //Array_parte da 0if($primo_lunedi==0){
$primo_lunedi = 7;
}print("<table width="210" colspacing="0" border="0">"); //table
print("<tr height="20">\n\t\t<td colspan="".$colonne."" align="center"><a href="?x=".$prev.""style='color:' title='Mese precedente'><<</a> <b><span style='color:'>".$human_month[(int)$mese]." ".$anno_."</span></b> <a href="?x=".$next.""style='color:' title='Mese successivo'>>></a></td></tr><tr>");foreach($settimana as $val){
print("<td height="20" style='color:'><b>".$val."</b></td>");
}
print("</tr>");for($i = 1; $i<$giorni+$primo_lunedi; $i++){
if($i%$colonne+1==0){
print("<tr>");
}
if($i<$primo_lunedi){
print("<td> </td>");
}
else{
$giorno_= $i-($primo_lunedi-1);
$a = strtotime(date($anno_."-".$mese_."-".$giorno_));
$b = strtotime(date("Y-m-d"));
if($a != $b){
print("<td style='color: #FFFFFF'>".$giorno_."</td>");
}
else{
print("<td><b>[".$giorno_."]</b></td>");
}
}
if($i%$colonne==0){
print("</tr>");
}
}
print("<tr height="30"> </tr>");
print("</table>");
}calendario(date("m"),date("Y"));
?>
</div>
</div><?php
include ("basebottom.php");
?>[/HTML]
poi c'è il result_report_between.php
[HTML]
<link href="stile.css" rel="stylesheet" type="text/css" />
<?php
include ("config.php");
include ("basetop.php");
?><div class="box_top"><br/> <div class="box_top_botton"> <?php $servizio=$_REQUEST['servizio']; $area=$_REQUEST['area']; $aop=$_REQUEST['aop']; $aop_s=$_REQUEST['aop_s']; $sotta=$_REQUEST['sotta']; $sotta_s=$_REQUEST['sotta_s']; $matt=$_REQUEST['matt']; $matt_s=$_REQUEST['matt_s']; $data=$_REQUEST['data']; ?> <!--<a href="index.php" title="Servizi" style='color:'> Servizi </a>> <a href="aree.php?servizio=<?php echo"$servizio";?>" title="Aree" style='color:'> Aree di <?php echo"$servizio";?> </a>> <a href="aop.php?servizio=<?php echo"$servizio";?>&area=<?php echo"$area";?>" title="Ambito Operativo" style='color:'> Ambiti Operativi di <?php echo"$area";?> </a>> <a href="sotta.php?servizio=<?php echo"$servizio";?>&area=<?php echo"$area";?>&aop=<?php echo"$aop";?>&aop_s=<?php echo"$aop_s";?>" title="Sottoambito Operativo" style='color:'> Sottoambiti Operativi di <?php echo"$aop_s";?> </a>> <a href="matt.php?servizio=<?php echo"$servizio";?>&area=<?php echo"$area";?>&aop=<?php echo"$aop";?>&aop_s=<?php echo"$aop_s";?>&sotta=<?php echo"$sotta";?>&sotta_s=<?php echo"$sotta_s";?>" title="Macro Attività" style='color:'> Macro Attività di <?php echo"$sotta_s";?> </a>--> </div> <div class="box_top_title"> <b>Report</b> </div> <div class="box_top_login"> <a href="login_page.php" title="Amministrazione" style='color:; margin-right:10px;'> <b>Amministrazione</b></a> </div> </div> <div class="box_select"> <div class="box_select_title"> <div class="box_select_attivity"> <?php $query_ins = "SELECT S_A_OP AS Ambito_Operativo,S_SOTT_A AS Sottoambito_Operativo,S_M_ATT AS Macro_Attività,DATA AS Data,BANCA AS Banca
FROM t_a_op INNER JOIN tl_a_op_sott_a ON t_a_op.ID_A_OP=tl_a_op_sott_a.ID_A_OP INNER JOIN t_sott_a ON tl_a_op_sott_a.ID_SOTT_A=t_sott_a.ID_SOTT_A INNER JOIN tl_sott_a_m_att_proc ON t_sott_a.ID_SOTT_A=tl_sott_a_m_att_proc.ID_SOTT_A INNER JOIN t_m_att ON tl_sott_a_m_att_proc.ID_M_ATT=t_m_att.ID_M_ATT INNER JOIN tdi_cpn ON t_m_att.ID_M_ATT=tdi_cpn.ID_M_ATT WHERE DATA BETWEEN '01012008' AND '31012008' ORDER BY DATA";
if(@mssql_query($query_ins)) { //echo "<p>QUERY ESATTA</p>"; $tree_mssql=@mssql_query($query_ins,$link); while($row=mssql_fetch_array($tree_mssql,MSSQL_BOTH)){ echo $row['Ambito_Operativo']."<hr style:'layout-flow:vertical-ideografic'/> "; echo $row['Sottoambito_Operativo']."<hr style:'layout-flow:vertical-ideografic'/> "; echo $row['Macro_Attività']." "; echo $row['Data']." "; echo $row['Banca']."<hr/>"; } //Inizio codice per la stampa del calendario $d1=$_POST['d1']; //Recupero la variabile globale del primo giorno $m1=$_POST['m1']; //Recupero la variabile globale del primo mese $y1=$_POST['y1']; //Recupero la variabile globale del primo anno $data1=mktime(0,0,0,$m1,$d1,$y1); $d2=$_POST['d2']; //Recupero la variabile globale del secondo giorno $m2=$_POST['m2']; //Recupero la variabile globale del secondo mese $y2=$_POST['y2']; //Recupero la variabile globale del secondo anno $data2=mktime(0,0,0,$m2,$d2,$y2); $giorni = array("Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"); $mesi = array("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre","Novembre", "Dicembre"); if ($d1==null or $m1==null or $y1==null or $d2==null or $m2==null or $y2==null){ //Proseguo se almeno un numero è non definito echo "<br/>Hai commesso un errore nell'immisione di almeno una data!"; //Stampa l'errore }else { $numero_giorno_settimana1 = date("w",mktime(0,0,0,$m1,$d1,$y1)); $nome_giorno1 = $giorni[$numero_giorno_settimana1]; $numero_mese1= date("n",mktime(0,0,0,$m1,$d1,$y1)); $numero_mese1--; $nome_mese1 = $mesi[$numero_mese1]; echo "<br/>dal $nome_giorno1".date(" d",mktime(0,0,0,$m1,$d1,$y1))." $nome_mese1".date(" Y",mktime(0,0,0,$m1,$d1,$y1)).""; $numero_giorno_settimana2 = date("w",mktime(0,0,0,$m2,$d2,$y2)); $nome_giorno2 = $giorni[$numero_giorno_settimana2]; $numero_mese2= date("n",mktime(0,0,0,$m2,$d2,$y2)); $numero_mese2--; $nome_mese2 = $mesi[$numero_mese2]; echo " al $nome_giorno2".date(" d",mktime(0,0,0,$m2,$d2,$y2))." $nome_mese2".date(" Y",mktime(0,0,0,$m2,$d2,$y2))."<br/><br/>"; $tot_day=((($data2-$data1)/(24*60*60))+1);//il +1 serve per far contare il primo giorno dell'intervallo (es. 3-1=2 ma i val sono 1 2 3 => 3) //echo"<br/>$data2<br/>"; //echo"<br/>$data1<br/>"; //echo "<br/>$tot_day<br/>"; $data_count=$data1; while($data_count <= $data2){ $count=getdate($data_count); $w_count= $count['wday']; $m_count= $count['mon']; $d_count= $count['mday']; $y_count= $count['year']; if($d_count <= mktime(0,0,0,0,0,$y_count)){//se è prima dell'ultimo dell'anno if($d_count <= mktime(0,0,0,$m_count,0,$y_count)){//se è prima dell'ultimo del mese $nome_giorno =$giorni[$w_count]; echo " $nome_giorno".date(" d|",mktime(0,0,0,$m_count,$d_count,$y_count)).""; $data_count=mktime(0,0,0,$m_count,$d_count+1,$y_count); }else {//se è il primo del mese successivo $nome_giorno =$giorni[$w_count]; echo " $nome_giorno".date(" d|",mktime(0,0,0,$m_count,$d_count,$y_count)).""; $data_count=mktime(0,0,0,$m_count+1,$d_count+1,$y_count); } }else {//se è il primo dell'anno successivo $nome_giorno =$giorni[$w_count]; echo " $nome_giorno".date(" d|",mktime(0,0,0,$m_count,$d_count,$y_count)).""; $data_count=mktime(0,0,0,$m_count+1,$d_count+1,$y_count+1); } } }//Fine codice per la stampa del calendario }else { echo "<p>QUERY ERRATA </p>"; } mssql_close($link); ?> </div>
<?php
include ("basebottom.php");
?>[/HTML]
che fa una query funzionante sul db e poi io ho buttato giu un po' di codice che mi stampa a video i titoli del calendario
-
Credo di non essere in grado di aiutarti pardon
-
Scusatemi ragazzi ma ero in grossi casini ma sono riuscito ad ottenere il risultato voluto grazie anche a Digital Daigor.
Ho cretato una tabella temporanea sulla quale dopo faccio i confronti con le date del calendario dell'intervallo scelto dall'utente, stampo a video e cancello la tabella temporanea.
Così forse non si capisce molto ma forse con il codice....creazione della tabella temporanea
[PHP]
/inizio creazione tabella temporanea
$today=date("dmY");
$tmp_name_table="$id_area_user$today$id_username";//manca variabile scelta prima pagina
//echo "<br/>$tmp_name_table<br/>";$create_tmp_table="CREATE TABLE $tmp_name_table( N_SERV VARCHAR(40) NOT NULL, N_AREA VARCHAR(40) NOT NULL, N_A_OP VARCHAR(50) NOT NULL, N_SOTT_A VARCHAR(50) NOT NULL, ID_M_ATT INT NOT NULL, S_M_ATT VARCHAR(10) NOT NULL, N_M_ATT VARCHAR(200) NOT NULL, B_S VARCHAR(50) NOT NULL)";//query che crea la tabella temporanea sul db con stringhe di testo
[/PHP]
poi inserisco i dati nella tabella creatapoi creo la stringa con le date da scrivere nella prima riga della tabella da stampare a video
[PHP]
//crei un array con tutte le date//Inizio codice per la stampa del calendario $d1=$_POST['d1']; //Recupero la variabile globale del primo giorno $m1=$_POST['m1']; //Recupero la variabile globale del primo mese $y1=$_POST['y1']; //Recupero la variabile globale del primo anno $data1=mktime(0,0,0,$m1,$d1,$y1); $d2=$_POST['d2']; //Recupero la variabile globale del secondo giorno $m2=$_POST['m2']; //Recupero la variabile globale del secondo mese $y2=$_POST['y2']; //Recupero la variabile globale del secondo anno $data2=mktime(0,0,0,$m2,$d2,$y2); $giorni = array("Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"); $tot_day=((($data2-$data1)/(24*60*60))+1);//il +1 serve per far contare il primo giorno dell'intervallo (es. 3-1=2 ma i val sono 1 2 3 => 3) $mesi = array("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre","Novembre", "Dicembre"); if ($d1==null or $m1==null or $y1==null or $d2==null or $m2==null or $y2==null){ //Proseguo se almeno un numero è non definito echo "<br/>Hai commesso un errore nell'immisione di almeno una data!"; //Stampa l'errore }else { $numero_giorno_settimana1 = date("w",mktime(0,0,0,$m1,$d1,$y1)); $nome_giorno1 = $giorni[$numero_giorno_settimana1]; $numero_mese1= date("n",mktime(0,0,0,$m1,$d1,$y1)); $numero_mese1--; $nome_mese1 = $mesi[$numero_mese1]; echo "da <b>$nome_giorno1".date(" d/m/Y",mktime(0,0,0,$m1,$d1,$y1))."</b>"; $numero_giorno_settimana2 = date("w",mktime(0,0,0,$m2,$d2,$y2)); $nome_giorno2 = $giorni[$numero_giorno_settimana2]; $numero_mese2= date("n",mktime(0,0,0,$m2,$d2,$y2)); $numero_mese2--; $nome_mese2 = $mesi[$numero_mese2]; echo " al <b>$nome_giorno2".date(" d/m/Y",mktime(0,0,0,$m2,$d2,$y2))."</b>";//stampa il range scelto dall'utente $data_count=$data1; ?> </div> <div class="box_select_activity"> <?php //Inizio della tabella echo "<table class='table1' ><tr>"; $prima_r = "<td class='td2'><b>Servizio</b></td><td class='td2'><b>Area</b></td><td class='td2'><b>Ambito</b></td><td class='td2'><b>Sottoambito</b></td><td class='td2'><b>Macroattivita</b></td><td class='td2'><b>Banca/Service</b></td>"; //crei un array con tutte le date $data_check = array();//creazione dell'array contenente le date while($data_count <= $data2){ $count=getdate($data_count); $w_count= $count['wday']; $m_count= $count['mon']; $d_count= $count['mday']; $y_count= $count['year']; if($d_count <= mktime(0,0,0,0,0,$y_count)){//se è prima dell'ultimo dell'anno if($d_count <= mktime(0,0,0,$m_count,0,$y_count)){//se è prima dell'ultimo del mese $nome_giorno =$giorni[$w_count]; $prima_r .= "<td class='td2'><b> $nome_giorno".date(" d",mktime(0,0,0,$m_count,$d_count,$y_count))."</b></td>"; $data_check[]= date("dmY",mktime(0,0,0,$m_count,$d_count,$y_count)); $data_count=mktime(0,0,0,$m_count,$d_count+1,$y_count); }else {//se è il primo del mese successivo $nome_giorno =$giorni[$w_count]; $prima_r .= "<td class='td2'><b> $nome_giorno".date(" d",mktime(0,0,0,$m_count,$d_count,$y_count))."</b></td>"; $data_check[]= date("dmY",mktime(0,0,0,$m_count,$d_count,$y_count)); $data_count=mktime(0,0,0,$m_count+1,$d_count+1,$y_count); } }else {//se è il primo dell'anno successivo $nome_giorno =$giorni[$w_count]; $prima_r .= "<td class='td2'><b> $nome_giorno".date(" d",mktime(0,0,0,$m_count,$d_count,$y_count))."</b></td>"; $data_check[]= date("dmY",mktime(0,0,0,$m_count,$d_count,$y_count)); $data_count=mktime(0,0,0,$m_count+1,$d_count+1,$y_count+1); } } echo "$prima_r</tr>"; //Stampa della prima riga con Titoli delle colonne e date del calendario }
[/PHP]
ed infine la stampa a video della tabella con i già detti confronti con le date e la cancellazione della tabella temporanea dal db
[PHP]
//inizio stampa a video la tabella temporanea
$vista_tmp="SELECT * FROM $tmp_name_table";
$vista_tmp_mssql=@mssql_query($vista_tmp,$link);while($result_vista_tmp=mssql_fetch_array($vista_tmp_mssql)){ $s_serv = $result_vista_tmp ["N_SERV"]; $s_area = $result_vista_tmp ["N_AREA"]; $s_aop = $result_vista_tmp ["N_A_OP"]; $s_sotta = $result_vista_tmp ["N_SOTT_A"]; $s_matt= $result_vista_tmp ["S_M_ATT"]; $n_matt= $result_vista_tmp ["N_M_ATT"]; $s_b_s= $result_vista_tmp ["B_S"]; $riga=""; for($i=0;$i<=$tot_day-1;$i++){ $controllo_tdi="SELECT * From tdi_$s_matt Where DATA='$data_check*' And BANCA='$s_b_s'"; $query1=@mssql_query($controllo_tdi,$link); if($query1==NULL){ $name=" "; $riga .= "<td class='td1'>$name</td>"; }else{ $vista_query1=mssql_fetch_array($query1); if($vista_query1==0){ $name=" "; $riga .= "<td class='td1'>$name</td>"; }else{ $name=$vista_query1["ID_NAME"]; $riga .= "<td class='td1' bgcolor='#33FF99'><b>$name</b></td>"; } } } echo " <tr> <td class='td1'>$s_serv</td> <td class='td1'>$s_area</td> <td class='td1'>$s_aop</td> <td class='td1'>$s_sotta</td> <td class='td1'>$n_matt</td> <td class='td1'>$s_b_s</td> $riga </tr> "; } echo "</table>";
//fine stampa tabella temporanea
//inizio cancella la tabella temporanea dal db
$drop_tmp="DROP TABLE $tmp_name_table";
$drop_tmp_mssql=@mssql_query($drop_tmp,$link);
//fine cancella la tabella temporanea dal db
[/PHP]
-
Ho una ricerca sul db che può essre filtrata selezionando da un form la checkbox di una o più domande e passando il valore da ricercare.
Fin qui niente di difficile. Il mio problema nasce quando devo ricercare più valori nella stessa tabella del db che abbiano uno stesso ID di inserimento.
Provo a spiegarmi in italiano con un esempio.Sul db io ho una tabella T_domande che contiene tutte le domande del form ed ha i seguenti campi:
-ID_D (univoco) domanda
-D domanda in chiaro
-TD tipo domanda
Poi ho una tabella TDI_dati che contiene tutti i dati salvati tramite il form ed ha i seguenti campi:
-ID_D riferito alla id della domanda della tabella T_domande
-ID_INS numero di inserimento di un gruppo
-VAL valore del dato inserito tramite il formIl form contiene più domade ma tutte hanno un ID_D diveso (esempi tre domande con i rispettivi ID_Q 33,34,35) e quando un utente inserisce i dati questi vengono salvati nella tabella TDI_dati nel seguente modo
ID_D||ID_INS||VAL||
33 || 3 ||ciao||
34 || 3 ||cip ||
35 || 3 ||ralf||
33 || 4 ||ciao||
34 || 4 ||ciop||
35 || 4 ||ralf||
33 || 5 ||miao||
34 || 5 ||cip ||
35 || 5 ||cra ||
33 || 6 ||ciao||
34 || 6 ||ciop||
35 || 6 ||ralf||Ora il mio problema è che nella pagina di ricerca dei record che vorrei creare vengono stampate tutte le domande con affianco una checkbox e un campo per la ricerca.
Se la checkbox è selezionata bisogna fare una query sulla TDI_dati dove si ricerca per ID_D della domanda il o i records che hanno la parola da ricercare immessa dall'utente nel form (es tutte le domande con ID_D=33 che hanno VAL=ciao).
Io fino a qui sono riuscito a realizzalo.
Iol passo successivo, anche questo realizzato, è stato quello di stampare a video quei record che si rispettassero la suddetta richiesta ma che mi stampasse anche tutte le altre domande che avessero lo stesso ID_INS dei record che hanno dato esito positivo alla ricerca avendo cosi il seguente risultato:ID_D||ID_INS||VAL||ID_D||ID_INS||VAL||ID_D||ID_INS||VAL||
33 || 3 ||ciao||34 || 3 ||cip ||35 || 3 ||ralf ||
33 || 4 ||ciao||34 || 4 ||ciop||35 || 4 ||ralf||
33 || 6 ||ciao||34 || 6 ||ciop||35 || 6 ||ralf ||Bene!
Eccoci arrivati al dilemma!
Io vorrei ricercare ad esempio tutti i record che hanno sia ID_D=33 e VAL=ciao ma anche quelli che hanno ID_D=35 e VAL=ralf.Come diavolo posso fare?
Vorrei cosi ottenere solo il seguente risultato :ID_D||ID_INS||VAL||ID_D||ID_INS||VAL||ID_D||ID_INS||VAL||
33 || 3 ||ciao||34 || 3 ||cip ||35 || 3 ||ralf ||
33 || 6 ||ciao||34 || 6 ||ciop||35 || 6 ||ralf ||Chi mi sa dare un buon consiglio?
-
Secondo me potresti usare un ciclo così da avere 1 array x ogni risultato oppure mettere nella query:
ID_D in (33,35) AND VAL in ("ciao","ralf")oppure caso ti servano le cose associate
WHERE (ID_D=33 AND VAL = ciao) OR (ID_D=35 AND VAL = ralf)
-
Ciao DIGITAL DAIGOR!!!
Scusami ma non ho capito bene come formulare il tuo primo consiglio.la mia query è questa:
SELECT * FROM tdi_dati INNER JOIN t_domande ON tdi_dati.ID_Q=t_domande.ID_Q WHERE tdi_dati.VAL LIKE '%ciao%' AND tdi_dati.ID_Q='33' ORDER BY ID_INS, tdi_dati.ID_Q
ma mi funziona solo per la ricerca ad una sola domanda.
Se io volessi fare la ricerca per più domande come posso modificarla?
-
per avere gli accoppiamenti, cioè: ciao e 33 , ralf e 35, ecc.
WHERE (tdi_dati.VAL LIKE '%ciao%' AND tdi_dati.ID_Q='33') OR (tdi_dati.VAL LIKE '%ralf%' AND tdi_dati.ID_Q='35')
ORDER BY ID_INS, tdi_dati.ID_Qse vuoi invece che ci sia almeno uno di ogni tipo di elemento, metti:
WHERE tdi_dati.VAL IN ('%ciao%','%ralf%') AND tdi_dati.ID_Q IN ('33','35')
ORDER BY ID_INS, tdi_dati.ID_Q
-
io ho scritto questo codice
[PHP]
$scelta="";
//inizio controllo ricerca nelle risposte alle domande (VAL)
if(!empty($_POST['check'])){//entra SOLO se almeno una checkbox delle domande è selezionata$check=$_POST['check'];//assegna l'id_q della checkbox alla variabile foreach($check as $key => $value){ //echo " $key => $value<br/> "; //inizio query per costruire il nome della variabile che contiene la stringa da ricercare $sql_q="SELECT ID_Q,D_Q,T_Q FROM t_questions WHERE ID_M_ATT='$matt' AND ID_Q='$key'"; //echo "$sql_q<br/><br/>"; $q_mssql=@mssql_query($sql_q,$link); while($result_q=mssql_fetch_array($q_mssql)){ $id_q = $result_q["ID_Q"]; $d_q = $result_q ["D_Q"]; $t_q = $result_q ["T_Q"]; $search=$t_q; $search.="_$id_q"; //echo "$search<br/>"; $parola_chiave=$_POST[$search];//assegna alla variabile la parola da ricercare //echo "$parola_chiave<br/>"; } //fine query per costruire il nome della variabile che contiene la stringa da ricercare //inizio query per costruire la clausola del WHERE solo per le domande che hanno la stessa ID_INS delle righe nelle quali sono presenti la stringa precedentemente ricercata $sql_q2="SELECT tdi_$matt_s.ID_Q,ID_INS,tdi_$matt_s.ID_M_ATT,ID_NAME,DATA,BANCA,D_Q,tdi_$matt_s.VAL FROM tdi_$matt_s INNER JOIN t_questions ON tdi_$matt_s.ID_Q=t_questions.ID_Q WHERE tdi_$matt_s.VAL LIKE '%$parola_chiave%' AND tdi_$matt_s.ID_Q='$id_q' ORDER BY ID_INS, tdi_$matt_s.ID_Q"; echo "$sql_q2<br/>"; $q2_mssql=@mssql_query($sql_q2,$link); $where_ins=""; while($result_q2=mssql_fetch_array($q2_mssql)){ $id_ins = $result_q2["ID_INS"]; $where_ins.=" tdi_$matt_s.ID_INS='$id_ins' OR"; } } //fine query per costruire la clausola del WHERE solo per le domande che hanno la stessa ID_INS delle righe nelle quali sono presenti la stringa precedentemente ricercata if($where_ins!=""){ $where_ins.=substr("$where_ins",0,-2);//elimina l'ultimo OR perchè c'è bisogno di un AND tra $where_ins e il LIKE if($scelta!=""){ $scelta.=" AND $where_ins AND tdi_$matt_s.VAL LIKE '%$parola_chiave%'"; }else{ $scelta.=" $where_ins AND tdi_$matt_s.VAL LIKE '%$parola_chiave%'"; } }else{ echo "<b>Nessun record inserito corrisponde ai parametri impostati.</b><br/><br/>"; } } //fine controllo ricerca nelle risposte alle domande (VAL)
$where_query="";
if($scelta!=""){ $where_query.=" WHERE $scelta"; }else{ $where_query.=""; }
[/PHP]
e le query stampate sono le seguenti
SELECT tdi_GRR.ID_Q,ID_INS,tdi_GRR.ID_M_ATT,ID_NAME,DATA,BANCA,D_Q,tdi_GRR.VAL FROM tdi_GRR INNER JOIN t_questions ON tdi_GRR.ID_Q=t_questions.ID_Q WHERE tdi_GRR.VAL LIKE '%12012008%' AND tdi_GRR.ID_Q='29' ORDER BY ID_INS, tdi_GRR.ID_QSELECT tdi_GRR.ID_Q,ID_INS,tdi_GRR.ID_M_ATT,ID_NAME,DATA,BANCA,D_Q,tdi_GRR.VAL FROM tdi_GRR INNER JOIN t_questions ON tdi_GRR.ID_Q=t_questions.ID_Q WHERE tdi_GRR.VAL LIKE '%service%' AND tdi_GRR.ID_Q='30' ORDER BY ID_INS, tdi_GRR.ID_Q
quindi io ho il filtraggio solo dell'ultima query e non la combinazione delle due.
Chi mi da una mano?
GRAZIE
-
io ho scritto questo codice
[PHP]
$scelta="";//inizio controllo ricerca nelle risposte alle domande (VAL) if(!empty($_POST['check'])){//entra SOLO se almeno una checkbox delle domande è selezionata $check=$_POST['check'];//assegna l'id_q della checkbox alla variabile foreach($check as $key => $value){ //echo " $key => $value<br/> "; //inizio query per costruire il nome della variabile che contiene la stringa da ricercare $sql_q="SELECT ID_Q,D_Q,T_Q FROM t_questions WHERE ID_M_ATT='$matt' AND ID_Q='$key'"; //echo "$sql_q<br/><br/>"; $q_mssql=@mssql_query($sql_q,$link); while($result_q=mssql_fetch_array($q_mssql)){ $id_q = $result_q["ID_Q"]; $d_q = $result_q ["D_Q"]; $t_q = $result_q ["T_Q"]; $search=$t_q; $search.="_$id_q"; //echo "$search<br/>"; $parola_chiave=$_POST[$search];//assegna alla variabile la parola da ricercare //echo "$parola_chiave<br/>"; } //fine query per costruire il nome della variabile che contiene la stringa da ricercare //inizio query per costruire la clausola del WHERE solo per le domande che hanno la stessa ID_INS delle righe nelle quali sono presenti la stringa precedentemente ricercata $sql_q2="SELECT tdi_$matt_s.ID_Q,ID_INS,tdi_$matt_s.ID_M_ATT,ID_NAME,DATA,BANCA,D_Q,tdi_$matt_s.VAL FROM tdi_$matt_s INNER JOIN t_questions ON tdi_$matt_s.ID_Q=t_questions.ID_Q WHERE tdi_$matt_s.VAL LIKE '%$parola_chiave%' AND tdi_$matt_s.ID_Q='$id_q' ORDER BY ID_INS, tdi_$matt_s.ID_Q"; echo "$sql_q2<br/>"; $q2_mssql=@mssql_query($sql_q2,$link); $where_ins=""; while($result_q2=mssql_fetch_array($q2_mssql)){ $id_ins = $result_q2["ID_INS"]; $where_ins.=" tdi_$matt_s.ID_INS='$id_ins' OR"; } } //fine query per costruire la clausola del WHERE solo per le domande che hanno la stessa ID_INS delle righe nelle quali sono presenti la stringa precedentemente ricercata if($where_ins!=""){ $where_ins.=substr("$where_ins",0,-2);//elimina l'ultimo OR perchè c'è bisogno di un AND tra $where_ins e il LIKE if($scelta!=""){ $scelta.=" AND $where_ins AND tdi_$matt_s.VAL LIKE '%$parola_chiave%'"; }else{ $scelta.=" $where_ins AND tdi_$matt_s.VAL LIKE '%$parola_chiave%'"; } }else{ echo "<b>Nessun record inserito corrisponde ai parametri impostati.</b><br/><br/>"; } } //fine controllo ricerca nelle risposte alle domande (VAL)
$where_query="";
if($scelta!=""){ $where_query.=" WHERE $scelta"; }else{ $where_query.=""; }
[/PHP]
e le query stampate sono le seguenti
SELECT * FROM tdi_GRR INNER JOIN t_questions ON tdi_GRR.ID_Q=t_questions.ID_Q WHERE tdi_GRR.VAL LIKE '%12012008%' AND tdi_GRR.ID_Q='29' ORDER BY ID_INS, tdi_GRR.ID_QSELECT * FROM tdi_GRR INNER JOIN t_questions ON tdi_GRR.ID_Q=t_questions.ID_Q WHERE tdi_GRR.VAL LIKE '%service%' AND tdi_GRR.ID_Q='30' ORDER BY ID_INS, tdi_GRR.ID_Q
quindi io ho il filtraggio solo dell'ultima query e non la combinazione delle due.
Chi mi da una mano?
GRAZIE
-
scusate la ripezione del messaggio ma non saprei cosa sia successo alla rete ma io vorrei filtrare tutti quei record rispondono correttamente alla query ma che abbiano inoltre la stessa ID_INS (gruppo di inserimento).
Per spiegarmi meglio:SELECT * FROM tdi_GRR INNER JOIN t_questions ON tdi_GRR.ID_Q=t_questions.ID_Q
WHERE (tdi_GRR.VAL like '%12012008%' AND tdi_GRR.ID_Q='29') OR (tdi_GRR.VAL like '%service%' AND tdi_GRR.ID_Q='30')
ORDER BY ID_INS, tdi_GRR.ID_Qmi si stampa a video questo:
ID_Q|ID_INS|DOMANDA|VAL
29 |1 |quest1 |12012008
30 |1 |quest2 |service
30 |2 |quest2 |service
29 |3 |quest1 |12012008
30 |3 |quest2 |serviceOra il problema è che la domanda che ha ID_INS=2 non deve essere stampata perchè risponde positivamente solo alla seconda condizione e non ad entrambe.
Ora come posso scrivere una query ad hoc per avere solo questo risultato:
ID_Q|ID_INS|DOMANDA|VAL
29 |1 |quest1 |12012008
30 |1 |quest2 |service
29 |3 |quest1 |12012008
30 |3 |quest2 |serviceio ho provato con questa ed ho il risultato cercato:
SELECT * FROM tdi_GRR INNER JOIN t_questions ON tdi_GRR.ID_Q=t_questions.ID_Q
WHERE (tdi_GRR.VAL like '%12012008%'OR tdi_GRR.VAL like '%service%') AND tdi_GRR.ID_Q IN ('29','30')AND ID_INS IN (1,3)
ORDER BY ID_INS, tdi_GRR.ID_Qma come faccio ad inserire la clausola ID_INS IN (1,3) con i valori all'interno giusti visto che è tutto dinamico come si può vedere dal codice postato precedentemente.
GRAZIE ragazzi siete sempre una fonte vera di saggezza!!!