Hola,
en esta dirección, http://www.sociedadurgente24.es/index.php/empresas-disponibles
podeis ver que tengo un formulario que tiene un campo llamado "elija empresa".
Este formulario esta hecho en classic mode y el campo lleva asociado un script en PHP que lo que hace es mostrar todos los nombres de todas las empresas que hay en la vista de abajo de content builder.
Este es el script que tengo ahora en las opciones de ese campo:
1;Elija su empresa
0;setQuery("Select `value` From #__facileforms_subrecords Where element = 232 And `name` Like 'Nombre'");
$result = JFactory::getDBO()->loadResultArray();
foreach($result As $res){
$list .= $res."n";
}
return $list;
?>
Eso muestra todos los nombres de empresas. Pero lo que quiero es que el campo de selección me muestre solo los nombres de las empresas que estan disponibles.
Este es el código con el que estoy probando pero no funciona:
setQuery("Select `value`,`record` From #__facileforms_subrecords Where element = 232 And `name` Like 'Nombre'");
$result = JFactory::getDBO()->loadAssocList();
foreach($result As $res){
JFactory::getDBO()->setQuery("Select `value` From #__facileforms_subrecords Where element = 271 And `value` Like 'http://sociedadurgente24.es/images/nuestras_imagenes/Disponible.png' And `record` = " . $res['record']);
$disponible = JFactory::getDBO()->loadResult();
if($disponible){
$list .= "0;".$res['value'].";".$res['value']."n";
}
}
return $list;
?>
No se si el problema puede estar relacionado con que el valor del elemento 271 sea una ruta a una imagen. ¿Veis algún error en el código? ¿Se os ocurre otra forma de hacerlo?
gracias y saludos,
Guillermo
Hola Andrés
Es un poco complejo explicarte si no conocemos los datos que dispones en la tabla jos_facileforms_subrecords , debería haber sólo una consulta sql que obtenga los datos necesarios.
Puedes evaluar la contratación de tiempo de soporte , puedes revisar el siguiente enlace
https://www.webempresa.com/documentacion/Acuerdo_de_contratacion_de_Servicio_Tecnico_Joomla_en_webempresa.com.pdf
Saludos.
Bueno Jhon que puedo decir. Entiendo tu respuesta pero claro lo minimo que se puede contratar reulta un poco caro teniendo en cuenta que lo que estoy pidiendo, es si ves algún error en el código o un consejo de como podría hacerlo, no que me escribais vosotros el codigo.
Pero bueno no pasa nada, por lo menos ya se que lo que tengo que hacer en este caso es buscarme la vida por otro lado. Y no es poco, ya que almenos no pierdo el tiempo.
gracias y saludos,
Guillermo
Hola Andrés,
que te está devolviendo la variable $list ??
Creo que el error lo tienes en la consulta SQL, evaluas la condición con un LIKE, pero no usas caracteres comodín "%", por tanto, el resultado sería el mismo que si fuera un =.
Cambia esto en tu código y prueba de nuevo:
JFactory::getDBO()->setQuery("Select `value` From #__facileforms_subrecords Where element = 271 And `value` Like '%sociedadurgente24.es/images/nuestras_imagenes/Disponible.png%' And `record` = " . $res['record']);
Fíjate que en la segunda consulta SQL he añadido un comodín % al principio y al final para que devuelva true en caso de que aparezca la ruta de la imagen precedida o seguida de cualquier código... Supongo que en tu tabla tendrás algo así para la imágen:
Y por este motivo el Like devuelve falso siempre..
Saludos
Hola David,
muchas gracias por el esfuerzo en contestar aunque lo que me indicas no funciona.
Es una lástima porque cuando he leído tu mensaje esta mañana pensé que iba a funcionar seguro. Tienes toda la razón en lo que dices. No se a lo mejor hay algún otro error en el código a parte de ese. Lo he repasado cincuenta veces y no lo entiendo, no veo porque no funciona.
gracias y saludos,
Guillermo
Hola Andrés,
pues parece que el fallo está aquí:
JFactory::getDBO()->setQuery("Select `value` From #__facileforms_subrecords Where element = 271 And `value` Like 'sociedadurgente24.es/images/nuestras_imagenes/Disponible.png' And `record` = " . $res['record']);
Podrías decirnos que valor devuelve esa consulta SQL??
Podrías abrir un fichero de log y escribir en un fichero las consultas SQL que vas haciendo en cada pasada del for para que veamos donde está el fallo...
Saludos
Bueno, pues resulta que al cambiar a quickmode ya no me funciona ni el script que tenia antes y que solo me recuperaba los nombres de todas las empresas en el listado.
La consulta directamente en el phpMyAdmin me devuelve este error;
#1064 - 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
Lo último que me pides no se lo que es David, no soy programador.
gracias y saludos,
Guillermo
Por favor peganos la consulta que te da error en el phpMyAdmin.. si da error en el phpMyAdmin es normal que el BreezingForms no devuelva nada...
Saludos
Select `value` From #__facileforms_subrecords Where element = 271 And `value` Like 'sociedadurgente24.es/images/nuestras_imagenes/Disponible.png' And `record` = " . $res['record']
Es lo que he puesto en la consulta.
Hicistes el cambio que te comenté?
Select `value` From #__facileforms_subrecords Where element = 271 And `value` Like 'sociedadurgente24.es/images/nuestras_imagenes/Disponible.png' And `record` = " . $res['record']
esto debería ser así:
Select `value` From #__facileforms_subrecords Where element = 271 And `value` Like "%sociedadurgente24.es/images/nuestras_imagenes/Disponible.png%" And `record` = " . $res['record']
Saludos
Valeeee. Ya esta funcionando. Finalmente Markus Bopp me ha ayudado también. Tenías razón en lo del % David porque Markus también lo ha puesto. Finalmente el codigo queda así:
setQuery("Select `value`,`record` From #__facileforms_subrecords Where element = 232 And `name` Like 'Nombre'");
$result = JFactory::getDBO()->loadAssocList();
foreach($result As $res){
JFactory::getDBO()->setQuery("Select `value` From #__facileforms_subrecords Where element = 271 And `value` Like '% %' And `record` = " . $res['record']);
$disponible = JFactory::getDBO()->loadResult();
if($disponible){
$list .= "0;".$res['value'].";".$res['value']."n";
}
}
return $list;
?>
gracias y saludos,
Guillermo
OK, veo que el problema está en la consulta SQL que no tenía puestos los comodines ya que veo que la consulta que ha quedad al final es la misma que te he indicado en el último post..
Me alegro que lo hayas podido solucionar 🙂
Dejo el post cerrado y marcado como solucionado.
Saludos!