Foros del Web » Programando para Internet » PHP »

Extraño comportamiento del código PHP

Estas en el tema de Extraño comportamiento del código PHP en el foro de PHP en Foros del Web. Hola de nuevo, ahora tengo un amplio problema, y espero alguna alma caritativa me pueda ayudar. Presento un problema con cierto código y no he ...
  #1 (permalink)  
Antiguo 27/07/2013, 19:33
Avatar de kana_kanji2000  
Fecha de Ingreso: mayo-2013
Ubicación: Caracas
Mensajes: 15
Antigüedad: 11 años
Puntos: 0
Exclamación Extraño comportamiento del código PHP

Hola de nuevo, ahora tengo un amplio problema, y espero alguna alma caritativa me pueda ayudar. Presento un problema con cierto código y no he podido dar con el resultado. Esto es lo que hace: en un select list se escojen unas opciones, y de acuerdo a ellas muestre algo:
Código PHP:
Ver original
  1. if (isset($_POST['seleccion'])){
  2.     if ($_POST['seleccion'] == 'persona'){
  3. }
(la 'seleccion' es el nombre del select/list)
Código PHP:
Ver original
  1. }else
  2.     if ($_POST['seleccion'] == 'componente'){
  3.         echo "Paso 2.<br>";
  4.     } else
  5.     if ($_POST['seleccion'] == 'especialidad'){
  6.         echo "Paso 3.<br>";
  7.     } else
  8.     if ($_POST['seleccion'] == 'carrera'){
  9.         echo "Paso 4.<br>";
  10.     } else
  11.     if ($_POST['seleccion'] == ''){
  12.         echo "Arriba hay m&aacute;s opciones.<br>";
  13.     } else {
  14.         echo "Escoja una opci&oacute;n.<br>";
  15.     }
  16. }

El select de persona hace esto:
Código PHP:
Ver original
  1. <form name="form1" method="post" action="" class="cdr" >
  2.       <h3>Buscar Persona: </h3>
  3.           <p>
  4.             <input name="busca"  type="text" id="busqueda">
  5.             <input type="submit" name="Submit" value="buscar" />
  6.           </p>
  7.     </form>
  8.     <div align="center">
  9.     <?php
  10.     $busca="";
  11.     $busca=$_POST['busca'];
  12.     $conectar = pg_connect("host=localhost port=5432 dbname=proyecto user=postgres password=sistemas101");
  13.     if($busca!=""){
  14.     $busqueda=pg_query($conectar, "SELECT nombres, apellidos, cedula, genero, telefono, telfemergencia, correoelectronico from persona where nombres like '%".$busca."%'");
  15.     ?>
  16.     <p>
  17.     <table width="940" border="1" class="tab" align="center">
  18.     <tr>
  19.         <td width="150">Nombres</td>
  20.         <td width="150">Apellidos</td>
  21.         <td width="110">C&eacute;dula</td>
  22.         <td width="80">G&eacute;nero</td>
  23.         <td width="150">Tel&eacute;fono</td>
  24.         <td width="130">Telf. Emergencia</td>
  25.         <td width="130">Correo Electr.</td>
  26.     </tr>
  27.      
  28.     <?php
  29.     while($f=pg_fetch_array($busqueda)){
  30.         echo '<tr>';
  31.         echo '<td width="150">'.$f['nombres'].'</td>';
  32.         echo '<td width="150">'.$f['apellidos'].'</td>';
  33.         echo '<td width="110">'.$f['cedula'].'</td>';
  34.         echo '<td width="80">'.$f['genero'].'</td>';
  35.         echo '<td width="150">'.$f['telefono'].'</td>';
  36.         echo '<td width="130">'.$f['telfemergencia'].'</td>';
  37.         echo '<td width="130">'.$f['correoelectronico'].'</td>';
  38.         echo '</tr>';
  39.     }
  40.     }
  41.     ?>
  42.     </table>

Sin embargo, al cargar la página hecha, luego de pasar un valor de búsqueda, no pasa nada. Le he dado mil vueltas al asunto, ya creé la página aparte y sí funciona (hasta le he editado un bonito CSS), pero desde la página principal no muestra nada... ¿qué estaré haciendo mal?
  #2 (permalink)  
Antiguo 27/07/2013, 20:08
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Extraño comportamiento del código PHP

