Foros del Web » Programando para Internet » PHP »

Problema con PHP

Estas en el tema de Problema con PHP en el foro de PHP en Foros del Web. Saludos, hace poco empeze con un pequenio sistema de base de datos en apache, php y postgresql, todo va bien, instale todo, y todo funciona, ...
  #1 (permalink)  
Antiguo 25/02/2005, 11:43
Avatar de c4r1o5  
Fecha de Ingreso: febrero-2005
Mensajes: 81
Antigüedad: 12 años, 9 meses
Puntos: 1
Problema con PHP

Saludos, hace poco empeze con un pequenio sistema de base de datos en apache, php y postgresql, todo va bien, instale todo, y todo funciona, php se onecta con postgres y todo bien, pero al hacer una pequenia pagina de prueba no hace nada cuando clickeo algun boton, ya rebise el php.ini de cabo a rabo y el codigo, no veo que pued ser, si alguien pudiera ayudarme se lo agradeceria mucho. Anexo el codigo a continuacion. La variable action que paso a la pagina determina que accion se hara (altas, bajas, consultas, etc)

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Tipo de pago</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?
    
echo "$action";
    include(
"../data/functions.php");
    
$conn=conexion(); //Se realiza la conexión con la base de datos
    
    
if (isset($enviar)){
        if (empty(
$txtId) || empty($txtDescrip))
            echo 
"<font color=\"Red\"><h4 align=\"center\">Existen campos vacíos</h4></font>";
        else{
            
$query="insert into tipopago values ($txtId,'$txtDescrip')";
            
$result=pg_exec($conn,$query);
            if (
$result){
                echo 
"<font color=\"Green\"><h4 align=\"center\">Los datos han sido guardados</h4></font>";
                unset(
$txtId,$txtDescrip);
            }
            else
                echo 
"<font color=\"Red\"><h4 align=\"center\">No se han podido guardar los datos</h4></font>";
        }
    }
?>

<table align="center" width="540" border="0">
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><div align="justify">
        <?    echo "Tipo de pago : ";
            if (
$action==1){ // En el caso que sea una alta
                
$id_prox=next_id(TipoPago,id_tipopago); 
                echo 
"<input size=\"3\" name=\"txtId\" maxlength=\"5\" align=\"center\" width=\"5\" value=\"$id_prox\" disabled>";
            } else if (isset(
$txtDescrip)){ 
                    
$query="select id_tipopago from tipopago where descripcion like '$txtDescrip'";
                    
$result=pg_exec($conn,$query);
                    
$rows=pg_num_rows($result);
                }
                else{
                    
$rows[0]=' ';
                     echo 
"<input size=\"3\" name=\"txtId\" maxlength=\"5\" align=\"center\" width=\"5\" value=\"$rows[0]\" disabled>";
                }
        
?>
        </div></td>
  </tr>
  <tr>
    <td><div align="justify">
        <?    echo "Descripción : ";
            if (
$action==1){ // En el caso que sea una alta
                
echo "<input size=\"45\" name=\"txtDescrip\" maxlength=\"45\" align=\"center\" width=\"45\" >";
            } else if (
$action==2){
                echo 
"<select name=\"txtDescrip\" >";
                    echo 
"<option value=\"\">Tipos de pago ...</option>";
                    
$query="select * from tipopago order by id_tipopago asc";
                    
$result=pg_exec($conn,$query);
                    
$rows=pg_num_rows($result);
                    for(
$i=0;$i<$rows;$i++){
                        
$reg=pg_fetch_row($result,$i);
                        
$Descripcion=$reg[1];
                        echo 
"<option value=\"$Id\">$Descripcion</option>";
                    }
                echo 
"</select>";
            }                    
        
?>        
    </div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
</table>

