PHP restituisce il risultato di una query errato

carlo9987

Utente Attivo
5 Mar 2013
35
0
0
Roma
Ciao a tutti!

Da qualche giorno sto cercando di risolvere, senza successo, un problema decisamente strano.

Lavoro con la seguente configurazione: Apache + PHP 5 + SQL Server 2005.

Premetto che se lanciata direttamente su SQL server i risultati sono corretti, ma sulla pagina web invece, assolutamente no ed il problema in seguito a diverse verifiche, è da attribuirsi alle date:

PHP:
$startDate= $_POST['startDate']; 
$endDate = $_POST['endDate'];


$queryResultStr = "select ISF, Provincia, AMB, Categoria, SPEC, count(Visitato) Totale from vtlcontattiriep where userIdLogIn = '".$DM."' and startDate between '".$startDate." 00:00:00' and '" . $endDate . " 23:59:59' GROUP BY ISF, Provincia, Categoria, AMB, SPEC";

$queryResult = mssql_query($queryResultStr);

echo $startDate ."</br>"; # ----> esempio: 18-01-2012

echo $endDate."</br>";	 # ----> esempio: 23-10-2012			

var_dump($queryResultStr); # ----> esempio: string(229) "select ISF, Provincia, AMB, Categoria, SPEC, count(Visitato) Totale from vtlcontattiriep where userIdLogIn = '10' and startDate between '18-01-2012 00:00:00' and '23-10-2012 23:59:59' GROUP BY ISF, Provincia, Categoria, AMB, SPEC"
	

			
while($rowResult = mssql_fetch_array($queryResult)){

           echo "<tr class='" . str_replace(" ","",$rowResult['ISF']) . " " . $rowResult['Provincia'] . " " . str_replace(".","",$rowResult['Categoria']) . " " . str_replace(" ","",str_replace(".","",$rowResult['AMB'])) . " " . str_replace(".","",$rowResult['SPEC']) . "' style='font-family: Tahoma'>";
						
           echo "<td>" . $rowResult['ISF'] . "</td><td>" . str_replace(" ","SENZA PROVINCIA",$rowResult['Provincia']) . "</td><td>" .  $rowResult['Categoria'] . "</td><td>" .  $rowResult['AMB'] . "</td><td>" .  $rowResult['SPEC'] . "</td><td>" .  $rowResult['Totale'] . "</td>"; 
echo "</tr>";

}


Spero che qualcuno mi possa aiutare, sto impazzendo!!! :incazz2:

Vi ringrazio in anticipo!
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
modifica la parte di select in questo modo,

$DM."' and convert(varchar, startDate, 103) between '".$startDate."' and '". $endDate. "' GROUP

probabilmente nella tua select originale non c'è corrispondenza di formato delle date
ciao
Marino
 

carlo9987

Utente Attivo
5 Mar 2013
35
0
0
Roma
Ti ringrazio per la risposta! :)

Già avevo provato con la conversione e purtroppo non mi restituisce alcun risultato.

Inserendo la parte di codice

PHP:
'".$startDate." 00:00:00'

riadatto la data ed infatti la query che viene generata, se lanciata direttamente su SQL Server funziona perfettamente.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
come hai settato il campo startDate?
probabilmente, come dice marino51, non è giusta la corrispondenza del formato delle date.
 

carlo9987

Utente Attivo
5 Mar 2013
35
0
0
Roma
Ciao Borgo italia!

Allora la data viene acquisita tramite datapicker con il seguente formato:

dateFormat: 'dd-mm-yy'

In seguito la metto nella variabile $startDate:

PHP:
$startDate= $_POST['startDate'];

e poi la inserisco nella condizione della query così:

PHP:
 and startDate between '".$startDate." 00:00:00' and '" . $endDate . " 23:59:59'

Potrebbe esservi d'aiuto sapere che sul db il campo è di tipo DATATIME.



ciao
come hai settato il campo startDate?
probabilmente, come dice marino51, non è giusta la corrispondenza del formato delle date.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se non vado errato il formato delle date con DATATIME è YYYY-MM-DD HH:MM:SS
quindi (non mi ricordo di preciso perchè a me piace lavorare col timestamp) è evidente l'incongruenza con dd-mm-yy
 

carlo9987

Utente Attivo
5 Mar 2013
35
0
0
Roma
Effettivamente voleva la data nel formato YYYY-MM-DD HH:MM:SS.... La cosa che mi aveva messo fuori strada è proprio il fatto che se lancio la query direttamente da SQL Server vuole il formato DD-MM-YYYY HH:MM:SS, altrimenti mi restituisce l'errore:

La conversione del tipo di dati da char a datetime ha generato un valore di tipo datetime non compreso nell'intervallo dei valori consentiti.

Chi mi può spiegare questa cosa???

Grazie mille!:D
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prova così
PHP:
<?php
//....
// se da datapicker il formato è (come tu esempio) ----> esempio: 18-01-2012 
//riducila al formato richiesto YYYY-MM-DD HH:MM:SS
$espl=explode("-", $_POST['startDate']);
$startDate=$espl[2]."-".$espl[1]."-".$espl[0]." 00:00:00";
//analogo per $endDate
//e poi la usi nella query
//se vuoi utolizzarla anche nell'echo, ma in formato italiano, fatti altre due variabili (es) $startDate_it=$_POST['startDate'];
//.....
?>
 

carlo9987

Utente Attivo
5 Mar 2013
35
0
0
Roma
Perfetto!!! Funziona :D

Grazie mille per il supporto :fonzie:

ciao
prova così
PHP:
<?php
//....
// se da datapicker il formato è (come tu esempio) ----> esempio: 18-01-2012 
//riducila al formato richiesto YYYY-MM-DD HH:MM:SS
$espl=explode("-", $_POST['startDate']);
$startDate=$espl[2]."-".$espl[1]."-".$espl[0]." 00:00:00";
//analogo per $endDate
//e poi la usi nella query
//se vuoi utolizzarla anche nell'echo, ma in formato italiano, fatti altre due variabili (es) $startDate_it=$_POST['startDate'];
//.....
?>
 
Discussioni simili
Autore Titolo Forum Risposte Data
S [PHP] Perchè con require(tcpdf...) restituisce ora errata? PHP 0
T [PHP] Metodo che restituisce un array PHP 5
M Php e mysql: tabella con URL che restituisce ID PHP 2
X Php e funzione che restituisce byte PHP 2
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0

Discussioni simili