Es menos propenso a errores usar la estructura de control para estos casos:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $seleccion = isset($_POST['seleccion'] ? $_POST['seleccion'] : null;
  4.  
  5. switch ($seleccion)
  6. {
  7.     case 'persona':
  8.     // ..
  9.     break;
  10.     case 'componente':
  11.     // ..
  12.     break;
  13.     // ..
  14.     case null:
  15.         throw new InvalidArgumentException ("No hay seleccion");
  16.     Default:
  17.         throw new InvalidArgumentException ("Seleccion desconocida");
  18. }
__________________
Salu2!

Última edición por Italico76; 27/07/2013 a las 20:13
  #3 (permalink)  
Antiguo 28/07/2013, 05:38
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Extraño comportamiento del código PHP

Siempre que haya este tipo de problemas, da bastante igual que se postee el código HTML que genera el formulario, tablas, etc,etc. Lo que se necesita es lo que llega por POST y por GET.
Debes partir el problema en 2.A PHP, el HTML le da igual.PHP funciona a partir de los datos que le llegan en la request.Si esos datos llegan de un formulario, o de un programa, o una petición curl, o de donde sea, da igual, y sólo añade "ruido" a la resolución del problema.
Añade
Código PHP:
Ver original
  1. var_dump($_POST);
  2. var_dump($_GET);
al principio de tu código, y mira qué es lo que aparece.Si $_POST contiene lo que crees que contiene, postea aqui tanto el contenido de $_POST como el código que gestiona $_POST.
Si $_POST no contiene lo que crees, el problema está en el HTML.

Todo esto lo digo porque, por lo general, leer líneas y líneas de HTML que no aportan nada al problema, disminuye las posibilidades de que alguien eche una mano.
  #4 (permalink)  
Antiguo 28/07/2013, 09:13
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Extraño comportamiento del código PHP

Cita:
Iniciado por dashtrash Ver Mensaje
Siempre que haya este tipo de problemas, da bastante igual que se postee el código HTML que genera el formulario, tablas, etc,etc. Lo que se necesita es lo que llega por POST y por GET.

...

Todo esto lo digo porque, por lo general, leer líneas y líneas de HTML que no aportan nada al problema, disminuye las posibilidades de que alguien eche una mano.
+1

Y cuando sera que se pone como regla que no deben postear 80% de HTML en el foro de PHP ?
__________________
Salu2!
  #5 (permalink)  
Antiguo 28/07/2013, 13:05
Avatar de kana_kanji2000  
Fecha de Ingreso: mayo-2013
Ubicación: Caracas
Mensajes: 15
Antigüedad: 11 años
Puntos: 0
Exclamación Respuesta: Extraño comportamiento del código PHP

A ver... ¿servirá qué pase unas capturas de pantalla con los resultados? Avisen si es así.
Por cierto, ya probé el switch-case, y la respuesta fue la misma, no muestra nada, que es el problema que tengo. Y si lo desean, paso el código original que sí funciona.
¿y sobre lo que hace esto:
if (isset($_POST['seleccion'])){
if ($_POST['seleccion'] == 'persona'){
}
?

Desde acá cargo el código de buscar por persona, y ese es el primero que falla. Los demás también fallan.

Última edición por kana_kanji2000; 28/07/2013 a las 13:06 Razón: Agregar más info...
  #6 (permalink)  
Antiguo 28/07/2013, 13:38
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Extraño comportamiento del código PHP

re-edit , cual es el error que al buscar no te aparece nada?

Código PHP:
Ver original
  1. $conectar = pg_connect("host=localhost port=5432 dbname=proyecto user=postgres password=sistemas101");
  2. echo pg_last_error($conectar );

prueba y dinos que imprimio si es que imprimio algo

Código PHP:
Ver original
  1. $busqueda=pg_query($conectar, "SELECT nombres, apellidos, cedula, genero, telefono, telfemergencia, correoelectronico from persona where nombres like '%".$busca."%'");
  2.  
  3. if (!$busqueda) {
  4.   echo "Ha ocurrido un error";
  5.   exit;
  6. }


Cita:
Iniciado por kana_kanji2000 Ver Mensaje
A ver... ¿servirá qué pase unas capturas de pantalla con los resultados? Avisen si es así.
Por cierto, ya probé el switch-case, y la respuesta fue la misma, no muestra nada, que es el problema que tengo. Y si lo desean, paso el código original que sí funciona.
¿y sobre lo que hace esto:
if (isset($_POST['seleccion'])){
if ($_POST['seleccion'] == 'persona'){
}
?

Desde acá cargo el código de buscar por persona, y ese es el primero que falla. Los demás también fallan.
podria ser el error $_POST['seleccion'] que fuera $_POST['busca'] por casualidad? no entiendo muy bien el script php de donde es llamado en que archivo esta etc... aclaralo

Última edición por webankenovi; 28/07/2013 a las 13:55
  #7 (permalink)  
Antiguo 28/07/2013, 20:21
Avatar de kana_kanji2000  
Fecha de Ingreso: mayo-2013
Ubicación: Caracas
Mensajes: 15
Antigüedad: 11 años
Puntos: 0
Exclamación Respuesta: Extraño comportamiento del código PHP

A webankenovi: ya tengo algo así:
Código PHP:
Ver original
  1. $postgres = pg_connect("host=localhost port=5432 dbname=proyecto user=postgres password=sistemas101") or die ("No se pudo conectar a la base de datos");
  2.    
  3. if ($postgres == FALSE)
  4.     echo "No se pudo conectar";
como no me muestra el mensaje sé que funciona (aunque puedo especificar si funciona o no, se vería feo en la página principal).

Y el resultado se ve así:
Código PHP:
Ver original
  1. <?php
  2. $busca="";
  3. $busca=$_POST['busca'];
  4. $conectar = pg_connect("host=localhost port=5432 dbname=proyecto user=postgres password=sistemas101");
  5. if($busca!=""){
  6. $busqueda=pg_query($conectar, "SELECT idpersona, nombres, apellidos, cedula, genero from persona where nombres like '%".$busca."%' or apellidos like '%".$busca."%'");
  7. ?>
  8. (...)
  9. <?php
  10.  
  11. while($f=pg_fetch_array($busqueda)){
  12.     echo '<tr>';
  13.     echo '<td width="100">'.$f['idpersona'].'</td>';
  14.     echo '<td width="150">'.$f['nombres'].'</td>';
  15.     echo '<td width="150">'.$f['apellidos'].'</td>';
  16.     echo '<td width="150">'.$f['cedula'].'</td>';
  17.     echo '<td width="150">'.$f['genero'].'</td>';
  18.     echo '</tr>';
  19. }
  20. }
  21. ?>

La variable $busca recibe primero un valor vacío qué llenar en el campo de búsqueda ($_POST['busca']), si el valor no está vacío, realice una búsqueda en postgres, llene los campos de las tablas, haga un array con los campos recibidos y que los muestre.

Algunos resultados recibidos:
Si busco por el nombre "Cesar" me sale esto:
idPersona Nombres Apellidos Cédula Género
8 Cesar Oviedo Ortega Rebolledo 17986999 M
1 Julio Cesar Suniaga Aristimuño 6950898 M

O si busco "Julio" sale:

idPersona Nombres Apellidos Cédula Género
1 Julio Cesar Suniaga Aristimuño 6950898 M

Pero el código desde la página del proyecto carga la búsqueda, y al escribir algo, ¡simplemente desaparece!

¿Alguien desea cargar las tablas para probar? Acá les paso algunos datos:
Código SQL:
Ver original
  1. idPersona   nombres apellidos   cedula  genero   telefono   telfemergencia    correoelectronico
  2. 1;"Julio Cesar";"Suniaga Aristimuño";6950898;"M";"0414-7842108";"0416-8806910";"[email protected]"
  3. 2;"Ramon";"Figuera Guevara";9812322;"M";"0424-8565143";"0282-4578704";"[email protected]"
  4. 3;"Jesus Abraham";"Valera Tovar";13533553;"M";"0416-7101494";"0291-6531843";"[email protected]"
  5. 4;"Lemen Alexis";"Gonzalez Lista";15845433;"M";"0426-5827399";"0281-2819550";"[email protected]"
  6. 5;"Victor Hugo";"Bravo Gil";14764677;"M";"0426-5832804";"0416-7069029";"[email protected]"
  7. 6;"Jakeline del Valle";"Torres Valer";13759344;"F";"0424-1394174";"0414-3152460";"[email protected]"
  8. 7;"Nayindy Nayely";"Molero Duarte";14475497;"M";"0414-2154826";"0412-9990094";"[email protected]"
  9. 8;"Cesar Oviedo";"Ortega Rebolledo";17986999;"M";"0412-8842128";"0426-4836247";"[email protected]"
  10. 9;"Roberto Clemente";"Aponte Hernandez";16572243;"M";"0416-4065282";"0412-9060917";"[email protected]"
  11. 10"Arcides Daniel";"Lugo Rangel";8169572;"M";"0426-5368548";"0426-5368558";"[email protected]"

Ahora bien, nada más necesito resolver esto para completar el proyecto, con eso las otras partes serán fáciles de resolver porque van por el mismo camino.

P.D.: ¿será cierto que con "var_dump($_POST)" funcionará?
  #8 (permalink)  
Antiguo 29/07/2013, 08:05
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Extraño comportamiento del código PHP

OK entonces tu duda se basa en que no busca nada ok , pero que tiene que ver el script php ? que pusiste por que no lo comprendo .

var_dump($_POST); No te va a resolver nada , solo es para testear que llegaron los datos correctos

prueba con una consulta mas simple

$busqueda=pg_query($conectar, "SELECT * from persona where nombres = '".$busca."' ");

y si , tu haces esto

if ($postgres == FALSE)
echo "No se pudo conectar"; pero no es lo mismo que esto echo pg_last_error($conectar );

en tu caso siempre mostrara no se pudo conectar , mientras que en el otro caso te mostrara el error generado, pero bueno si no te falla entonces no sera de la conexion
  #9 (permalink)  
Antiguo 29/07/2013, 11:52
Avatar de kana_kanji2000  
Fecha de Ingreso: mayo-2013
Ubicación: Caracas
Mensajes: 15
Antigüedad: 11 años
Puntos: 0
Exclamación Respuesta: Extraño comportamiento del código PHP

Cita:
Iniciado por webankenovi Ver Mensaje
OK entonces tu duda se basa en que no busca nada ok , pero que tiene que ver el script php ? que pusiste por que no lo comprendo .
Puse todos los datos necesarios para mostrar que el script sí carga, con algunos datos compartidos.

Cita:
Iniciado por webankenovi Ver Mensaje
var_dump($_POST); No te va a resolver nada , solo es para testear que llegaron los datos correctos

prueba con una consulta mas simple

$busqueda=pg_query($conectar, "SELECT * from persona where nombres = '".$busca."' ");
No puedo ejecutarlo porque mostrará más datos de los requeridos, y los de idcargo, idcomponente, idgrado, idespecialidad no son importantes sin los campos claves (los de sus respectivas tablas). Sólo necesito los ya mencionados: nombres, apellidos, cédula, género, teléfonos (uno u ambos) y correo-e. Filtradas las filas con respecto a la consulta pasada, en este caso, por uno de los nombres.

Cita:
Iniciado por webankenovi Ver Mensaje
y si , tu haces esto

if ($postgres == FALSE)
echo "No se pudo conectar"; pero no es lo mismo que esto echo pg_last_error($conectar );

en tu caso siempre mostrara no se pudo conectar , mientras que en el otro caso te mostrara el error generado, pero bueno si no te falla entonces no sera de la conexion
Todavía sigo probando...
  #10 (permalink)  
Antiguo 29/07/2013, 11:57
Avatar de kana_kanji2000  
Fecha de Ingreso: mayo-2013
Ubicación: Caracas
Mensajes: 15
Antigüedad: 11 años
Puntos: 0
Información Respuesta: Extraño comportamiento del código PHP

Saludos a tod@s, les comento y reporto que llevo un avance, aunque no es la solución que busco, la cual es esta:
Creo un script de vista que llame al controlador PHP, y este controlador ejecute las consultas a la base de datos y se vuelque sobre el anterior script de vista.

Hasta ahora funciona, pero usar más de un archivo no era mi idea, yo quería y aún quiero que se vuelque sobre el primer archivo que uso, el del select/list principal. Todavía sigo probando algunas opciones.

Etiquetas: postgresql, programacion, programacionweb
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 23:34.