Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » Joomla »

¿Cómo reieno un combobox desde el core?

Estas en el tema de ¿Cómo reieno un combobox desde el core? en el foro de Joomla en Foros del Web. Hola amig@s!! Estoy creando un formulario para Joomla, basándome en el mismo form que trae el cms para el registro de usuarios. Quiero decir, modificando ...
  #1 (permalink)  
Antiguo 28/10/2009, 02:22
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
¿Cómo reieno un combobox desde el core?

Hola amig@s!!

Estoy creando un formulario para Joomla, basándome en el mismo form que trae el cms para el registro de usuarios. Quiero decir, modificando el core.

Hasta ahora muy bien porque todos eran input type="text" pero me ha surgido la necesidad de crear un campo select que debe recoger de una determinada tabla de la base de datos 2 valores para cada option; el ID que permanecería oculto y el nombre que es lo que se muestra en el combobox. Luego, dependiendo del nombre escogido, en otra tabla distinta insertará en ID correspondiente.

Conozco PHP bastante bien, pero no he logrado descifrar aún cómo hace Joomla para conectar a la base de datos. En el value de cada input type="text" viene el siguiente código
Código:
value="<?php echo $this->escape($this->user->get( 'nombre_del_campo_de_la_bd' ));?>"
Para este caso debería recoger todos los valores en un array bidimensional y luego con un bucle ir insertándolos en las filas del combo sólo uno de los campos, pero siempre asociado al otro. O simplemente coger el campo nombre y para la siguiente instrucción primero buscar su ID en la correspondiente tabla...
Pero cómo puedo acceder a la base de datos sin romper el esquema para conseguir obtener las tuplas para mi select??

Gracias compañer@s!!
  #2 (permalink)  
Antiguo 29/10/2009, 03:55
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: ¿Cómo reieno un combobox desde el core?

Hola de nuevo amig@s.
Ya veo que a nadie le apetece entrar en la entrañas de Joomla. Pero io no tengo más remedio, así que probando y probando, de la forma más sencilla(y la última que utilizas) pues he conseguido que me muestre todas las tuplas de la tabla que creé en el select con el siguiente código

Código:
function rellena_combo($ssql,$valor,$nombre)
		{
		   echo "<select name='$nombre'>";
		   $resultado=mysql_query($ssql);
		   while ($fila=mysql_fetch_row($resultado)){
			 if ($fila[0]==$valor){
			   echo "<option selected value='$fila[0]'>$fila[1]</option>";
			 }
			 else{
			   echo "<option value='$fila[0]'>$fila[1]</option>";
			 }
		  }
		   echo "</select>";
		} 
	 
		$nombreselect = 'nombre_del_select';
		$consulta = 'Select * from tabla order by nombre_del_dato';
		$predeterminado = '1';
		rellena_combo($consulta,$predeterminado,$nombreselect);
Hasta ahí todo perfecto. El problema reside ahora en que joomla me notifica de un faio en la inserción cada vez que intento meter datos en la bd desde ese formulario. Y por supuesto, el campo que no inserta, del que no coge bien el valor, es este select.
Lo que no se es qué hacer para que este campo me recoja el valor seleccionado y lo inserte debidamente.

A alguien se le ocurre??

Con los demás campos, los que vienen por defecto, lo hace de la siguiente manera

Código:
<input type="text" name="nombre del campo" id="nombre del campo" size="10" class="inputbox required" value="<?php echo $this->escape($this->user->get( 'nombre del campo' ));?>"  maxlength="50" onBlur="javascript:funcionJavaScript(this.value)" /> *
Se supone que coge el value, pero no caigo ahora mismo en cómo hacer que obtenga el valor de la opción seleccionada(sería $fila[0])

Muchas gracias!!!
  #3 (permalink)  
Antiguo 30/10/2009, 02:07
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: ¿Cómo reieno un combobox desde el core?

Si ia lo digo io.... pa pegarme 2 tiros....

Jajaja, finalmente lo conseguí solucionar y el problema estaba en el archivo users, en la clase JTable. Aunque la verdad es que el faio era cosa mía, paso a explicároslo y a ver si le sirve a alguien algún día.

Así en plan básico, por el código que introducí sabreis como se hace el campo select en el core

Código:
<td>
    <select name='nombre_del_select' id="nombre_del_select"  value="<?php echo $this->user->get( 'campo_de_la_tabla' );?>"  /> *
        
    <?php   
	
		function rellena_combo($ssql)
		{
		   $resultado=mysql_query($ssql);
		   $valor = 'valor_de_la_fila_que_queremos_como_predeterminada';
		   
		   while ($fila=mysql_fetch_row($resultado))
		   {
		   		if($fila[0]==$valor)
					echo "<option name='nombre_del_select' selected value='$fila[0]'>$fila[1]</option>";
				else
			   		echo "<option name='nombre_del_select' value='$fila[0]'>$fila[1]</option>";
		   }
		} 
	 
		$consulta = 'Sentencia_sql';
		rellena_combo($consulta);
     ?>   
        </select>
	</td>
Vale, el código ha quedado así. Pero resulta que en el archivo que antes os comentaba libraries/joomla/database/table/user.php había otro nombre de variable que recoger.

Así que punto a tener muy en cuenta, el nombre del select tiene que ser el mismo del de la variable que haia en este otro archivo, declarada para recoger su valor...

Espero haberos servido de aiuda.
Un saludo!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:58.