PHP - ayuda urgente por favor

   
Vista:

ayuda urgente por favor

Publicado por aldo (824 intervenciones) el 02/11/2015 02:09:17
Tengo este codigo para recorrer una consulta la cual tiene varios registros, pero solo esta trayendo uno solo.
por favor la verdad he estado analizando pero no logro ver el error. si alguien puede ayudar.

Al principio si funcionaba pero de repente ya no lo hace.

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
<?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.descripcion = '$especial'		   
           AND especialidad.contrasena = '$contra' 
	  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_fetch_array($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';
						   </script>
			</td>
		</tr>
	</table>	
	<?php	
   }	 
?>
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

ayuda urgente por favor

Publicado por aldo (824 intervenciones) el 02/11/2015 02:29:30
En el pgAdmin coloqué este query y si funciona:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 = '2134'
    AND especialidad.descripcion = 'gastro' ORDER BY citas.fecha

para este caso hay dos registros.
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 xve

ayuda urgente por favor

Publicado por xve (5520 intervenciones) el 02/11/2015 12:15:58
Hola Aldo, te da algún error?
De donde vienen las variables: $_POST["especial"] y $_POST["contrasena"]?
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

ayuda urgente por favor

Publicado por aldo (824 intervenciones) el 02/11/2015 12:54:41
Hola xve, bueno estas variables vienen de este formulario:

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
<?php
   $connect = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=movilnet");
   $especialidad = "SELECT * FROM especialidad ORDER BY descripcion";
 
 
   error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Acceso al Sistema de Pediatría en Línea</title>
<style type="text/css">
  .sr {
    background-color: #FFFFCF;
    color: #000000;
    font-family: Arial;
    font-size: 12px;
      }
  input.color1 {background-color: #00CC99; font-weight: bold; font-size: 12px; color: white;}
</style>
</head>
<body>
<form action="especial.php" method='POST'>
<fieldset><LEGEND style="color:#FF0000"></LEGEND>
<h1>
<tr>
     <td align='right'>Especialidad:</td>
     <td><select name="especial" required>
	 <option value="">[Seleccione la Especialidad]</option>
 
<?php
//*** crear la tabla especialidad
 
 
$especial = @pg_query($connect,$especialidad);
while($espec = @pg_fetch_array($especial))
          {
			$id = $espec['id_especialidad'];
            $descrip = $espec['descripcion'];
            echo "<OPTION VALUE='$descrip'>$descrip</OPTION>";
          }
?>
       </select></td></tr>
 
	  <tr>
		<td class="sr" align='right' style="text-decoration:none">Contraseña:</td>
		<td class="sr"><input type="password"  name="contrasena" required size="20" maxlength="20" align="right" title="Escriba la contraseña"/></td>
	  </tr>
 
	  <input type="hidden" name="idespecialidad" value="<?php echo $idespecialidad; ?>">
	</table>
<table align="center">
   <tr>
    <td>
         <input class="color1" type="submit" name="action" value="Ingresar"/>
    </td>
    </tr>
</table>
</fieldset>
<br/>
 
</form>
</body>
</html>
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 xve

ayuda urgente por favor

Publicado por xve (5520 intervenciones) el 02/11/2015 17:56:41
Aldo parece estar todo bien... yo lo unico que haria, seria cambiar la manera de incluir las variables en la variable $row... yo haria algo así:

1
2
3
4
5
$row = "SELECT pacientes.nombres,
...
           AND especialidad.descripcion = '".$especial."'
           AND especialidad.contrasena = '".$contra."'
	  ORDER BY citas.fecha";

De todas maneras, has probado ha hacer un:
1
echo $row;
haber si te añade las variables correctamente?
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

ayuda urgente por favor

Publicado por aldo (824 intervenciones) el 02/11/2015 21:38:15
Hola Xve, por supuesto he impreso muchas veces con
1
echo $row;
,
pregunto: acaso el codigo podría mutar? es un locura esto en realidad. Anteriormente estaba funcionando.
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 Miguel Angel

ayuda urgente por favor

Publicado por Miguel Angel (12 intervenciones) el 02/11/2015 13:43:31
No se entiende bien donde está el error. Pero, si dices que solo trae un registro y en el encendido de que un registro es una fila con datos. Estaría bien. Porque en la query la where tiene una condición que solo permitirá traer un registro que sea igual al id que pides.
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

ayuda urgente por favor

Publicado por aldo (824 intervenciones) el 02/11/2015 21:56:31
Hola Miguel angel fijate tengo estos registros y si filtra bien pero en el PgAdmin

Query:
especial

para la especialidad de gastro hay 2 registros pero solo trae uno solo a través del formulario..
Segui tambien la sugerencia de Xve, pero persite el problema.
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

ayuda urgente por favor

Publicado por yamil bracho (532 intervenciones) el 02/11/2015 22:05:09
Hola
Creo que el problema esta cuando haces

f(pg_fetch_array($row)>0)
{
while($select3 = @pg_fetch_array($row))
{
....

Con el primer if tienes el primer registro y cuando entras al while haces otro fetch asi que pierdes los valores que tenias en el primer registro en $row....

Espero que sea eso...

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

ayuda urgente por favor

Publicado por aldo (824 intervenciones) el 02/11/2015 22:06:51
si es eso efectivamente.
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

ayuda urgente por favor

Publicado por aldo (824 intervenciones) el 02/11/2015 22:05:43
Bueno creo que ya di con el bendito problema,
resulta que aqui:

no es
1
if(pg_fetch_array($row)>0)

sino
1
if($row>0)
pero recuerdan que en un post anterior les habia dicho que tenia un problema aqui? y me daba un error y yo lo solucione con:
[b]
1
if(pg_fetch_array($row)>0)
?

ahora expliquenme por favor cual es la problematica aqui?
ahora si esta trayendo los registros requeridos.

1
2
3
4
5
6
7
8
9
10
if($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'];
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 xve

ayuda urgente por favor

Publicado por xve (5520 intervenciones) el 03/11/2015 10:28:51
Hola Aldo, felicidades!!! has dado con el problema...

pg_fetch_array() devuelve un array de arrays con cada row... nunca devuelve un numero.

Tendrías que hacer algo así:
1
if(pg_num_fields($row)>0)
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

ayuda urgente por favor

Publicado por aldo (824 intervenciones) el 03/11/2015 17:32:56
Gracias Xve, lo probé y funciona, de todos modos a cualquier situacion, les escribo.
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