<table align="center" width="540" border="0">
  <tr>
    <td><div align="center">
        <? if ($action==1){ // En el caso que sea una alta
                
echo "<input name=\"enviar\" value=\"Agregar\" align=\"center\" type=\"submit\">";
        
?>

    </div>
    </td>
    <td><div align="center">
        <?
          
if ($action==1){ // En el caso que sea una alta
                
echo "<input name=\"cancelar\" value=\"Cancelar\" align=\"center\" type=\"submit\">";
           }
        
?>
        
    </div>
  </tr>
</table>

<p>&nbsp;</p>
</body>
</html>
  #2 (permalink)  
Antiguo 25/02/2005, 11:54
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

2 detalles:

1.- ¿Donde esta la etiqueta HTML form?

2.-
Código PHP:
if (isset($enviar)){ 
Solo funciona si la directiva register_globals esta a on en el php.ini. Lo mejor es usar el array superglobal correspondiente al metodo de envio: $_GET o $_POST:
Código PHP:
if (isset($_POST['enviar'])){ 
En una de las primeras FAQs del foro encontraras mas explicaciones sobre el register_globals.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 28/02/2005, 09:58
Avatar de c4r1o5  
Fecha de Ingreso: febrero-2005
Mensajes: 81
Antigüedad: 12 años, 9 meses
Puntos: 1
Muchas gracias, olvidaba todo eso, pero una ultima pregunta, cuando pongo $_POST['txtId'] y $_POST['txtD'] en algun echo o if (p.e. if (empty($_POST['txtId']) || empty($_POST['txtDescrip']))) la pagina se muestra vacia o en blanco, que puede ser. De nuevo gracias.
  #4 (permalink)  
Antiguo 28/02/2005, 10:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues sucede por qué no se cumple tu condición .. comprueba su valor (de esas variables) antes de atacar tu IF() para corroborar si tienes problema con la lógica del IF() o bien con el valor que deaban tener estas ..

como te comentó josemi . .no se vé en ese código que pusistes las etiquetas <form> .. de un formulario para englobar ahí a todos esos elmentos de formualrio que usas (campos) .. tampoco se vé el "method" del formulario (<form> ..) si usas "$_POST" tendrás que usar method="post" en la definición de tu formulario .. sino será ausmido que se envia por GET ..

Un saludo,
  #5 (permalink)  
Antiguo 01/03/2005, 08:24
Avatar de c4r1o5  
Fecha de Ingreso: febrero-2005
Mensajes: 81
Antigüedad: 12 años, 9 meses
Puntos: 1
Saludos de nuevo y gracias por sus aportaciones, el codigo con las correciones que me habian lo pongo a continuacion pero notese que cuando se hace click en el boton enviar se guardan los valores delos cuadros de texto en variables que son mostradas despues, pero no muestra nada, al parecer pierde los valores, al igual que en la s validaciones if que comentaba, de nuevo agradecería mucho su ayuda.

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Tipo de pago</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?
    
include("../data/functions.php");
    
$conn=conexion(); //Se realiza la conexión con la base de datos
    
    
echo "$txtId";
    echo 
"$txtDescrip";
    
    if (isset(
$_REQUEST['enviar'])){
        echo 
"Hiciste click";
           
            
$txtId=$_POST['txtId'];
             
$txtDescrip=$_POST['txtDescrip'];
                echo 
$_POST['txtId'];
                echo 
$_POST['txtDescrip'];
    }


?>

<table align="center" width="600" border="0">
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><div align="justify">
        <form action="./tipopago.php?action=1" method="post">
        <?    echo "Tipo de pago : ";
            if (
$action==1){ // En el caso que sea una alta
                
$id_prox=next_id(TipoPago,id_tipopago); 
                echo 
"<input size=\"3\" name=\"txtId\" maxlength=\"5\" align=\"center\" width=\"5\" value=\"$id_prox\" disabled>";
            } else { 
//En el caso que sea una baja, cambio o consulta
                
if (isset($txtDescrip)){ 
                    
$query="select id_tipopago from tipopago where descripcion like '$txtDescrip'";
                    
$result=pg_exec($conn,$query);
                    
$rows=pg_num_rows($result);
                }
                else
                    
$rows[0]=' ';
                 echo 
"<input size=\"3\" name=\"txtId\" maxlength=\"5\" align=\"center\" width=\"5\" value=\"$rows[0]\" disabled>";
            }
        
?>
        </form>
        </div></td>
  </tr>
  <tr>
    <td><div align="justify">
        <form action="./tipopago.php?action=1" method="post">
        <?    echo "Descripción : ";
            if (
$action==1){ // En el caso que sea una alta
                
echo "<input size=\"45\" name=\"txtDescrip\" maxlength=\"45\" align=\"center\" width=\"45\" >";
            } else if (
$action==2){
                echo 
"<select name=\"txtDescrip\" >";
                    echo 
"<option value=\"\">Tipos de pago ...</option>";
                    
$query="select * from tipopago order by id_tipopago asc";
                    
$result=pg_exec($conn,$query);
                    
$rows=pg_num_rows($result);
                    for(
$i=0;$i<$rows;$i++){
                        
$reg=pg_fetch_row($result,$i);
                        
$Descripcion=$reg[1];
                        echo 
"<option value=\"$Id\">$Descripcion</option>";
                    }
                echo 
"</select>";
            }                    
        
?>        
        </form>
    </div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
</table>

<table align="center" width="600" border="0">
  <tr>
    <td><div align="center">
        <form action="./tipopago.php?action=1" method="post">
        <? if ($action==1){ // En el caso que sea una alta
                
echo "<input name=\"enviar\" value=\"Agregar\" align=\"center\" type=\"submit\">";
           }
        
?>
        </form>
    </div>
    </td>
    <td><div align="center">
        <form action="./tipopago.php?action=1" method="post">
        <? if ($action==1){ // En el caso que sea una alta
                
echo "<input name=\"cancelar\" value=\"Cancelar\" align=\"center\" type=\"submit\">";
           }
        
?>
        </form>
    </div>
  </tr>
</table>
<p>&nbsp;</p>
<? 
?>
</body>
</html>
  #6 (permalink)  
Antiguo 01/03/2005, 09:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tienes algunos detalles ...

Si tu haces:
$txtDescrip=$_POST['txtDescrip'];

siempre será TRUE:
if (isset($txtDescrip)){

Pues defines la variable más arriba .. En su defecto tendrías que usar emtpy() para preguntar por "su existencia y valor". Así que preguntarías por "si no está vacía o de contenido NULL o o" .. entonces hacer tal cosa ...

if (!empty($txtDescrip)){

o mejor

if (isset($_POST['txtDescrip'])){

directamente .. o con empty() si te interesa saber si tiene valor o no ...


Por lo demás .. hacer esto:
<form action="./tipopago.php?action=1" method="post">
<? echo "Tipo de pago : ";
if ($action==1){ // En el caso que sea una alta

implica que ese "action" (variable) llega por GET a tu script .. no lo asumas como global. Pero .. lo ideal es que propagases ese dato también por POST .. es decir .. incluir una variable tipo hidden de nombre "action" y valor .. ese 1 o lo que corresponda según la acción a realizar. Sino, te podrá dar problemas en configuraciones con "register_globals a OFF".


Un saludo,
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 15:41.