Back to top

Autore Topic: [prob] ChronoConnettivity e risultato Query errato  (Letto 2080 volte)

Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
[prob] ChronoConnettivity e risultato Query errato
« il: 13 Gen 2011, 12:18:49 »
Salve

Ho seguito la guida di Vales che si occupa di creare un piccolo form di ricerca con chrono connectivity.

La tabella, jos_chronoforms_formcurriculum, su cui eseguo la query è stata creata in Chronoforms. E pare funzionare.

Ora:
Eseguo una ricerca sui campi nome, cognome, titoloDiStudio, provincia e voto.

Ho notato che quando eseguo la ricerca sul campo voto e metto 1 questo viene interpretato come un valore stringa per questo motivo la query restituirà tutti i curriculum che hanno il carattere 1 presente nel campo voto.
Quello che invece vorrei fare è la ricerca per valore, quindi se scrivo 1 dovrà cercare tutti i curriculum con voto 1, o se scrivo 100 tutti quelli con valore 100.

Ho quindi fatto una modifica al codice WHERE SQL in connectivity
Purtroppo il codice funziona allo stesso modo, senza distinzioni di sorta

Codice: [Seleziona]
<?php
 $session 
=& JFactory::getSession('ricerca');
 
$search_array = array('nome','cognome','titoloDiStudio','provincia','voto');
 
$cerca = array();
 foreach ( 
$search_array as $search ) {
 
$value JRequest::getVar($search'' 'post');
 if ( 
$value ) {
  if( 
$value == voto )
  {
   
$cerca[] =  " `$search` = '$value' ";
  }
 else{
 
$cerca[] = " `$search` LIKE '%$value%' ";
     }
 }
 }
 
 if (empty(
$cerca) and (JRequest::getVar('submit','no','POST')=="Trova")) {
 
$session->set('cerca','0','ricerca');
 
JRequest::setVar('limitstart',0,'Get');
 }

 if ( !empty(
$cerca) ){
 echo 
" WHERE ".implode(' AND '$cerca);
 
$session->set('cerca',$cerca,'ricerca');          
 }

 elseif ((
JRequest::getVar('submit','no','POST')<>"Trova") and ($session->get('cerca',0,'ricerca')<>0))
{
 
$cerca=$session->get('cerca',0,'ricerca');
 echo 
" WHERE ".implode(' AND '$cerca);
 }
 else
 {
 echo 
"";
 }
?>


Problema n°2
Quando eseguo delle query su alcuni particolari titoli di studio, per esempio sulla stringa:
L-3 DISCIPLINE DELLE ARTI FIGURATIVE DELLA MUSICA DELLO SPETTACOLO E DELLA MODA
anche se prensenti in database questi non vengono visualizzati. Ho fatto la stessa query su phpmyadmin, ma il risultato è lo stesso query trovate 0.
Spero di essere stato chiaro.

P.s.
Conosco qualcosa di PHP e Mysql e sto cominciando a capire qualcosina sul framework Joomla.
« Ultima modifica: 13 Gen 2011, 18:18:34 da rushseeker »

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:[prob] ChronoConnettivity e risultato Query errato
« Risposta #1 il: 14 Gen 2011, 19:29:25 »
per la prima credo che dovresti mettere voto nella if fra apici così

Codice: [Seleziona]
if( $value == 'voto' )
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline fabio2

  • Nuovo arrivato
  • *
  • Post: 5
    • Mostra profilo
Re:[prob] ChronoConnettivity e risultato Query errato
« Risposta #2 il: 14 Gen 2011, 19:53:03 »
Per il primo problema mi associo su mentre per l'altro perchè non ci posti la query che hai scritto ??  :)

Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
Re:[prob] ChronoConnettivity e risultato Query errato
« Risposta #3 il: 16 Gen 2011, 16:25:06 »
1) Risultato invariato
Ho modificato la riga con 'voto'--- > sembra non entrare dentro l'if...
Come faccio a monitorare se entra nell'if? faccio un echo?

2)
Codice: [Seleziona]

SELECT * FROM `jos_chronoforms_formcurriculum`
where `titoloDiStudio` like '%L-3 DISCIPLINE DELLE ARTI FIGURATIVE DELLA MUSICA DELLO SPETTACOLO E DELLA MODA%'



[allegato eliminato da un amministratore]
« Ultima modifica: 17 Gen 2011, 14:35:39 da rushseeker »

Offline fabio2

  • Nuovo arrivato
  • *
  • Post: 5
    • Mostra profilo
Re:[prob] ChronoConnettivity e risultato Query errato
« Risposta #4 il: 17 Gen 2011, 14:26:18 »
1) chiedo scusa se mi sono associato su ma se voto è un campo numerico non devi usare apici , prova così :

Codice: [Seleziona]
<?php 
$session 
=& JFactory::getSession('ricerca'); 
$search_array = array('nome','cognome','titoloDiStudio','provincia','voto'); 
$cerca = array(); 
    foreach ( 
$search_array as $search ) {
           
$value JRequest::getVar($search'' 'post');
           if ( 
$value ) { 
                if( 
$value == voto )  {   
                     
$cerca[] =  $search = $value ";  
                                                  } 
                 else{ 
                 
$cerca[] = $search LIKE '%$value%' ";     
                        } 
} }

mentre per la quesry prova questa :
Codice: [Seleziona]

SELECT * FROM jos_chronoforms_formcurriculum
where titoloDiStudio like '%ARTI%'


il campo voto è un int o unsigned int o comunque numerico giusto ?

spero di essere stato d'aiuto !!!

Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
Re:[prob] ChronoConnettivity e risultato Query errato
« Risposta #5 il: 17 Gen 2011, 15:13:16 »
per la 2)
il campo è un tinyint

Ho aggirato il problema:
ho notato che l'elenco dei titoli del combobox che ho pescato su internet ha un valore, L-NUMERO, che è unico. Ho quindi messo al posto del valore della option, "L-3 DISCIPLINE DELLE ARTI FIGURATIVE DELLA MUSICA DELLO SPETTACOLO E DELLA MODA", solo L-3.

Naturalmente questa modifica l'ho fatta per tutti i titoli di studio.
« Ultima modifica: 17 Gen 2011, 15:17:33 da rushseeker »

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:[prob] ChronoConnettivity e risultato Query errato
« Risposta #6 il: 17 Gen 2011, 18:03:09 »
1) chiedo scusa se mi sono associato su ma se voto è un campo numerico non devi usare apici , prova così :

Codice: [Seleziona]
<?php 
$session 
=& JFactory::getSession('ricerca'); 
$search_array = array('nome','cognome','titoloDiStudio','provincia','voto'); 
$cerca = array(); 
    foreach ( 
$search_array as $search ) {
           
$value JRequest::getVar($search'' 'post');
           if ( 
$value ) { 
                if( 
$value == voto )  {   
                     
$cerca[] =  $search = $value ";  
                                                  } 
                 else{ 
                 
$cerca[] = $search LIKE '%$value%' ";     
                        } 
} }

mentre per la quesry prova questa :
Codice: [Seleziona]

SELECT * FROM jos_chronoforms_formcurriculum
where titoloDiStudio like '%ARTI%'


il campo voto è un int o unsigned int o comunque numerico giusto ?

spero di essere stato d'aiuto !!!

voto è un valore stringa assegnato ad un elemento dell'array nella seconda riga e quindi va ricercato come valore fra apici altrimenti non lo trova.

Aver ridotto il valore della graduatoria mi sembra una buona cosa.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

 



Web Design Bolzano Kreatif