Bueno, estoy haciendo un script que ya funciona tal como quiero, no sé si este hecho de la mejor manera (seguramente no) por eso agradecería sus comentarios respecto a la posibilidad de que MySql colapse (si la hay) y formas de hacer lo mismo de una manera más ligera.
Les cuento, lo que hace el script es añadir datos a una tabla pero bajo las siguientes condiciones:
El input envia los datos de esta manera: nombre1, nombre2, nombre3, nombre[n] y yo los inserto en la BD cada uno en una fila distinta. Si el nombre ya existe no lo inserta, si no, lo hace.
Me arreglé de esta manera, creo, bastante arcaica, pero por ahora funciona. Aquí solo se muestran dos inputs, pero realmente en el formulario "de verdad" van a ser 10 o 12 que necesitarán ser revisados.
Como dije, sería genial escuchar sus opiniones al respecto, y si tiene sugerencias sobre cómo mejorar. (Y de nuevo, si MySql puede colapsar).
En fin, sin más, aqui el script:
Código PHP:
<html>
<head>
<title>Pruebas</title>
</head>
<body>
<?
if (!$_POST['submit'])
{
?>
<form action="<? echo $PHP_SELF; ?>" method="post" name="forma" id="formulario" accept-charset="utf-8">
<label for="autor">autor</label>
<input type="text" name="autor" value="" /><br />
<label for="otros">Otros</label>
<textarea name="otros"></textarea>
<br />
<input type="Submit" name="submit" id="submitbutton" value="Enviar" />
</form>
<?php
}
else
{
include("config.php");
$autor = $_POST['autor'];
$otros = $_POST['otros'];
//divide por comas
$nombres_autor = explode(", ",$autor);
$nombres_otros = explode(", ",$otros);
//Cuento los elementos del array devuelto por explode
$contar_autor = count($nombres_autor);
$contar_otros = count($nombres_otros);
//Hago el bucle para insertar los datos
for ($i = 0; $i < $contar_autor; $i++) {
mysql_query("SET NAMES utf8");
$seleccionar = "SELECT nombre FROM autores WHERE nombre = '$nombres_autor[$i]'";
$query_select = mysql_db_query($db, $seleccionar, $link) or die("Error en $query <br>MySQL dice: ".mysql_error());
if (mysql_num_rows($query_select) == 0 ) {
mysql_query("SET NAMES utf8");
$query = "INSERT INTO autores (nombre) VALUES ('$nombres_autor[$i]')";
mysql_db_query($db, $query, $link) or die("Error en $query <br>MySQL dice: ".mysql_error());
}
else {
echo "El nombre $nombres_autor[$i] ya esta en la base de datos";
echo "<br />";
}
}
for ($i = 0; $i < $contar_otros; $i++) {
mysql_query("SET NAMES utf8");
$seleccionar = "SELECT nombre FROM autores WHERE nombre = '$nombres_otros[$i]'";
$query_select = mysql_db_query($db, $seleccionar, $link) or die("Error en $query <br>MySQL dice: ".mysql_error());
if (mysql_num_rows($query_select) == 0 ) {
mysql_query("SET NAMES utf8");
$query = "INSERT INTO autores (nombre) VALUES ('$nombres_otros[$i]')";
mysql_db_query($db, $query, $link) or die("Error en $query <br>MySQL dice: ".mysql_error());
}
else {
echo "El nombre $nombres_otros[$i] ya esta en la base de datos";
echo "<br />";
}
}
echo "Se insertaron los datos";
}
?>
</body>
</html>
Samuel.