Repository 32bit  Forum
Repository 64bit  Wiki

Strano problema con query

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
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 della regola 5 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 10: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
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 373
Iscritto il: mer ott 13, 2010 12:55
Desktop: xfce
Distribuzione: Kali Linux

Re: Strano problema con query

Messaggioda teox99 » mer ott 03, 2012 11: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: 735
Iscritto il: ven lug 25, 2008 13:54
Località: Roma[Eur]
Slackware: 13.37
Desktop: KDE - Xfce

Re: Strano problema con query

Messaggioda darkstaring » mer ott 03, 2012 13:52

Avevo già provato ma niente...
Mi ritorna sempre lo stesso errore nonostante se eseguo la query da mysql funzioni
Strano :(
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 373
Iscritto il: mer ott 13, 2010 12:55
Desktop: xfce
Distribuzione: Kali Linux

Re: Strano problema con query

Messaggioda ZeroUno » mer ott 03, 2012 14: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?
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4414
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: Strano problema con query

Messaggioda darkstaring » mer ott 03, 2012 14: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>";
???
darkstaring
Linux 2.4
Linux 2.4
 
Messaggi: 373
Iscritto il: mer ott 13, 2010 12:55
Desktop: xfce
Distribuzione: Kali Linux

Re: Strano problema con query

Messaggioda ZeroUno » mer ott 03, 2012 14:55

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

prova ;)
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4414
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite