Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/12/2008, 22:17
Avatar de Threepwood
Threepwood
 
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 906
Antigüedad: 22 años, 2 meses
Puntos: 4
Posibilidad de que colapse el script? (muchas ordenes mysql en for)

Hola!

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) == ) {

    
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) == ) {

     
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>
Gracias, y saludos

Samuel.
__________________
Equívocos sin importancia