Nueva pregunta

Pregunta:

Fecha: 05-08-2015 14:14:33 (En Español)

Llamada a script PHP se ejecuta dos veces[Resuelta]

Hola, estoy experimentando el siguiente problema usando PHP y MySQL:

Desde un enlace en un <table> se invoca a un segundo.php el cual realiza una copia del registro actual.
echo  "<td> <a href='cpu_copy.php?cpuid=".$row['cpuid' ]."'>".$row['cpuid' ]."</a></td> " ;


En cpu_copy.php
<html>
<head>
  <?php InsertHead();   ?>
  <!-- ESTA BIEN USAR UNA FUNCION COMO DE LA LINEA
        ANTERIOR PARA INSERTAR <title>, script js , hojas de estilo? -->
</head>
<body>
<?php
     $cpuid = $_GET['cpuid'];
      $link = ConectarBD() ;
      $result = $link->query( "select max(cpuid) as ultimo from cpu ");
      $row = $result->fetch_array()  ;
      $newcpuid = $row['ultimo'] + 1 ;
      $result = $link->query( "insert into cpu ( cpuid, cputipoid, cpudes, marcaid )
                                  select '$newcpuid', cputipoid, cpudes, marcaid
                                    from cpu original where original.cpuid='$cpuid' " )
                             or die ( "error copiando...1". mysqli_error( $link )) ;
      $link->close() ;
?>
</body>
</html>


El problema que se me presenta es que al llamar a este ultimo .php, se ejucuta dos veces. Esto significa que si tengo un solo registro, me genera 2 registros nuevos con id 2 y 3.

He recorrido varias páginas buscando la solución, pero no la encuentro.
- Me indican verifcar lo que tengo en <head> por si hay algun <script> con src="". Pero no los hay.
- He usado variables de session como contador y efectivamente me muestra 2 ese contador.
- Probé con una una version de cpu_copy.php en donde utilice SOLO el codigo que esta entre las lineas 9 y 26 ( <?php y ?> ) y el problema NO se presenta.

la funcion INSERTHEAD() contiene lo siguiente (perdon por abusar de su tiempo):

 
<?php
    function InsertHead() {
?>
    <title>TITULO</title>
    <!-- Meta -->
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">
    <link href='http://fonts.googleapis.com/css?family=Lato:300,400,300italic,400italic' rel='stylesheet' type='text/css'>
    <link href='http://fonts.googleapis.com/css?family=Montserrat:400,700' rel='stylesheet' type='text/css'>
    <!-- Global CSS -->
    <link rel="stylesheet" href="../css/bootstrap.min.css">
    <!-- Plugins CSS -->
    <link rel="stylesheet" href="../css/font-awesome.css">
    <link rel="stylesheet" href="../css/pe-icon-7-stroke.css">
    <link rel="stylesheet" href="../css/animate.min.css">
    <link rel="stylesheet" href="../css/flexslider.css">
    <!-- Theme CSS -->
    <link id="theme-style" rel="stylesheet" href="../css/styles-3.css">
    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
     <!-- Javascript -->
    <script type="text/javascript" src="../js/jquery-1.11.2.min.js"></script>
    <script type="text/javascript" src="../js/jquery-migrate-1.2.1.min.js"></script>
    <script type="text/javascript" src="../js/bootstrap.min.js"></script>
    <script type="text/javascript" src="../js/bootstrap-hover-dropdown.min.js"></script>
    <script type="text/javascript" src="../js/jquery.inview.min.js"></script>
    <script type="text/javascript" src="../js/isMobile.min.js"></script>
    <script type="text/javascript" src="../js/back-to-top.js"></script>
    <script type="text/javascript" src="../js/jquery.placeholder.js"></script>
    <script type="text/javascript" src="../js/jquery.fitvids.js"></script>
    <script type="text/javascript" src="../js/jquery.flexslider-min.js"></script>
    <script type="text/javascript" src="../js/main.js"></script>
    <!--[if !IE]>-->
    <script type="text/javascript" src="../js/animations.js"></script>
    <!--<![endif]-->
    <script>
        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
        ga('create', 'UA-24707561-12', 'auto');
        ga('send', 'pageview');
    </script>
    <?php
   }
?>


Entiendo que el problema esta en esta función.

MUCHAS GRACIAS POR LA COLABORACION.
Javier.
Valora esta pregunta
Etiquetas: MySQL - PHP - Pregunta Votos: 0 - Respuestas: 5 - Vistas: 18 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 05-08-2015 14:34:38 Hola
    para que sea mas legible tus codigos insertalos en los tags de Code PHP ;)

    Y por las dudas postea tambien el codigo en donde este

    echo  "<td> <a href='cpu_copy.php?cpuid=".$row['cpuid' ]."'>".$row['cpuid' ]."</a></td> " ;
    


    No soy experto en el tema pero...

    Pregunta, en la tabla el campo cpuid es autoimcrementable?

    Creo que por ahi viene el problema entre el autoimcrementable y el escript cpu_copy.php
    si tienes las estructura de la tabla posteala ;)
      Votos: 1 - Link respuesta
     
  • Fecha: 06-08-2015 08:20:43 Concuerdo con Walter, necesito un poco de la estructura de la tabla para poder recrearlo en local y poder ayudarte.   Votos: 1 - Link respuesta
     
  • Fecha: 09-08-2015 11:52:14 bueno amigo creo que tienes que ser mas claro en eso mas o menos entendí al parecer necesitas el id de cpuid para cargar el resto del cogido hacer el inser supongo yo acá creo que deverias tener algo asi
     
         $id = mysql_query(select * from tabla);
          while($row = mysql_fecht_array($id)){
               echo <a href='cpu_copy.php?cpuid=".$row['cpuid' ]."'>".$row['cpuid' ]."</a></td> " ;
    }
    

    aun que si especificar un poco mas tu error y que es lo que quieres hacer o tratas de hacer seria mucho mejor
      Votos: 1 - Link respuesta
     
  • Fecha: 21-10-2015 11:11:47 Si tu objetivo es hacer una copia del seleccionado , prueba con este codigo

    
    <?php
         $cpuid = $_GET['cpuid'];
          $link = ConectarBD() ;
          
          $result = $link->query( "insert into cpu ( cpuid, cputipoid, cpudes, marcaid )
                                      select cpuid, cputipoid, cpudes, marcaid
                                        from cpu original where original.cpuid='$cpuid' " )
                                 or die ( "error copiando...1". mysqli_error( $link )) ;
          $link->close() ;
    ?>
    
    


    te recomiendo que tu campo cpuid sea de tipo auto_increment

    para que no estes haciendo esto

          $result = $link->query( "select max(cpuid) as ultimo from cpu ");
          $row = $result->fetch_array()  ;
          $newcpuid = $row['ultimo'] + 1 ;
    


    saludos!
      Votos: 3 - Link respuesta
     
  • Fecha: 12-11-2015 09:17:52 Javier Albornoz,
    La solución más sencilla es un pequeño cambio en tu query.
    Utiliza REPLACE en lugar de INSERT:

    $result = $link->query("REPLACE INTO cpu ( cpuid, cputipoid, cpudes, marcaid )
                            SELECT cpuid, cputipoid, cpudes, marcaid
                            FROM cpu original WHERE original.cpuid='$cpuid' ")
    or die ("error copiando...1" . mysqli_error($link));
    


    Saludos y espero que te sirva.
      Votos: 1 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com