PHP - Asignar cadena texto a una variable con contador-Ayuda

 
Vista:
sin imagen de perfil
Val: 17
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Asignar cadena texto a una variable con contador-Ayuda

Publicado por Luis (6 intervenciones) el 27/09/2020 13:31:45
Hola a todos!

Tengo un problema que no se solucionar pues antes funcionaba, se el problema, pero no la solución.

Tengo un formulario donde se puede seleccionar que calendario generar con ello se monta una consulta en Mysql dirigida a la base de datos pero un variable $igWhere[$filtActivos]="calendario_seccion.calendario"; etc.. no me toma la cadena completa de caracteres "calendario_seccion.calendario" solo tomas el primer carácter de la cadena es decir la "c" cuando antes funcionaba.

El fomulario cuentra con cuatro desplegable a seleccionar :

1.Sección sindical
2.Localidad
3.Comunidad Autonoma
4.Año


Pongo ngo el código
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
* Rellenar un ARRAY las fechas festivas a travás de una consulta a las fechas del calendario */
$cntArrDF=0;
$consultaFechCalend = mysqli_query($conexion, "SELECT * FROM calendario WHERE fechaA=".$year." AND fechaM=".$month.";");
while($cFechCalend = mysqli_fetch_array($consultaFechCalend))
{
$tiDi=$cFechCalend['tipoDia'];
/* Inicio Comprobar Filtros: */
 
 
	/* INICIO SUPER FILTRO */
 
	/* Contador de Filtros Activos */
	$filtActivos=0;
	$from="";
	$where1="";
	$where2="";
	$igWhere="";
	$where3="";
	$whan="";
	$igWhereF="";
 
 
	if($cFechCalend['sindical']!=0){
		if($filtActivos!=0){ $coma=", "; $whan=" AND "; }else{ $coma=""; $whan=" WHERE "; }
		$from=$from.$coma."calendario_seccion";
		$where1=$where1.$whan."calendario_seccion.activo='si' AND calendario_seccion.calendario=".$cFechCalend['id']."";
		$where2=$where2." AND calendario_seccion.seccion=".$varSindical."";
		$filtActivos++;
			$igWhere[$filtActivos]="calendario_seccion.calendario";
	}
 
	if($cFechCalend['comunidad']!=0){
		if($filtActivos!=0){ $coma=", "; $whan=" AND "; }else{ $coma=""; $whan=" WHERE "; }
		$from=$from.$coma."calendario_comunidad";
		$where1=$where1.$whan."calendario_comunidad.activo='si' AND calendario_comunidad.calendario=".$cFechCalend['id']."";
		$where2=$where2." AND calendario_comunidad.comunidad=".$varComunidad."";
		$filtActivos++;
			$igWhere[$filtActivos]="calendario_comunidad.calendario";
	}
 
	if($cFechCalend['localidad']!=0){
		if($filtActivos!=0){ $coma=", "; $whan=" AND "; }else{ $coma=""; $whan=" WHERE "; }
		$from=$from.$coma."calendario_localidad";
		$where1=$where1.$whan."calendario_localidad.activo='si' AND calendario_localidad.calendario=".$cFechCalend['id']."";
		$where2=$where2." AND calendario_localidad.localidad=".$varLocalidad."";
		$filtActivos++;
			$igWhere[$filtActivos]="calendario_localidad.calendario";
			// echo $igWhere[$filtActivos];
	}
 
	//Montaje del Filtro Comparador
	if($filtActivos>1){
		for($cff=1; $cff<=$filtActivos; $cff++){
			if($cff<=$filtActivos){
			$igWhereF=$igWhereF." AND ".$igWhere[$cff]." = ".$igWhere[$cff+1];
			echo $igWhereF;
			//echo  $cff;
			//echo $filtActivos;
			//$igWhere[$filtActivos];
			//var_dump($igWhere);
 
			}
		}
	}
 
	/* FIN SUPER FILTRO */
 
 
	/* INICIO CONSULTA FILTRADA */
	if($filtActivos!=0){
	//$filtroCompleto = $from.$where1.$where2;
	$filtroCompleto = $from.$where1.$where2.$igWhereF;
	$fechList = mysqli_query($conexion, "SELECT * FROM ".$filtroCompleto.";");
 
	if(!$fechList) {Var_dump(mysqli_error($conexion));
	exit;
	}
 
 
 
		while($fList = mysqli_fetch_array($fechList))
		{
			$consultaFechList = mysqli_query($conexion, "SELECT * FROM calendario WHERE id=".$fList['calendario'].";");
			$cFechList = mysqli_fetch_array($consultaFechList);
 
			$DiasFestivos[$cntArrDF]="".$cFechList['fechaD']."/".$cFechList['fechaM']."-".$tiDi."";
			$cntArrDF++;
		}
	}
	/* FIN CONSULTA FILTRADA */
 
 
	/* INICIO CONSULTA GENERAL */
	if($cFechCalend['sindical']==0 and $cFechCalend['comunidad']==0 and $cFechCalend['localidad']==0){
		$DiasFestivos[$cntArrDF]="".$cFechCalend['fechaD']."/".$cFechCalend['fechaM']."-".$tiDi."";
		$cntArrDF++;
	}
	/* FIN CONSULTA GENERAL */
gracias por vuestra ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de javier
Val: 1.865
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Asignar cadena texto a una variable con contador-Ayuda

Publicado por javier (493 intervenciones) el 28/09/2020 10:18:34
si pasaras la tabla de la bbdd con unos cuantos registros te lo pruebo. Mucho codigo para analizar, solo de verlo me mareo, jejejeje, es broma, pero si lo puedo hacer andar con la tabla de la BBDD ahí si que no tendre que analizar sin tener datos
Por que en principio cuando haces

1
$igWhere[$filtActivos]="calendario_seccion.calendario";

deberia coger toda la cadena, no veo que se corte en ningun momento, pero a simple vista y rapidamente.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Asignar cadena texto a una variable con contador-Ayuda

Publicado por Luis (6 intervenciones) el 28/09/2020 11:05:33
Aqui te dejo el archivo de la bdt
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.865
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Asignar cadena texto a una variable con contador-Ayuda

Publicado por javier (493 intervenciones) el 28/09/2020 11:50:36
muy bien

cuando declaras la variable $igWhere al principio la declaras como string y no como array


1
$igWhere = "";

calbialo por

1
$igWhere = [];


ahora es un array, y toma todo el valor de la cadena que le pasas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.865
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Asignar cadena texto a una variable con contador-Ayuda

Publicado por javier (493 intervenciones) el 28/09/2020 11:57:06
y otra cosa, eres de Ceuta?, lo digo por la BBDD, sale Ceuta, yo si soy de alli
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Asignar cadena texto a una variable con contador-Ayuda

Publicado por Luis (6 intervenciones) el 28/09/2020 12:27:34
MUCHAS GRACIAS!!!! eres un crack ...
No soy de Ceuta pero tenemos afiliados de Ceuta en muestro Sindicato.

MIL GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Asignar cadena texto a una variable con contador-Ayuda

Publicado por Luis (6 intervenciones) el 28/09/2020 12:49:54
Me da un fallo ahora creo en el montaje final de la consulta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Montaje del Filtro Comparador
if($filtActivos>1){
    for($cff=1; $cff<=$filtActivos; $cff++){
        if($cff<=$filtActivos){
        $igWhereF=$igWhereF." AND ".$igWhere[$cff]." = ".$igWhere[$cff+1];
        //echo $igWhereF;
        //echo  $cff;
        //echo $filtActivos;
        //$igWhere[$filtActivos];
        //var_dump($igWhere);
 
        }
    }
}

Asi construye la consulta pero:


calendario_comunidad, calendario_localidad WHERE calendario_comunidad.activo='si' AND calendario_comunidad.calendario=541 AND calendario_localidad.activo='si' AND calendario_localidad.calendario=541 AND calendario_comunidad.comunidad=0 AND calendario_localidad.localidad=0 AND calendario_comunidad.calendario = calendario_localidad.calendario AND calendario_localidad.calendario =
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in /home/sieorges/public_html/wp.Calendario/calendario/calendario.php on line 156
]


ya que AND calendario_comunidad.calendario = calendario_localidad.calendario AND calendario_localidad.calendario = " al final se queda sin valor ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.865
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Asignar cadena texto a una variable con contador-Ayuda

Publicado por javier (493 intervenciones) el 28/09/2020 13:02:12
intenta una cosa,

haz un condicional IF

que si no tiene valor $igWhere no añada el AND

si has podido hacer todo este codigo, puedes hacerlo, no es dificil.

intentalo a ver como te sale , es mejor asi, aprenderás a solucionar problemas,

si no te sale ya te lo reviso otra vez.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Asignar cadena texto a una variable con contador-Ayuda

Publicado por Luis (6 intervenciones) el 28/09/2020 13:16:48
He hecho lo que me has dicho y no da error pero tengo que comprobar que actúa bien...
1
2
3
4
5
6
7
8
9
10
11
12
//Montaje del Filtro Comparador
if($filtActivos>1){
    for($cff=1; $cff<=$filtActivos; $cff++){
        if($cff<=$filtActivos){
            if($igWhere[$cff]!=0){
            $igWhereF=$igWhereF." AND ".$igWhere[$cff]." = ".$igWhere[$cff+1];
            }
 
 
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.865
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Asignar cadena texto a una variable con contador-Ayuda

Publicado por javier (493 intervenciones) el 28/09/2020 13:18:24
Claro, después de programar lo que sea hay que probarlo a ver si hace lo que quieres
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.865
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Asignar cadena texto a una variable con contador-Ayuda

Publicado por javier (493 intervenciones) el 28/09/2020 13:23:50
aunque, no se los conocimientos de PHP que tienes,
el que has hecho es un codigo muy enrevesado y dificil de entender y mantener.

Aunque no quede bonito intenta que el nombre de todas las variables sea descrtiptvo, aunque te quede una variable muy larga.
será mas facil de entender para ti despues de unos meses sin ver el codigo y poara cualquiera.

has de poner comentarios explicativos justo antes de cada orden para describier lo que hacen las lineas de codigo.

Yo lo haria con una clase, que es programacion oriebtada a objetos POO.

A demas iria concatenando paso a paso la consulta a la BBDD y no solo al final cuando haces:

1
$filtroCompleto = $from.$where1.$where2.$igWhereF;

si concatenas paso a paso, pues paso a paso vas viendo si tienen valor las variables y concatenas y si no tienen valor no concatenas.
parece una tonteria pero contra mas orden mas facil encontrar fallos

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.865
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Asignar cadena texto a una variable con contador-Ayuda

Publicado por javier (493 intervenciones) el 28/09/2020 13:31:43
tambien podrias hacer una cosa asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$filtroCompleto = $from;
 
//si $where1 es distinto de vacio, osea, tiene valor
if($where1 != ''){
  $filtroCompleto .= $where1;
}
 
//si $where2 es distinto de vacio, osea, tiene valor
if($where2 != ''){
  $filtroCompleto .= $where2;
}
 
//si $igWhereF es distinto de vacio, osea, tiene valor
if($igWhereF != ''){
  $filtroCompleto .= $igWhereF;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Asignar cadena texto a una variable con contador-Ayuda

Publicado por Luis (6 intervenciones) el 28/09/2020 14:09:10
Si me gusta tu forma de concatenar voy a rehacerlo. Gracias por tus consejos .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar