Mostrar solo campos concatenados

Estoy haciendo uso de formularios para generar reportes, para que el
usuario elija la información que quiere en su reporte, de esta forma voy formando la
consulta sql para onbtener la información elegida por el usuario, pero resulta
que en la base de datos tengo divido el campo Fecha de Realización de Inventario
en tres Fecha_Realizacion_Dia, Fecha_Realizacion_Mes y Fecha_Realizacion_Año,
entonces encontré que para juntar los campos en uno solo podía utilizar
la función SQL CONCAT, pero esta la puse como predeterminada en la consulta que voy formando
ahora el problema es ¿Qué puedo hacer para que se imprima solo el concatenado pero siempre y cuando este
haya sido seleccionado por el usuario en el formulario?
Esta es la forma en que hago la consulta:
$from="FROM inventario_interruptor_sf6";
$concat=",CONCAT(`Fecha_Realizacion_Dia`,'-',`Fecha_Realizacion_Mes`,'-',`Fecha_Realizacion_Ano`) AS Fecha_Inventario";
$consalm=SELECT."\t".$valor1."\t".$concat."\t".$from."\t".$wherealm;
En donde la variable $valor1 es donde almaceno los campos que seleccione el suaurio en el formulario, y en la variable concat es donde
concateno la fecha, pero entonces si el usuario selecciona fecha se va a ir a la variable valor y se imprimirá dos veces
porque ya lo tengo en la variable concat que es la que quiero que se imprima, pero siempre y cuando el usuario
seleccione este campo.

3 respuestas

Respuesta
1
añade un if y listo...
de donde sacas $wherealm?
podrias hacer por ejemplo:
if ($_POST[Fecha]!=""){
$concat=",CONCAT(`Fecha_Realizacion_Dia`,'-',`Fecha_Realizacion_Mes`,'-',`Fecha_Realizacion_Ano`) AS Fecha_Inventario";
}else{
$concat="";}
Hola
Pero si el valor de fecha se almcena en la variable $valor, porque fecha no la almaceno en una variable especial sino que la almaceno en la variable $valor. Por ejemplo si el usuario selecciona otros campos se van guardando en la variable $valor1.
¿Entonces tendría que manejar alguna función de cadena o como?
Saludos
Dime como completa los campos el usuario y si es posible una url en donde pueda verlo.
Este es parte del formulario
<p class="style5">
<input type="checkbox" name="campo[]" value="Fecha_Realizacion_Dia,Fecha_Realizacion_Mes,Fecha_Realizacion_Ano">
Fecha de realización del inventario </p>
<p>
<input type="checkbox" name="campo[]" value="Clave_Sat">
<span class="style5"> SAT</span>
</p>
</div>
<p align="left">
<input type="checkbox" name="campo[]" value="Clave_SEConv">
<span class="style5"> S.E.</span>
<span class="style5">
</span></p>
<p align="left" class="style5">
<input type="checkbox" name="campo[]" value="Clave_Interruptor">
Clave del interruptor
</p>
<p align="left" class="style5">
<input type="checkbox" name="campo[]" value="Numero_Serie">
Número de serie </p>
<p align="left">
<span class="style5">
<input type="checkbox" name="campo[]" value="Fecha_Pu_Ser_D,Fecha_Pu_Ser_M,Fecha_Pu_Ser_A">
Fecha de puesto en servicio
</span>
Esta es la forma en como voy conformando los valores de la consulta
//echo "<input name=campo[] type=hidden value=$campo>";
foreach($campo as $casilla){
echo "<input name=campo[] type=hidden value=$casilla>";
echo "Labels1".$labels[$casilla]."<br>";
echo "<input type=hidden name=labels value=$labels[$casilla]>";
}
$valor=implode(",",$_POST['campo']);
echo "Valor: $valor <br><br>";
Es decir que $valor contiene una serie de opciones separadas por,
Lo que quieres es mostrar la fecha solo si se marco la opción...
Podrías usar la función strpos para ver si existe una cadena (la que determina si haces el concat o no) dentro de $valor.
¿Me explico? ¿O me estoy confundiendo?
Respuesta
1
Lo que se me ocurre es que chequees los campos que el usuario a marcado antes de realizar la consulta. Entonces si el usuario marco el de concatenar (no se como le llames) realices la consulta con el CONCAT de lo contrario la haces normal. Es un poco más trabajoso pero también más seguro. Por ejemplo:
if (usuario_concat == 1) {
$from="FROM inventario_interruptor_sf6";
$concat=",CONCAT(`Fecha_Realizacion_Dia`,'-',`Fecha_Realizacion_Mes`,'-',`Fecha_Realizacion_Ano`) AS Fecha_Inventario";
$consalm=SELECT."\t".$valor1."\t".$concat."\t".$from."\t".$wherealm;
} else {
$from="FROM inventario_interruptor_sf6";
$consalm=SELECT."\t".$valor1."\t".$from."\t".$wherealm;
}
Respuesta
1
¿Aun deseas la respuesta?
Supongo que debes de tener un campo que diga algo así como $fecha_realizacion
Aplica un str_replace antes de hacer la consulta y cambia el $fecha_realizacion por el CONCAT que tienes y listo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas