Comunidad de diseño web y desarrollo en internet online

me inserta con PHP dos veces un mismo registro

Citar            
MensajeEscrito el 26 Oct 2010 03:43 pm
Hola gente, tengo una de esas broncas q a todo programador le pasa cuando las cosas aparentemente estan bien pero no funcionan, ¿me entienden?.
El caso que me llevo a estar enbroncado por enésima vez es que:

Cuando inserto un registro en una tabla ...

1. usando phpMyAdmin todo anda de maravilla.
2. pero cuando lo inserto desde PHP me inserta la nupla repetida :shock: :shock:

No se imaginan lo enojado que estoy :twisted: , bueno... quizás si.
¿Alguien sabe que puede ser?, yo revisé el código muchas veces y no encuentro una sentencia mysql_query(...) repetida.
Ayuda porfavor!.

Por hetors

93 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Oct 2010 03:49 pm
Ejem... sin ver el código es difícil de saber qué está pasando... ejem...
Intuyo que si no tienes dos llamadas a mysql_query() que hace el insert en la base de datos, entonces podría ser que el proceso por alguna razón se esté ejecutando dos veces.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 26 Oct 2010 04:08 pm
Ahí va el código...

Este es el archivo que hace la inserción

Código PHP :

<?php 
   $title = "Estado de la carga de un nuevo usuario";
   include "header.php";
   include "conexion.php";
   extract($_GET);
   
   echo "<h3>Inscripci&oacute;n de alumno a la universidad</h3>
      <div id='contenido2'>";
/*
BEGIN CUERPO DE LA WEB
*/   
   $q = "INSERT INTO alumnos(Nombre,Dire,Tel) VALUES ('".$in_nbre."','".$in_dire."','".$in_tel."')";
   
   if (mysql_query($q)){
      echo "
      <h4>La inscripcion del alumno:</h4>
      <table border='0' cellspacing='3' cellpadding='3'>
         <tr>
            <td>Nombre:</td><td><strong>".$in_nbre."</strong></td>
         </tr>
         <tr>
            <td>Con direccion:</td><td><strong>".$in_dire."</strong></td>
         </tr>
            <td>Tel&eacute;fono:</td><td><strong>".$in_tel."</strong></td>
         </tr>
      </table>
      <h4>Ha sido exitosa</h4>
      ";
   } else {
      echo "
         <h4>La inscripcion del alumno no pudo ser realizada</h4>
      ";
   }

   
/*
END CUERPO DE LA WEB
*/      
   echo "   </div>";
   include "footer.php";
   include "close.php";
?>


Este es el header.php

Código HTML :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
   <head>
   <title><?php echo "GRAN Universidad -".$title; ?></title>
      <link rel="stylesheet" type="text/css" href="css" />
      <script type="text/javascript" src=""></script>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
      <style type="text/css">
         h3{
            font-size:18pt;
            margin-top:4px;
            margin-bottom:38px;
            text-decoration:underline;
         }
         ul{
            margin-left:-20px;
            color:white;
         }
         li.enlace{
            border-bottom: 1px dotted white;
            margin-bottom:8px;
         }
         a:link{
            text-decoration:none;
            color:black;
         }
         a:visited{
            text-decoration:none;
            color:black;
         }
         a:hover{
            text-decoration:underline;
            color:white;
         }
         a:active{
            text-decoration:none;
            color:white;
         }
         #pcipal{
            position: fixed;
            left: 50%;
            margin-left: -453px;
         }
         #menu{
            float:left;
            width: 300px;
            background-color:#66cccc;
         }
         #contenido{
            float:left;
            width:600px;
            //background-color:#ccffff;
            background-color:white;
            margin:0px 0px 1px 1px;
            border: 2px solid #66CCCC;
            padding-left:7px;
            padding-top:15px;
            padding-bottom:15px;
         }
         #contenido2{
            margin-left:20px;
         }
         #footer{
            clear:both;
            height:38px;
            background-color:#66cccc;
         }
      </style>
   </head>
   <body>
   <div id="pcipal">
      <div id="menu">
         <p style="font-size:35pt;margin-top:16px;background-color:white;text-indent:12px;">GRAN</p><br />
         <p style="font-size:20pt;margin-top:-81px;background-color:white;text-indent:12px;">Universidad</p>
         <ul type="disc">
            <li class="enlace"><a href="inscr_al.php">Inscribir alumno</a></li>
            <li class="enlace"><a href="inscr_al_mat.php">Incribir alumno a materia</a></li>
            <li class="enlace"><a href="carg_not_al.php">Cargar nota a alumno</a></li>
            <li class="enlace"><a href="list_al.php">Listar alumnos inscriptos</a></li>
            <li class="enlace"><a href="borrar_al.php">Borrar alumno de materia</a></li>
            <li class="enlace"><a href="carg_nueva_mat.php">Cargar nueva materia</a></li>
         </ul>   
      </div>
      <div id="contenido">

Este es el archivo conexion.php

Código PHP :

<?php 
   $db_host = "localhost";
   $db_user = "root";
   $db_pass = "";
   $db_name = "Carrera";
   
   $conexion = mysql_connect($db_host,$db_user,$db_pass);
   
   mysql_select_db($db_name,$conexion);
?>

Este es el archivo close.php

Código PHP :

<?php 
   mysql_close($conexion);
?>


Y finalmente, este es el archivo footer.php

Código HTML :

      </div>
      <div id="footer">
         
      </div>
   </div>
   </body>
</html>

Por hetors

93 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Oct 2010 04:28 pm
Cuando quito el header.php me funciona bien la página pero no entiendo cual puede ser el caracter que está causando el conflicto.

Por hetors

93 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Oct 2010 04:43 pm
No parece haber nada raro aquí aunque podría darte un par de consejos al margen:

- No uses extract() para tomar los parámetros por GET, valida cada parámetro por separado y...
- No uses variables como constantes en el archivo conexion.php, usa constantes directamente (define())
- Empieza a diseñar con HTML5

Esto me lleva a pensar que todo esto se está llamando dos veces desde donde se invoca, puedo deducir que esto es la landing page de un formulario ¿cierto?.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 26 Oct 2010 07:07 pm

DriverOp escribió:

No parece haber nada raro aquí aunque podría darte un par de consejos al margen:

- No uses extract() para tomar los parámetros por GET, valida cada parámetro por separado y...
- No uses variables como constantes en el archivo conexion.php, usa constantes directamente (define())
- Empieza a diseñar con HTML5

Esto me lleva a pensar que todo esto se está llamando dos veces desde donde se invoca, puedo deducir que esto es la landing page de un formulario ¿cierto?.


Gracias por los consejos DriverOp, la verdad que no le estoy prestanto mucha atención a HTML 5.
Ya que me diste algunos consejos te pregunto sobre uno de ellos, ¿porque me aconsejas usar constantes y no variables?, ¿es por cuestiones de seguridad?.

Por otro lado pude solucionar el problema que tenía. Dentro de la etiqueta <HEAD> del archivo header.php hay una etiqueta para usar Javascript (que para mi caso no lo necesito); al quitarle la etiqueta esa todo funcionó a la perfección y como no la utilizo entonces no me importa si está o no está... salvo que tenga que usar Javascript :(

Saludos.

Por hetors

93 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Oct 2010 07:17 pm

hetors escribió:

Gracias por los consejos DriverOp, la verdad que no le estoy prestanto mucha atención a HTML 5.

Pues deberías ;).

hetors escribió:

Ya que me diste algunos consejos te pregunto sobre uno de ellos, ¿porque me aconsejas usar constantes y no variables?, ¿es por cuestiones de seguridad?.

Sí. Es por seguridad pero no solo eso, las constantes no se pueden modificar así que cualquier código inyectado no podrá usar tu conexión para otra base de datos que no sea la que tú hayas elegido, y además las constantes son siempre superglobales por lo que las puedes usar aún dentro de funciones.

hetors escribió:

Por otro lado pude solucionar el problema que tenía. Dentro de la etiqueta <HEAD> del archivo header.php hay una etiqueta para usar Javascript (que para mi caso no lo necesito); al quitarle la etiqueta esa todo funcionó a la perfección y como no la utilizo entonces no me importa si está o no está... salvo que tenga que usar Javascript :(

¡Cierto!. Ya ví dónde está el problema. Tienes el atributo src="" que el navegador traduce como "la página actual", entonces cuando lee esa etiqueta vuelve a cargar el propio archivo. Es decir, era lo que yo pensaba, que la página se carga dos veces, una por la propia petición y otra al querer cargar un script javascript que es la propia página. Quitando ese atributo, se soluciona el problema.

hetors escribió:

Saludos.

Saludos...

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 27 Oct 2010 11:55 am
Pero entonces... ¿cómo haría si quisiera incluir codigo Javascript si no puedo usar el atributo src?, lo mismo pasaría al querer incluir una imágen.
Estuve también navegando para encontrar ayuda sobre lo que hace src en PHP pero no encontré nada :(.
Saludos.

Por hetors

93 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Oct 2010 04:40 pm
El problema no es el atributo "src", el problema es cuando ese atributo está presente pero está vacío. En ese caso el navegador interpreta que debe apuntar al propio archivo. Es parecido a lo que sucede cuando haces algo como esto:

Código HTML :

<a href="">Link</a>

Como ves, href apunta a nada pero si haces click el navegador vuelve a cargar la propia página donde está el link. Lo mismo sucede con <script src=""></script>.
PHP no tiene nada que ver con esto.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 27 Oct 2010 08:16 pm

DriverOp escribió:

El problema no es el atributo "src", el problema es cuando ese atributo está presente pero está vacío. En ese caso el navegador interpreta que debe apuntar al propio archivo. Es parecido a lo que sucede cuando haces algo como esto:

Código HTML :

<a href="">Link</a>

Como ves, href apunta a nada pero si haces click el navegador vuelve a cargar la propia página donde está el link. Lo mismo sucede con <script src=""></script>.
PHP no tiene nada que ver con esto.


Clarísimo DriverOp, no había tenído en cuenta ese detalle.
Muchas gracias y saludos!!.

Por hetors

93 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ago 2015 07:11 pm
Hola. Estoy experimentando el mismo problema. No tengo ningun scr "vacio" y codigo contenido en mi archivo php se ejecuta dos veces. Queria saber si es correcto hace una funcion php para insertar lo que iria entre <head> y </head>. Tengo un pequeño grupo de programas en php y como en todas uso el mismo encabezado, hice una función en php y la invoco entre <head> <?php InsertHead(); ?> </head>.

Por jalbo

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Ago 2015 12:08 pm
No, no hay ningún problema. Aunque si lo que la función InsertHead() lo que hace es poner código HTML/JavaScript, mejor usa un include() o require().

Por DriverOp

Claber

2510 de clabLevel



 

chrome

 

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