Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Procedimiento u script para duplicar lineas?

Estas en el tema de Procedimiento u script para duplicar lineas? en el foro de PHP en Foros del Web. Hola a todos, Buscava la manera de poder duplicar lineas en la base de datos, de tal forma que se sume ''1'' al resultado anterior ...
  #1 (permalink)  
Antiguo 25/06/2013, 06:35
 
Fecha de Ingreso: mayo-2013
Mensajes: 7
Antigüedad: 10 años, 11 meses
Puntos: 0
Procedimiento u script para duplicar lineas?

Hola a todos,

Buscava la manera de poder duplicar lineas en la base de datos, de tal forma que se sume ''1'' al resultado anterior en dos filas, de tal forma:



Para que la siguiente linea fuese:

484 links (mismafecha) 323 2 10 (mismonumero).

E probado con whiles y algun bucle así, pero no se apenas nada de programación...

Muchas gracias por la ayuda.
  #2 (permalink)  
Antiguo 25/06/2013, 09:18
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Procedimiento u script para duplicar lineas?

Primero debes de hacer un Select
Código MySQL:
Ver original
  1. SELECT * FROM tabla ORDER BY campo DESC LIMIT 1

eso te arrojaria el row campo insertado segun el campo en tu caso (vote_id), luego capturas el vote_id en una variable y le sumas 1, y luego haces un Insert...

Código MySQL:
Ver original
  1. INSERT INTO tabla (vote_id,vote_type,vote_date,vote_link_id,vote_user_id,vote_value,vote_ip_int) VALUES ($votoid+1,'links','(mismafecha)','323','2','10','(mismonumero)');

Claro es mi idea.. tambien depende con que programa estas trabajando... Porque lo que te e dado es solo el procedimiento por el MYSQL... supongo que tienes algun codigo (PHP, AJAX, VB) para trabajar...
  #3 (permalink)  
Antiguo 25/06/2013, 10:02
 
Fecha de Ingreso: mayo-2013
Mensajes: 7
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Procedimiento u script para duplicar lineas?

Hola, ante todo muchas gracias por contestar.

Mi idea seria seria hacerlo por php, que es lo que e estado probando mas o menos como me has dicho pero sin resutado (aunque puede ser un tema de no haber escrito bien la sentencia)

Otra forma mediante la cual me gustaria hacerlo es por phpmyadmin, a traves de una consulta sql de ahi que postee en esta sección.

Probaré a ver si puedo hacer alguna rutina o procedimiento almacenado.

Muchas gracias.
  #4 (permalink)  
Antiguo 25/06/2013, 10:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Procedimiento u script para duplicar lineas?

Cita:
Mi idea seria seria hacerlo por php
Movido a PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 25/06/2013, 10:08
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Procedimiento u script para duplicar lineas?

Bueno en el PHP te tocara es capturar el valor del vote_id (de la primera consulta que te pase) incrementarle un digito, y luego hacer un insert con los datos de la primera consulta (Previamente habras tenido que haberlos capturado en una variable), colocando el vote_id+1...

si tienes alguna duda de como hacerlo dirigete al foro de programacion de php y colocas tu duda..

PD: Ups se me adelantaron, si tienes una duda ya puedes postear aqui el codigo y se te ayuda a resolverlo...
  #6 (permalink)  
Antiguo 25/06/2013, 10:44
 
Fecha de Ingreso: mayo-2013
Mensajes: 7
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Procedimiento u script para duplicar lineas?

De momento tengo esto, pero no hace bien la suma ni inserta hasta llegar a las 520 lineas, solo inserta una vez y queda de esta forma:
511 links 2013-06-25 10:29:19 0 0 10 1046677488

y deberia de quedar:

511 links 2013-06-25 10:29:19 349 0 10 1046677488

y un bucle hasta llegar a

520 links 2013-06-25 10:29:19 358 0 10 1046677488

Código:
<?php
$link = mysql_connect("localhost","xxxx","xxxx");
		mysql_select_db("meneahiphop",$link);
		
	$query=mysql_query("SELECT * FROM `meneahiphop`.`votes`",$link);
	
		$num_rows = mysql_num_rows($query);
	
	if ($num_rows < 520) {

$sql = mysql_query("INSERT INTO `meneahiphop`.`votes` (`vote_id`, `vote_type`, `vote_date`, `vote_link_id`, `vote_user_id`, `vote_value`, `vote_ip_int`) VALUES (NULL, 'links', '2013-06-25 10:29:19', '$suma', '0', '10', '1046677488')",$link);
		
		$indice = '348';
		
		$suma = $indice + 1;
		
		echo 'realizado';
			}
		
		else {
  echo 'Hay una repetida no se inserta';
}


?>
  #7 (permalink)  
Antiguo 25/06/2013, 11:01
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Procedimiento u script para duplicar lineas?

Ok a ver estas haciendo un bucle par que se repita 520 veces? (no me quedo claro eso) pero ya en tu codigo vi varios errores, como te dije primero debes hacer un select y atrapar el valor que quieras sumar (y como los demas datos seran iguales a diferencia que a uno le sumas 1 capturariamos todo)

Código PHP:
Ver original
  1. <?php
  2. $link = mysql_connect("localhost","xxxx","xxxx");
  3. mysql_select_db("meneahiphop",$link);
  4. $query=mysql_query("SELECT * FROM `meneahiphop`.`votes` ORDER BY `vote_link_id` DESC LIMIT 1 ",$link);
  5. $row = mysql_fetch_array($query);
  6. $num_rows = mysql_num_rows($query);
  7. if ($num_rows < 520) {
  8.     $indice=$row['vote_link_id']+1;
  9.     $sql = mysql_query("INSERT INTO `meneahiphop`.`votes` ( `vote_type`, `vote_date`, `vote_link_id`, `vote_user_id`, `vote_value`, `vote_ip_int`) VALUES ($row['vote_type'], $row['vote_date'], '$indice', $row['vote_user_id'], $row['vote_value'], $row['vote_ip_int'])",$link);
  10.     echo 'realizado';
  11.     }
  12. else {
  13.     echo 'Hay una repetida no se inserta';
  14. }
  15. ?>

Entonces:
1- Selecciono el ultimo registro (recuerda con el DESC LIMIT 1) puesto que si haces el select sin filtrar la data traera el primero...
2- capturo todos los datos del select con el array $row
3-preguntamos si hay 520 lineas, de no haberlas pasamos a insertar
4-inserto todo los datos (OMITIENDO EL NULL, ya que si se autoincrementa no existe la necesidad de mencionarlo en el insert), y al valor de vote_link_id le sume 1
5- armo la cadena e inserto

Ahora bien no entiendo el porque estas haciendo eso...
  #8 (permalink)  
Antiguo 25/06/2013, 13:35
 
Fecha de Ingreso: mayo-2013
Mensajes: 7
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Procedimiento u script para duplicar lineas?

Vale, contaré un poco la historia para que puedas comprenderlo y puedas ayudarme mejor.

Yo inserto una noticia (automaticamente cuando deberia de ser manual), y le digo tiene 1 voto, el de un usuario que lo ha subido, pero claro no lo ha subido realmente el usuario, asique lo coteja con otra tabla (la que estoy extendiendo), si ese voto no existe, te elimina la noticia y te dice que no corresponde con ningun usuario. entonces, tengo que hacer ese bucle, duplicar votos cambiando el vote_link_id que es el que correponde a la noticia recien insertada.

Es decir el vote_id se auto incrementa solo (eso ya lo has puesto tu), y el de vote_link_id corresponde a la noticia insertada (esto se tiene que autoincrementar hasta 2000, 5000 lo que sea)

Entonces claro si digo que el vote_id es 511, y el vote_link_id es 511, cuando el vote_id sea 600 el vote_link_id obiamente será 600. De ahi el bucle de que pare en 520 lineas, para que no sea infinito y rompa la BBDD.

La idea es poner luego 5000 o 10000 sin problema, pero no voy a poner 10000 para que luego tenga que borrar 10000 lineas mal...

No se si me e explicado correctamente te agradezco mucho la ayuda ya que estoy rompiendome la cabeza, si no entiendes algo, te lo explico de otra manera.

muchas gracias.
  #9 (permalink)  
Antiguo 25/06/2013, 13:57
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Procedimiento u script para duplicar lineas?

Cita:
Iniciado por serprods13 Ver Mensaje
Vale, contaré un poco la historia para que puedas comprenderlo y puedas ayudarme mejor.

Yo inserto una noticia (automaticamente cuando deberia de ser manual), y le digo tiene 1 voto, el de un usuario que lo ha subido, pero claro no lo ha subido realmente el usuario, asique lo coteja con otra tabla (la que estoy extendiendo), si ese voto no existe, te elimina la noticia y te dice que no corresponde con ningun usuario. entonces, tengo que hacer ese bucle, duplicar votos cambiando el vote_link_id que es el que correponde a la noticia recien insertada.
Entiendo hasta aqui que la noticia en vez de ser subida por la red (formulario o algun otro gestor, lo has hecho tu manualmente con la BD...
Cita:
Iniciado por serprods13 Ver Mensaje
Es decir el vote_id se auto incrementa solo (eso ya lo has puesto tu), y el de vote_link_id corresponde a la noticia insertada (esto se tiene que autoincrementar hasta 2000, 5000 lo que sea)

Entonces claro si digo que el vote_id es 511, y el vote_link_id es 511, cuando el vote_id sea 600 el vote_link_id obiamente será 600. De ahi el bucle de que pare en 520 lineas, para que no sea infinito y rompa la BBDD.
eso es algo que no aclaraste es decir que vote_id=vote_link_id ? porque si es asi en tu ejemplo (la foto que colocaste) eso no se esta cumpliendo...
Cita:
Iniciado por serprods13 Ver Mensaje

La idea es poner luego 5000 o 10000 sin problema, pero no voy a poner 10000 para que luego tenga que borrar 10000 lineas mal...

No se si me e explicado correctamente te agradezco mucho la ayuda ya que estoy rompiendome la cabeza, si no entiendes algo, te lo explico de otra manera.

muchas gracias.
De verdad que no estas explicando bien, respira hondo, ya tu problema parcialmente lo has identificado... pero mientras no lo sepas transmitir costara entenderlo y ayudarte, hay personas (me incluyo) que por el trabajo u otra labor, o simplemente porque asi somos, nos cuesta mas entender lo que los usuarios buscan...

Por lo momentos entendi que voto_id y voto_link_id tienen que ser iguales y q planeas incrementar el voto_link_id para que una noticia que has publicado manualmente no se borre...
  #10 (permalink)  
Antiguo 25/06/2013, 15:54
 
Fecha de Ingreso: mayo-2013
Mensajes: 7
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Procedimiento u script para duplicar lineas?

Disculpa por todo el lio, no suelo expresarme bien en todos estos temas, finalmente e utilizado tu codigo, cambiando unas cosas del insert, ya que sino me daba fallo y queda tal que asi:

Código:
    <?php
    $link = mysql_connect("localhost","xxxxxx","xxxxxxx");
    mysql_select_db("meneahiphop",$link);
    $query=mysql_query("SELECT * FROM `meneahiphop`.`votes` ORDER BY `vote_link_id` DESC LIMIT 1 ",$link);
    $row = mysql_fetch_array($query);
    $num_rows = mysql_num_rows($query);
	
    if ($num_rows < 5520) {
        $indice=$row['vote_link_id'] + 1;
		echo $indice;
        $sql = mysql_query("INSERT INTO `meneahiphop`.`votes` (`vote_id`, `vote_type`, `vote_date`, `vote_link_id`, `vote_user_id`, `vote_value`, `vote_ip_int`) VALUES (NULL, 'links', '2013-06-25 10:29:19', '$indice', '2', '10', '1046677488')",$link);
        echo 'realizado';
        }
    else {
        echo 'Se ha llegado al numero maximo';
    }
    ?>
Cada vez que ''visito'' la web con ese codigo se inserta tal y como queria, una linea totalmente igual, cambiando los dos valores aumentandole uno.

Lo que queria exactamente es no tener que visitar la web, y que aumentase solo uno, sino que con visitarla una vez aumentase 5000 o 10000, pero de todas formas sosteniendo el f5, se consigue llegar a esa cifra facilmente.

E dejado el codigo por si a alguien le puede servir, otra vez dar las gracias a quien a ayudado, al no dedicarme a la programación estos temas son bastantes crudos, si alguno necesitais un servidor vps de pruebas (gratuitos) o necesitais ayudas con configuraciones mandarme privado.

Muchas gracias otra vez.

Última edición por serprods13; 25/06/2013 a las 16:05
  #11 (permalink)  
Antiguo 25/06/2013, 16:24
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Procedimiento u script para duplicar lineas?

Si lo que buscas es que el codigo que hace el insert se repita un numero mas grande tienes que encerrarlo en un Do While, siendo algo asi:

Código PHP:
<?php
$link 
mysql_connect("localhost","xxxx","xxxx");
mysql_select_db("meneahiphop",$link);
$numero=0;
do {
    
$query=mysql_query("SELECT * FROM `meneahiphop`.`votes` ORDER BY `vote_link_id` DESC LIMIT 1 ",$link);
    
$row mysql_fetch_array($query);
    
$num_rows mysql_num_rows($query);
    if (
$num_rows 520) {
        
$indice=$row['vote_link_id']+1;
        
$sql mysql_query("INSERT INTO `meneahiphop`.`votes` ( `vote_type`, `vote_date`, `vote_link_id`, `vote_user_id`, `vote_value`, `vote_ip_int`) VALUES ($row['vote_type'], $row['vote_date'], '$indice', $row['vote_user_id'], $row['vote_value'], $row['vote_ip_int'])",$link);
        echo 
'realizado';
        }
    else {
        echo 
'Hay una repetida no se inserta';
    }
    
$numero=$numero+1;
}
while (
$numero<=5000);
?>
claro tambien puedes usar un For, lo que necesitas es crear el bucle...

Aunque usando la logica si $numero (las veces que vas a crear un voto) es mayor a $num_rows (donde haces un condicional de que para agregar votos deben de haber menos de 520) el script va a mostrar "Hay una repetida", es decir $numero y $num_rows deben ser iguales o $num_rows mayor... nose si me estas captando...

Igual manera estamos a la orden para ayudarte...

Etiquetas: duplicar, mysql, procedimiento
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 22:33.