¿Cómo pasar varios autores de una tabla a otra?

Hola David.
Después de mucho indagar y no encontrar solución, paso a exponerte mi problema.
Tengo una base de datos con un solo campo "AUTABRE varchar(100) default NULL"
Este capo contiene nombres de personas separados por un signo '#'
Ejemplo: #Beck#Natali#Jeanm.#Jeanm.#Bocquet#Burdet#
Este campo proviene de otra tabla en la que he sustituido lo que no me interesaba por el símbolo para poder aislar lo que me interesa, el nombre de los autores.
Mi problema es que no se como puedo hacer un array o cualquier otra cosa para poder meter los autores individualizados, cada uno en un registro de otra tabla.
Ejemplo: Beck
Natali
Jeanm.
Bocquet
Burdet
El script que tengo es el siguiente:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Ápendice de revistas</title>
</head>
<body>
<?php
//En remoto cambiar por conexion_remota.php
require("require/conexion.php");
$conexion =@mysql_connect($DBHost, $DBUser, $DBPass)
or die("<H3>No se ha podido establecer la conexión.</H3>");
mysql_select_db("fiberica");
$table=("CREATE TABLE autores (AUTABRE varchar(100) default NULL)");
mysql_query($table,$conexion) or die("<H3>No se ha creado la tabla autores.</H3>");
//Se cambia la variable para poder buscar en web_publicaciones
$volumen = tiny_mce_markerPOST["volumen"];
if ($volumen == "1")
{$volumen2 = "01";}
elseif ($volumen == "2")
{$volumen2 = "02";}
elseif ($volumen == "3")
{$volumen2 = "03";}
elseif ($volumen == "4")
{$volumen2 = "04";}
elseif ($volumen == "5")
{$volumen2 = "05";}
elseif ($volumen == "6")
{$volumen2 = "06";}
elseif ($volumen == "7(1)")
{$volumen2 = "07(1)";}
elseif ($volumen == "7(2)")
{$volumen2 = "07(2)";}
elseif ($volumen == "8")
{$volumen2 = "08";}
else
{$volumen2 = $volumen;}
//Buscamos en la nomenclatura la bibliografía deseada una sola vez con los parámetros volumen libro ! Falta el parámetro florabásica!
$tabla_nome = mysql_query("SELECT DISTINCT AUTABRE FROM `web_nomen` WHERE Tomo = '$volumen'
ORDER BY AUTABRE", $conexion);
$regist_nomen = mysql_numrows($tabla_nome);
//Recogemos la busqueda y lo insertamos en la tabla autores
while($registro = mysql_fetch_assoc($tabla_nome))
{
$esta=array(" & al. (eds.)"," & al."," (eds.)"," (ed.)","(",") "," & "," ex "," in ",", ","sensu ");
$cambia=array("#","#","#","#","#","#","#","#","#","#","#");
$comentario=str_replace($esta, $cambia, $registro["AUTABRE"]);
if ((strrpos($comentario, '#')+1)!=strlen($comentario))
{
$comentario .= '#';
}
else
{
$comentario == $comentario;
}
if ((strrpos($comentario, '#')+1)!=strlen($comentario))
{
$comentario = "#".$comentario;
}
mysql_query("INSERT INTO autores (AUTABRE) VALUES ('".$comentario."')");
}
?>
</body>
</html>
Y aquí me he quedado por no saber continuar.
Muchas gracias anticipadamente.
Respuesta
1
Una vez tengas el campo en una cadena, sólo tienes que hacer:
$autores = explode("#", $comentario);
Tendrás los nombres en la matriz $autores.
Mi problema sigue existiendo. ¿Cómo inserto la matriz $autores en la tabla autores?
Creo que ya dí con ello:
$tabla_nome = mysql_query("SELECT DISTINCT AUTABRE FROM `web_nomen` WHERE Tomo = '$volumen' and (AUTABRE not like 'auct.%')
ORDER BY AUTABRE", $conexion);
$regist_nomen = mysql_numrows($tabla_nome);
//Recogemos la busqueda y lo insertamos en la tabla autores
while($registro = mysql_fetch_assoc($tabla_nome))
{
$esta=array(" & al. (eds.)"," & al."," (eds.)"," (ed.)","(",") "," & "," ex "," in ",", ","sensu ");
$cambia=array("#","#","#","#","#","#","#","#","#","#","#");
$comentario=str_replace($esta, $cambia, $registro["AUTABRE"]);
if ((strrpos($comentario, '#')+1)!=strlen($comentario))
{
$comentario .= '#';
}
else
{
$comentario == $comentario;
}
if ((strrpos($comentario, '#')+1)!=strlen($comentario))
{
$comentario = "#".$comentario;
}
else
{
$comentario == $comentario;
}
$separar = strtok ($comentario,'#');
while ($separar)
{
//echo "$separar<br>";
mysql_query("INSERT INTO autores (AUTABRE) VALUES ('".$separar."')");
$separar=strtok("#");
}
}
Muchas gracias.
Una vez tienes los autores en una matriz sólo tienes que ejecutar una sentencia INSERT en un bucle que recorra la matriz.
Puedes usar por ejemplo:
foreach ($autores as $valor) {
mysql_query("INSERT INTO autores (AUTABRE) VALUES ($valor)");
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas