Repository 32bit  Forum
Repository 64bit  Wiki

Strano problema con query

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata e la versione del Kernel. Questi dati aiutano le persone che possono rispondere.
2) Specificare sempre il tipo di shell (bash, sh, csh, etc...)
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza dell'ultima regola porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Strano problema con query

Messaggioda darkstaring » mer ott 03, 2012 11:21

Giorno a tutti :)
Ho un problema con una query..
Il problema è stano perchè prima di eseguire la query la faccio stampare a video e se la eseguo manualmente da mysql funziona mentre se la eseguo con php mi dà questo errore:
Codice: Seleziona tutto
Errore in queryagg
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
' at line 1

Questo è il codice
Codice: Seleziona tutto
   print "Trovo i dipendenti che hanno fatto più aggiunstamenti e più errori";
   $query="select id-1 AS DIP_PREC,id AS DIP_AGG, dataora , id_dipendente  , id_trattamento from appuntamenti where  (id_trattamento ='A2') OR (id_trattamento='A3');";
   print $query."<BR><BR>";
   $query=mysql_query($query);
   if($query==FALSE) print "ERRORE";
   else
   {
      for($i=0;$i<mysql_num_rows($query);$i++)
      {
   $dip_pre=mysql_result($query,$i,'DIP_PREC');
   $dip_agg=mysql_result($query,$i,'DIP_AGG');
   if(isset($pre)) $pre= $pre.'OR (appuntamenti.id="'.$dip_pre.'")';
   else $pre='(appuntamenti.id="'.$dip_pre.'")';
   
   if(isset($agg)) $agg= $agg."OR (appuntamenti.id='".$dip_agg."')";
   else $agg="(appuntamenti.id='".$dip_agg."')";
      }
      $queryagg="select count(*)AS TOT,dipendenti.nome from appuntamenti, dipendenti where (id_dipendente=dipendenti.id) AND ( $agg ) group by dipendenti.nome;<BR>";
      $querypre="select count(*)AS TOT,dipendenti.nome from appuntamenti, dipendenti where (id_dipendente=dipendenti.id) AND ( $pre ) group by dipendenti.nome; <BR>";
      print "<br>AGGIUNSTA: \t $queryagg<br>SBAGLIANO: \t $querypre<br>";
      $queryagg=mysql_query($queryagg);
      $querypre=mysql_query($querypre);
      if($queryagg == FALSE) print "<br>Errore in queryagg<br>".mysql_error();
      else
      {
      print "Conteggio dei dipendenti che hanno riparato:<TABLE>";
      print "<TH>DIPENDENTE</TH><TH>TOTALE</TH>";
   for($i=0;$i<mysql_num_rows($queryagg);$i++)
   {
     $conteggio=mysql_result($queryagg,$i,'TOT');
     $nome=mysql_result($queryagg,$i,'nome');
     print "<TR><TD>$nome</TD><TD>$conteggio</TD></TR>";
   }
   print "</TABLE>";
   }
   
     if($querypre == FALSE) print "<br>Errore in querypre<br>".mysql_error();
      else
      {
      print "Conteggio dei dipendenti che hanno sbagliato:<TABLE>";
      print "<TH>DIPENDENTE</TH><TH>TOTALE</TH>";
   for($i=0;$i<mysql_num_rows($querypre);$i++)
   {
     $conteggio=mysql_result($querypre,$i,'TOT');
     $nome=mysql_result($querypre,$i,'nome');
     print "<TR><TD>$nome</TD><TD>$conteggio</TD></TR>";
   }
   print "</TABLE>";
   }
   }

Sono diverse le query, prima cerco quello dove devo cercare, e poi faccio un'altra query che conta su quello che ho trovato...

Questo è la query che mi stampa a video
Codice: Seleziona tutto
select count(*)AS TOT,dipendenti.nome from appuntamenti, dipendenti where (id_dipendente=dipendenti.id) AND ( (appuntamenti.id="200876")OR (appuntamenti.id="200877")OR (appuntamenti.id="201254")OR (appuntamenti.id="201255")OR (appuntamenti.id="201884")OR (appuntamenti.id="201888")OR (appuntamenti.id="201900")OR (appuntamenti.id="201905")OR (appuntamenti.id="202130")OR (appuntamenti.id="202342")OR (appuntamenti.id="202639")OR (appuntamenti.id="202980")OR (appuntamenti.id="203253")OR (appuntamenti.id="205453")OR (appuntamenti.id="205465")OR (appuntamenti.id="205877")OR (appuntamenti.id="206097")OR (appuntamenti.id="206338")OR (appuntamenti.id="207138")OR (appuntamenti.id="207678")OR (appuntamenti.id="207682")OR (appuntamenti.id="208651")OR (appuntamenti.id="208689")OR (appuntamenti.id="208690")OR (appuntamenti.id="208740")OR (appuntamenti.id="208997")OR (appuntamenti.id="208998")OR (appuntamenti.id="210075")OR (appuntamenti.id="200744") ) group by dipendenti.nome;

Se la eseguo da mysql funge....

Sapete dirmi perchè e/o come risolvere???

Grazie
mettete fiori nei cannoni
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 344
Iscritto il: mer ott 13, 2010 13:55
Slackware: Current
Desktop: xfce

Re: Strano problema con query

Messaggioda teox99 » mer ott 03, 2012 12:33

Codice: Seleziona tutto
   if(isset($pre)) $pre= $pre.'OR (appuntamenti.id="'.$dip_pre.'")';
   else $pre='(appuntamenti.id="'.$dip_pre.'")';
   
   if(isset($agg)) $agg= $agg."OR (appuntamenti.id='".$dip_agg."')";
   else $agg="(appuntamenti.id='".$dip_agg."')";


penso che sia un semplice problema di apici, essendo appuntamenti.id numerico
puoi sostituire così
Codice: Seleziona tutto
   if(isset($pre)) $pre = $pre." OR (appuntamenti.id=$dip_pre)";
   else $pre="(appuntamenti.id=$dip_pre)";
   
   if(isset($agg)) $agg = $agg." OR (appuntamenti.id=$dip_agg)";
   else $agg="(appuntamenti.id=$dip_agg)";
Avatar utente
teox99
Linux 2.6
Linux 2.6
 
Messaggi: 693
Iscritto il: ven lug 25, 2008 14:54
Località: Roma[Eur]
Slackware: 13.37
Desktop: KDE - Xfce

Re: Strano problema con query

Messaggioda darkstaring » mer ott 03, 2012 14:52

Avevo già provato ma niente...
Mi ritorna sempre lo stesso errore nonostante se eseguo la query da mysql funzioni
Strano :(
mettete fiori nei cannoni
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 344
Iscritto il: mer ott 13, 2010 13:55
Slackware: Current
Desktop: xfce

Re: Strano problema con query

Messaggioda ZeroUno » mer ott 03, 2012 15:08

mi sa che ti genera qualche a capo di troppo.

invece di print usa:
Codice: Seleziona tutto
echo "<pre>============\n";var_dump($query);echo "============</pre>";



edit:
Codice: Seleziona tutto
      $queryagg="select count(*)AS TOT,dipendenti.nome from appuntamenti, dipendenti where (id_dipendente=dipendenti.id) AND ( $agg ) group by dipendenti.nome;<BR>";

che ci fa quel br alla fine?
My packages&files searcher: http://slakfinder.org | My repository for slackware64-current: http://www.z01.eu/repo-slack
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 3763
Iscritto il: ven giu 02, 2006 14:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: slack-current
Distribuzione: 01000000-current

Re: Strano problema con query

Messaggioda darkstaring » mer ott 03, 2012 15:17

Ho provato a togliere quei BR che non ci facevano nulla e tutto và bene :D
ahahahahah....

Grazieeeeeee :D

Ma a che serve:
Codice: Seleziona tutto
echo "<pre>============\n";var_dump($query);echo "============</pre>";
???
mettete fiori nei cannoni
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 344
Iscritto il: mer ott 13, 2010 13:55
Slackware: Current
Desktop: xfce

Re: Strano problema con query

Messaggioda ZeroUno » mer ott 03, 2012 15:55

darkstaring ha scritto:Ma a che serve:
Codice: Seleziona tutto
echo "<pre>============\n";var_dump($query);echo "============</pre>";
???

prova ;)
My packages&files searcher: http://slakfinder.org | My repository for slackware64-current: http://www.z01.eu/repo-slack
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 3763
Iscritto il: ven giu 02, 2006 14:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: slack-current
Distribuzione: 01000000-current


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti