PHP - problema con else

   
Vista:

problema con else

Publicado por aldo (824 intervenciones) el 03/11/2015 23:38:04
Heme por aqui nuevamente. Una vez solucionado el problema para traer los registros con:
1
if(pg_num_fields($row)>0)
Ahora se presenta un nuevo problema:

ahora no esta pasando por el
1
else
cuando la especialidad o la contraseña estan erradas debiera arrojar este mensaje:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
else
	  {
	?>
	<table>
		<tr>
			<td>
						   <script type='text/javascript'>
						   var agree=confirm("Debe escribir la Especialidad y la Contraseña Correcta");
						   if (agree)
							   window.location='especialidad.php';
						   else
							   window.location='volver.php';
						   </script>
			</td>
		</tr>
	</table>	

si alguien pudiera ayudar.
Bueno cuando no es una cosa ahora es la otra.
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

problema con else

Publicado por aldo (824 intervenciones) el 04/11/2015 01:39:18
bueno envio el codigo completo:
Notas: mostrando el else en negritas

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
<?php
$connect = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=movilnet");
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
$especial = $_POST["especial"];
$contra   = $_POST["contrasena"];
$connect = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=movilnet");
$row = "SELECT pacientes.nombres, pacientes.apellidos, pacientes.cta_correo, pacientes.nrohistoria, pacientes.telefono, citas.fecha, especialidad.descripcion, especialidad.id_especialidad, especialidad.contrasena
   FROM pacientes, citas, especialidad
  WHERE pacientes.id_paciente = citas.id_paciente AND citas.id_especialidad = especialidad.id_especialidad AND especialidad.contrasena = '".$contra."' AND especialidad.descripcion = '".$especial."' ORDER BY citas.fecha";
echo "<table align='center' border='1' bordercolor='#00CC99' bgcolor='#99CC00'>
       <tr>
           <th width='100' style='font-size:15px;'>Nombres
           <th width='100' style='font-size:15px;'>Apellidos
           <th width='100' style='font-size:15px;'>Correo
           <th width='100' style='font-size:15px;'>Teléfono
           <th width='100' style='font-size:15px;'>Fecha
           <th width='100' style='font-size:15px;'>Nro Historia
  	   </tr>
	 </table>";
$row = @pg_query($connect,$row);
if(pg_num_fields($row)>0)

	  {
				while($select3 = @pg_fetch_array($row))
				{
				 	$nombres = $select3['nombres'];
					$apellidos = $select3['apellidos'];
                    $correo = $select3['cta_correo'];
                    $telefono = $select3['telefono'];
                    $fecha = $select3['fecha'];
					$nrohistoria = $select3['nrohistoria'];
					
             echo "<table align='center' border='1' bordercolor='#FFCC99' bgcolor='#99CC00'>
        	            <tr class='sr'>
		     	        <td width='100' align='center' style='font-size:10px;'>$nombres</td>
			            <td width='100' align='center' style='font-size:10px;'>$apellidos</td>
			            <td width='100' align='center' style='font-size:10px;'>$correo</td>
			            <td width='100' align='center' style='font-size:10px;'>$telefono</td>
			            <td width='100' align='center' style='font-size:10px;'>$fecha</td>
         <td width='100' align='center'><a href='citapaciente.php?nro=$nrohistoria' title='Ratificar la Cita'>$nrohistoria</td>
</tr></table>";
				}

	  }
	else
	  {
	?>
	<table>
		<tr>
			<td>
						   <script type='text/javascript'>
						   var agree=confirm("Debe escribir la Especialidad y la Contraseña Correcta");
						   if (agree)
							   window.location='especialidad.php';
						   else
							   window.location='volver.php';
						   </script>
			</td>
		</tr>
	</table>	
	<?php	
   }	 
?>
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 Jose Luis León López

problema con else

Publicado por Jose Luis León López (12 intervenciones) el 04/11/2015 04:27:49
prueba de 2 maneras la primera pues ,e ha pasado que el else no condiciona es mas seguro usar else if o sea if(pg_num_fields($row)>0)
else if(pg_num_fields($row)>=0) se que no suena logico pero en php suele pasar lo que te esta pasando de esta manera aseguras los condicionales si es que tu problema es qu eno entra en el else
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 Lawliet

problema con else

Publicado por Lawliet (222 intervenciones) el 04/11/2015 05:40:27
Hola...

A mi punto de vista tienes en lugar equivocado tu mensaje ^^... Te explico... Primero recupera los valores tal y como lo vienes haciendo y antes de realizar tu proceso de base de datos primero valida que el usuario ingreso correctamente los campos necesarios; es decir...

1
2
3
4
5
6
7
$especial=$_POST['especial'];
$contra=$_POST['contrasena'];
if($especial == "" || $contra == ""){
	echo "<script type='text/javascript'>alert('Especialidad o Password Incorrectos.')</script>";
} else {
	echo "PROCESO DE BASE DE DATOS.";
}

Me atrevería a decirte que sería la forma correcta ya que validamos antes de iniciar de nuestro proceso correspondiente, de esa manera no sera necesario irse a la base de datos por los registros si desde el inicio no ha ingresado la contraseña o la especialidad.

Pero no te preocupes, te anexo tu código corregido para que funcione de acuerdo a tu validación...

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
<?php
	$connect = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=movilnet");
	error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
	$especial = $_POST["especial"];
	$contra   = $_POST["contrasena"];
	$connect = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=movilnet");
	$row = "SELECT pacientes.nombres, pacientes.apellidos, pacientes.cta_correo, pacientes.nrohistoria, pacientes.telefono, citas.fecha,
			especialidad.descripcion, especialidad.id_especialidad, especialidad.contrasena FROM pacientes, citas, especialidad WHERE pacientes.id_paciente = 
			citas.id_paciente AND citas.id_especialidad = especialidad.id_especialidad AND especialidad.contrasena = '".$contra."' AND
			especialidad.descripcion = '".$especial."' ORDER BY citas.fecha";
	echo "<table align='center' border='1' bordercolor='#00CC99' bgcolor='#99CC00'>
			<tr>
				<th width='100' style='font-size:15px;'>Nombres</th>
				<th width='100' style='font-size:15px;'>Apellidos</th>
				<th width='100' style='font-size:15px;'>Correo</th>
				<th width='100' style='font-size:15px;'>Teléfono</th>
				<th width='100' style='font-size:15px;'>Fecha</th>
				<th width='100' style='font-size:15px;'>Nro Historia</th>
			</tr>";
	$row = @pg_query($connect,$row);
	if(pg_num_fields($row)>0){
		while($select3 = @pg_fetch_array($row)){
			$nombres = $select3['nombres'];
			$apellidos = $select3['apellidos'];
			$correo = $select3['cta_correo'];
			$telefono = $select3['telefono'];
			$fecha = $select3['fecha'];
			$nrohistoria = $select3['nrohistoria'];
			echo "
				<tr class='sr'>
					<td width='100' align='center' style='font-size:10px;'>$nombres</td>
					<td width='100' align='center' style='font-size:10px;'>$apellidos</td>
					<td width='100' align='center' style='font-size:10px;'>$correo</td>
					<td width='100' align='center' style='font-size:10px;'>$telefono</td>
					<td width='100' align='center' style='font-size:10px;'>$fecha</td>
					<td width='100' align='center'><a href='citapaciente.php?nro=$nrohistoria' title='Ratificar la Cita'>$nrohistoria</td>
				</tr>";
		}
		echo "</table>";
	} else {
		echo "<script type='text/javascript'>alert('Especialidad o Password Incorrectos.')</script>";
		echo "</table>";
	}
?>

Prácticamente tu error se encontraba en que la tabla que querías como resultado en tu condicional, lo tenías en código HTML y no como una respuesta a tu else; es decir, no hacías la impresión en pantalla tal y como lo venías haciendo, por lo que prácticamente el else siempre iba a estar vació.

No obstante, te anexo un nuevo código el cual incluye tanto el primer código que te eh proporcionado como lo que llevas realizado por si te es de utilidad alguna...

1
 

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos.

Suerte!
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 Lawliet

problema con else

Publicado por Lawliet (222 intervenciones) el 04/11/2015 05:58:54
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
<?php
	$especial=$_POST['especial'];
	$contra=$_POST['contrasena'];
	if($especial == "" || $contra == ""){
		echo "<script type='text/javascript'>alert('Especialidad o Password Incorrectos.')</script>";
	} else {
		$connect = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=movilnet");
		error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
		$especial = $_POST["especial"];
		$contra   = $_POST["contrasena"];
		$connect = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=movilnet");
		$row = "SELECT pacientes.nombres, pacientes.apellidos, pacientes.cta_correo, pacientes.nrohistoria, pacientes.telefono, citas.fecha,
				especialidad.descripcion, especialidad.id_especialidad, especialidad.contrasena FROM pacientes, citas, especialidad WHERE pacientes.id_paciente = 
				citas.id_paciente AND citas.id_especialidad = especialidad.id_especialidad AND especialidad.contrasena = '".$contra."' AND
				especialidad.descripcion = '".$especial."' ORDER BY citas.fecha";
		echo "<table align='center' border='1' bordercolor='#00CC99' bgcolor='#99CC00'>
				<tr>
					<th width='100' style='font-size:15px;'>Nombres</th>
					<th width='100' style='font-size:15px;'>Apellidos</th>
					<th width='100' style='font-size:15px;'>Correo</th>
					<th width='100' style='font-size:15px;'>Teléfono</th>
					<th width='100' style='font-size:15px;'>Fecha</th>
					<th width='100' style='font-size:15px;'>Nro Historia</th>
				</tr>";
		$row = @pg_query($connect,$row);
		if(pg_num_fields($row)>0){
			while($select3 = @pg_fetch_array($row)){
				$nombres = $select3['nombres'];
				$apellidos = $select3['apellidos'];
				$correo = $select3['cta_correo'];
				$telefono = $select3['telefono'];
				$fecha = $select3['fecha'];
				$nrohistoria = $select3['nrohistoria'];
				echo "
					<tr class='sr'>
						<td width='100' align='center' style='font-size:10px;'>$nombres</td>
						<td width='100' align='center' style='font-size:10px;'>$apellidos</td>
						<td width='100' align='center' style='font-size:10px;'>$correo</td>
						<td width='100' align='center' style='font-size:10px;'>$telefono</td>
						<td width='100' align='center' style='font-size:10px;'>$fecha</td>
						<td width='100' align='center'><a href='citapaciente.php?nro=$nrohistoria' title='Ratificar la Cita'>$nrohistoria</td>
					</tr>";
			}
			echo "</table>";
		} else {
			echo "<tr class='sr'><td width='100' align='center' style='font-size:10px;' colspan='6'>NO SE ENCONTRARON RESULTADOS.</td></tr>";
			echo "</table>";
		}
	}
?>

P.D. Lamento el doble comentario pero me equivoque de botón ^^!!
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

problema con else

Publicado por aldo (824 intervenciones) el 05/11/2015 13:46:19
Hola. Bueno probé tu sugerencia pero no lo esta haciendo en realidad.

no esta pasando por el mensaje:
1
echo "<tr class='sr'><td width='100' align='center' style='font-size:10px;' colspan='6'>NO SE ENCONTRARON RESULTADOS.</td></tr>";
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

problema con else

Publicado por aldo (824 intervenciones) el 05/11/2015 14:11:56
Que tal Lawliet. Bueno te explico ahora si lo hace, el asunto es que se debe leer de esta manera:

1
if(pg_num_rows($row)>0)
y no
1
if(pg_num_fields($row)>0)
.
De todos modos te agradezco a ti y a Jose Luis León López por haber intentado ayudarme.

1
pg_num_rows
Devuelve el número de filas de un arreglo.
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