Pregunta:
Fecha: 05-08-2015 14:14:33
(En Español)
Desde un enlace en un <table> se invoca a un segundo.php el cual realiza una copia del registro actual.
En cpu_copy.php
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):
Entiendo que el problema esta en esta función.
MUCHAS GRACIAS POR LA COLABORACION.
Javier.
Valora esta pregunta Votos: 0 - Respuestas: 5 - Vistas: 18 Compartir en: Google Facebook Twitter LinkedIn Link
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 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
