Comunidad de diseño web y desarrollo en internet online

Problemas para recolectar una variable GET o POST

Citar            
MensajeEscrito el 17 Ene 2012 04:23 am
Hola amigo,

Tengo un par de días tratando de entender por que mi archivo editar.php no agarra una variable enviada desde un form, el punto es el siguiente.

El código se transfirió a un nuevo servidor donde se instalaron las aplicaciones PHP y Apache donde debe funcionar la pagina, el punto es que al momento de editar un registro me marca un error de servidor en el navegador no me muestra nada, pero si debugeo me dice que hay un error 500.

Ya a revisado una y tras otra y no puedo encontrar el problema yo se que el código que hice funciona por que me funciono en mi servidor de hosting, no se si tenga que ver la versión o algo. Aqui le pongo el codigo que huso en el archivo editar.php

Desde la vista del registro utilizo la url con un parametro ID.

Código PHP :

<a href="editar.php?id=<?php echo $row['id_user']; ?>" id="Editar" class="tooltip">Editar</a>


Este archivo es editar.php

Código PHP :

<?php if(isset($_POST['submit']))
{   
      //Conectamos con la BD   
      include('conexion.php');
       $conexion = ConectarseBD();
      
      //Varibles para traer la informacion que se actualizara en la tabla.
      $id = $_POST['id'];
      
      //Varibles para traer la informacion que se insertara en la tabla.
      $nombre =  $_POST['name_user'];
      $apellidos  =  $_POST['last_name'];
      $correo  =  $_POST['email'];
      
      //Acutalizar la informacion el la tabla. 
      $query = ("UPDATE  `users` SET  `name` =  '$nombre', `last_name` =  '$apellidos', `email` =  '$correo' WHERE  `id_user` =$id") or die ('Error de actualizacion');
      echo "<script> window.alert('Actualizacion exitosa!!'); location.href='registrar.php';</script>";
}
      else
{
   if(isset($_POST['id']))
   {
      // Tomo el dato del ID del Link
      $clave = $_POST['id'];
      include('conexion.php');
      $conexion = ConectarseBD();
      $sql = "SELECT * FROM users where id_user= $clave" or die ("Error de consulta"); ?>
<!DOCTYPE html>
   <html xmlns="http://www.w3.org/1999/xhtml"><head>
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
         <title>Registrar usuarios</title>
            <!-- Stylus -->
            <link href="../css/style_meqcer.css" rel="stylesheet" type="text/css" />
            <link rel="shortcut icon" href="../img/favicon.ico">
            <!-- Media -->
             <script language="javascript" type="text/javascript" src="niceforms.js"></script>
            <link rel="stylesheet" type="text/css" media="all" href="niceforms-default.css" />
            <script language="JavaScript" type="text/javascript"> 
<!-- 
function Confirmar(frm) { 

var borrar = confirm("Desea guardar estos ajustes?"); 

return borrar; //true o false 

} 
//--> 
</script> 
      </head>
   <body>
       <div id="site">
           <div id="site-interior">
              <div id="header">
                   <div class="col-1">
                       <div class="logo"><a href="http://test.meqcer.com/admin"><img src="../img/logo.jpg" width="275" height="99"></a></div>
                    </div>
                    <div class="col-1r">
                    <div align="right" class="user">
                      <img src="../img/user_business_32.png" width="32" height="32">&nbsp;&nbsp;
                      <?php //Imprime la variable de sesion o usuario cuanto este este logueado, $_SESSION['user'] ?>
                     <?php  if (isset($_SESSION['k_email'])) 
                     {
                        echo '<a style="color:#000;" href="logout.php">{Salir &nbsp;'.$_SESSION['k_email'].'}</a>';
                     }
                     ?>
                        </div>
                        <p id="blurb-title">CMS Cat&aacute;logo</p>
                    </div>
                    <div class="clear"></div>
               </div>
                <div class="clear"></div>
                <p align="right"><a style="color:#000;" href="http://www.wconexion.com.mx/meqcer/admin/registrar.php">Usuarios</a>&nbsp;&nbsp;&nbsp;<a style="color:#000;" href="http://www.wconexion.com.mx/meqcer/admin/catalog/index.php">Cat&aacute;logo</a>&nbsp;&nbsp;&nbsp;<a style="color:#000;" href="http://www.wconexion.com.mx/meqcer/admin/newslletter/index.php">Bolet&iacute;n Electr&oacute;nico</a></p>
              <div id="menu-nav" style="padding-top:10px; padding-right:15px; color:#FFF;" align="right">
                 <table cellpadding="0" cellspacing="0" border="0">
                   <tr>
                       <td width="40"><a href="index.php" id="Ir a inicio" class="tooltip"><img src="../img/home_back_32.png" width="32" height="32"></a></td>
                    </tr>
                </table>
            </div>
                <div class="clear"></div>
                <div align="right" style="padding-top:3px;"><img src="../img/cintilla.jpg" width="398" height="2"></div>
                <div style="margin-top:15px;" id="wrapper">
                     <div class="inventario">
                        <p id="blurb">Editar usuario</p>
                        <div class="clear"></div>
                       <div class="col-1" style="font-size:14px; font-weight:bold; height:541px; background-image:url(../img/bg_registro.jpg); background-repeat:no-repeat; margin-left:250px;">
                       <?php while ($row = mysql_fetch_array($sql)) {?>
                       <form name="form" method="post" action="editar.php"  class="niceform">
                       <table  cellpadding="0" cellspacing="0" border="0" width="424">
                             <tr>
                               <td align="right">&nbsp;</td>
                               <td>&nbsp;</td>
                               <td>&nbsp;</td>
                          </tr>
                             <tr>
                               <td colspan="3" align="right">&nbsp;</td>
                          </tr>
                             <tr>
                               <td align="right">&nbsp;</td>
                               <td>&nbsp;</td>
                               <td>&nbsp;</td>
                          </tr>
                             <tr>
                               <td width="108" align="right">Nombre:</td>
                               <td width="10">&nbsp;</td>
                          <td width="151"><input type="hidden" name="id" value="<?php echo $row['id_user']; ?>"><input type="text" name="name_user" size="20" maxlength="20" value="<?php echo $row['name']; ?>" /></td>
                            </tr>
                            <tr> 
                              <td>&nbsp;</td>
                              <td>&nbsp;</td>
                              <td>&nbsp;</td>
                            </tr>
                            <tr>
                               <td align="right">Apellidos:</td>
                               <td>&nbsp;</td>
                            <td><input type="text" name="last_name" size="20" maxlength="20" value="<?php echo $row['last_name']; ?>" /></td>
                            </tr>
                            <tr>
                              <td>&nbsp;</td>
                              <td>&nbsp;</td>
                              <td>&nbsp;</td>
                            </tr>
                            <tr>
                              <td align="right">E-mail:<br>
                                <span style="font-size:9px;">(Se usara como login)</span></td>
                              <td>&nbsp;</td>
                              <td><input type="text" name="email" size="20" maxlength="40" value="<?php echo $row['email']; ?>" /></td>
                            </tr>
                            <tr>
                              <td>&nbsp;</td>
                              <td>&nbsp;</td>
                              <td>&nbsp;</td>
                            </tr>
                            <tr>
                              <td colspan="3" align="center"><input onClick='return Confirmar(this.form)' type="submit" name="submit" id="submit" value="Guardar cambios &gt;&gt;" /></td>
                            </tr>
                            <tr>
                              <td colspan="3" align="center">&nbsp;</td>
                            </tr>
                            <tr>
                              <td colspan="3" align="center">&nbsp;</td>
                            </tr>
                            <tr>
                              <td colspan="3" align="center">&nbsp;</td>
                            </tr>
                            <tr>
                              <td colspan="3" align="center">&nbsp;</td>
                            </tr>
                            <tr>
                              <td colspan="3" align="center">&nbsp;</td>
                            </tr>
                            <tr>
                              <td colspan="3" align="center">&nbsp;</td>
                            </tr>
                            <tr>
                              <td align="right" colspan="3" style="padding-right:10px;"><a href="javascript:history.back()">Regresar</a></td>
                            </tr>
                         </table> 
                       </form>
                        <? } ?>
                       </div>
<div class="clear"></div>
                  </div>
                  <div class="clear"></div>
              </div>
            </div>
        </div>
        <div id="footer">&nbsp;</div>
   </body>
</html>
<?php
   }
}
?>


Revisando bien no me esta arrastrando la variable $_POST['id'] y cual es la diferencia entre usar $_GET, $_POST o $_RECUEST.

Espero puedan ayudarme, :(

saludos y gracias.

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

chrome
Citar            
MensajeEscrito el 17 Ene 2012 12:13 pm
Los parámetros que pones en una URL son GET y los de un formulario son POST (dicho a lo bruto y pa'que se entienda).

Como el parámetro id lo estás queriendo pasar en la URL, entonces debes recogerlo con $_GET['id']

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 17 Ene 2012 02:22 pm
Gracias por tu respuesta DriverOp

Muy bien ya entiendo bien el concepto, gracias por otro lado ya probe usando el $_GET["id"] pero a un así me sigue marcando error, en vista del navegador aparece en blanco pero en el bug dice que hay un error 500 Server.

Estoy probando con un browser de Firefox, en Chrome me muestra un error en pantalla.


Pero como te comento, no se si sea la version del php en la que esta instalado este servidor o no tiene nada que ver?

La version muestra que es PHP V. 5.6
MySql V. 5.0

Saludos y gracias.

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

chrome
Citar            
MensajeEscrito el 17 Ene 2012 04:09 pm
Pregunto: ¿el script detalles.php es el único que usa base de datos?.

Porque probando tu servidor, veo que el único script que causa error es cuando quieres acceder a detalles.php con o sin parámetros.

A propósito, el servidor es IIS 6.0 (Windows).

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 17 Ene 2012 04:17 pm
y cual es el codigo de detalles.php?? por que solo vemos el resultado pero hay que ir al origen

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Ene 2012 04:29 pm
tuadmin:
Está en el primer post.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 17 Ene 2012 04:29 pm
A mi me pasó algo similar y la única solución fue sacar el formulario de la tabla.

PERO, es que el error no es ese, el error es que no usas GET en tu script y aun así le pasas el parámetro GET.

$_REQUEST es un array superglobal de PHP que guarda temporalmente todas las variables pasadas hacia la página por cualquiera de los 2 métodos (get o post)

Lo que veo es que quieres usar el mismo archivo para actualizar los datos y para editarlos. El problema ha de ser la forma de manejar los datos. Pero sin conocer el resto del sitio es difícil diagnosticar.

Por ElSiniestro

Claber

285 de clabLevel


1 articulo

Genero:Masculino  

Alguien que Ayuda

chrome
Citar            
MensajeEscrito el 17 Ene 2012 05:07 pm
Gracias a todos por sus respuestas,

DriverOp: La vdd según el servidor debe correr en Apache pero no se como esta configurado el servidor dado que es un compartido ademas de que manejan otras aplicaciones que estan en .NET. Y no hay varios archivos que usan conexion PHP y consultas lo raro de esto es que solo es cuando mandas un parametro por url

Código PHP :

<a href="http://test.meqcer.com/admin/editar.php?id=<?php echo $row['id_user']; ?>" id="Editar" class="tooltip">Editar</a>


Otra cosa estoy revisando el Bug con Firefox y miren lo que me arroja al mandar el parametro a editar.php

Esta es la pantalla de donde hago la llamada y el archivo se llama registrar.php


Y una ves dado clic esto es lo que bugea Firefox


Tal ves ahi entra lo que comentas DriverOp de que si usa servidor IIS

Elsiniestro: Realmente ya lo hice asi como mencionas editar.php lo que hace es que entra con el parametro ID y llena los campos del formulario para despues actualizalo una ves dado clic en guardar entra de nuevo a editar.php actualiza y redirecciona a registrar.php. El parametro $_GET ya me lo habia explicado DriverOp, pero a un asi no jala.

Tuadmin: Asi es amigo el codigo de editar.php lo muestro arriba.

Gracias a todos

Saludos,

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

chrome
Citar            
MensajeEscrito el 17 Ene 2012 05:14 pm
kakashi2000:
Te propongo que hagas un script php en el cual le vas a ir colocando de a poco el código de alguno de los scripts que te causan problemas.

Mi sospecha es que el error lo provoca la conexión a la base de datos. Pero esto solo puedes probar tú.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 17 Ene 2012 05:40 pm
Gracias DriverOp, lo estare revisando asi y le comentos

saludos

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

chrome
Citar            
MensajeEscrito el 17 Ene 2012 05:42 pm
Parece ser un caso complicado, un error 500 es un error de configuración del servidor, por lo que no creo que en realidad el problema sea de tu aplicación. Si el servidor esta corriendo .NET y apache al mismo tiempo entonces la cosa se vuelve complicada, sería bueno que te aseguraras si esta corriendo dos servicios web (IIS y Apache) al mismo tiempo, y si lo hace comprobar en qué puerto esta corriendo cada uno.

En el caso de que tengas a Apache corriendo en un puerto diferente al 80, es posible que tengas que cambiar las url de tu aplicación.

Las variables post normalmente las envían los formularios, pero solo cuando has colocado la propiedad method="post", las variables get son las que se ven en los enlaces ?variable=valor&otravariable=valor2. El arreglo $_REQUEST almacena ambos tipos de variables.

Por último, un detalle, mencionaste que esta corriendo en PHP 5.6, pero solamente existe hasta PHP 5.3, no se si te habrás equivocado en el número de versión.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 17 Ene 2012 07:18 pm
Hola Odin, gracias por tu respuesta

Al parecer puede ser eso, pero que si el servidor esta en IIS estuve revisando en el sitio si había algún problema al correr códigos PHP en un servidor IIS según esto dicen que no, solo hay que decirle a IIS que ejecute extensiones .php.

Según a donde veo si esto tuviera conflicto entre dos plataformas, prácticamente el sitio no operaria ya que los de mas archivos del sitio están en php y tiene consultas, creaciones etc y funciona muy bien.

Por las versiones si perdón me equivoque je.

Gracias por tu apoyo

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

chrome
Citar            
MensajeEscrito el 18 Ene 2012 04:46 am
Hola a todos !POR FIN ENTONTRE EL PROBLEMA! :D

El error no estaba en el archivo editar.php, si no en el registrar.php al momento de querer mandar la variable mediante la url, la ruta lo hacia completa con http://... y eso ocaciona el error.

Originalmente esteba asi:

Código PHP :

<a href="http://test.meqcer.com/admin/editar.php?id=<?php echo $row['id_user']; ?>" id="Editar" class="tooltip">Editar</a>


Notese que la ruta tomo http://... lo que ocaciona el error por el server intenta resolver toda la URL.

Debe quedar asi:

Código PHP :

<a href="editar.php?id=<?php echo $row['id_user']; ?>" id="Editar" class="tooltip">Editar</a>


Y asi funciona correctamente

Que ironia no? :lol:

Siempre pasa este tipo de cosas.

Gracias a todos por su apoyo.

Saludos

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

chrome
Citar            
MensajeEscrito el 18 Ene 2012 12:24 pm
Eso no tiene sentido...

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 18 Ene 2012 02:59 pm
es culpa del IIS, bueno no toda la culpa, ejej, es que hay que configurado :)

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 18 Ene 2012 04:04 pm
Hola DriverOp y Tuadmin

:nif: Pues que les podre decir, primeramente hice lo que DriverOp comenta tratarn de meter el codigo poco a poco y vi que no estaba funcionando, U_U pero me di cuenta por que tambien tengo la opcion de eliminar registro.

Y el codigo que tiene en el archivo eliminar.php es casi el mismo que el de editar.php los dos usan para atrapar la variable el $_GET['id'] y me dije por que este no truena, entonces revise bien y vi que la url solo venia el nombre del archivo al que apunta y no toda la url (http://...).

Lo cambie y no me arrojo error ni siquiera el error 500 (y) , la vdd que no se que como esque IIS interpreta esa URL.

El provedor comenta que tiene IIS por que existe otra aplicacion pero que no afecta con Apache lo que me quedo no muy claro es que decia que corria en el mismo puerto :?

Gracias y saludos

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

firefox
Citar            
MensajeEscrito el 18 Ene 2012 05:36 pm
Eso tampoco tiene sentido. Dos programas no pueden estar escuchando en el mismo puerto TCP al mismo tiempo en la misma máquina. Para mi que tu proveedor te está sanateando.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.