Joomla.it Forum
Componenti per Joomla! => Gestione Form => : rushseeker 13 Jan 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
<?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.
-
per la prima credo che dovresti mettere voto nella if fra apici così
if( $value == 'voto' )
-
Per il primo problema mi associo su mentre per l'altro perchè non ci posti la query che hai scritto ?? :)
-
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)
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]
-
1) chiedo scusa se mi sono associato su ma se voto è un campo numerico non devi usare apici , prova così :
<?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 :
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 !!!
-
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.
-
1) chiedo scusa se mi sono associato su ma se voto è un campo numerico non devi usare apici , prova così :
<?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 :
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.