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.
Avatar utente
darkstaring
Linux 2.6
Linux 2.6
Messaggi: 551
Iscritto il: mer ott 13, 2010 13:55
Nome Cognome: Francesco Achenza
Slackware: Current
Desktop: KDE
Distribuzione: Kali Linux
Contatta:

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

Avatar utente
teox99
Linux 2.6
Linux 2.6
Messaggi: 738
Iscritto il: ven lug 25, 2008 14:54
Slackware: 13.37
Desktop: KDE - Xfce
Località: Roma[Eur]
Contatta:

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
darkstaring
Linux 2.6
Linux 2.6
Messaggi: 551
Iscritto il: mer ott 13, 2010 13:55
Nome Cognome: Francesco Achenza
Slackware: Current
Desktop: KDE
Distribuzione: Kali Linux
Contatta:

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 :(

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 4948
Iscritto il: ven giu 02, 2006 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

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?
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
darkstaring
Linux 2.6
Linux 2.6
Messaggi: 551
Iscritto il: mer ott 13, 2010 13:55
Nome Cognome: Francesco Achenza
Slackware: Current
Desktop: KDE
Distribuzione: Kali Linux
Contatta:

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>";
???

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 4948
Iscritto il: ven giu 02, 2006 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

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 ;)
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111


Torna a “Programmazione”

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti