Insertar sin duplicar
Hola a todos, a ver si me podeis echar una mano en esto.
quiero insertar registros en una bd mysql, pero controlando que no duplique.
meto los datos en un formulario y en el script de inserci贸n no se como filtrarlo. hago primero una select de todos los campos y luego con if le digo que si el campo de la base de datos no es igual al que viene por post del formulario, que lo inserte, y la condici贸n de que si son iguales con endif.
pero debo de tener mal la sintaxis de los valores que van dentro del if, porque no me va.
si alguien tiene un script de similares caracter铆sticas le agradecer铆a que me lo pasase.
gracias por anticipado.
quiero insertar registros en una bd mysql, pero controlando que no duplique.
meto los datos en un formulario y en el script de inserci贸n no se como filtrarlo. hago primero una select de todos los campos y luego con if le digo que si el campo de la base de datos no es igual al que viene por post del formulario, que lo inserte, y la condici贸n de que si son iguales con endif.
pero debo de tener mal la sintaxis de los valores que van dentro del if, porque no me va.
si alguien tiene un script de similares caracter铆sticas le agradecer铆a que me lo pasase.
gracias por anticipado.
si, como no, lo env铆o tal cual
<HTML>
<HEAD>
<TITLE>Insertar.php</TITLE>
</HEAD>
<BODY>
<?
//Conexion con la base
mysql_connect("localhost","admin","2610");
//Ejecucion de la sentencia SQL
$csql=mysql_db_query("estudios","select * from libros where codmod=\'".$_POST[\'codmod\']."\'"); este post viene de un formulario anterior, es valor se carg贸 en un
combo en una primera p谩g
ahora viene el filtro:
quiero poner: si el campo nomblibro de la bd (una vez recorrido) no es igual al valor que trae del form entonces haz la inserci贸n sino, no hagas nada
if (.$row["nomblibro"].!=$_POST[\'nomblibro\'])
{
mysql_db_query("estudios","insert into libros (codmod,nomblibro) values (\'".$_POST[\'codmod\']."\',\'".$_POST[\'nomblibro\']."\')");
//mysql_db_query("estudios","insert into libros (codmod,nomblibro,nombautor,nombeditorial,isbn) values
(\'".$_POST[\'codmod\']."\',\'".$_POST[\'nomblibro\']."\',\'".$_POST[\'nombautor\']."\',\'".$_POST[\'nombeditorial\']."\',\'".$_POST[\'isbn\']."\')");
}
elseif
?>
<table width="300" border="1" cellpadding="0" cellspacing="0" bordercolor="#000000">
<tr>
<td><table width="300" border="0" cellpadding="0" cellspacing="0">
<tr>
<td> <div align="center"><font size="6">Registro Insertado</font></div></td>
</tr>
<tr>
<td bgcolor="#000000"><table width="300" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
</tr>
<tr>
<td bgcolor="#3399CC"> </td>
</tr>
</table></td>
</tr>
<tr>
<td bgcolor="#3399CC">
<div align="center">
<FORM ACTION="visualizar.php" METHOD="POST" name="insertar" id="insertar">
<input name="codmod" type="hidden" value="<? echo $_POST[\'codmod\'] ?>">
<INPUT name="SUBMIT2" TYPE="SUBMIT" value="Contenido del M贸dulo">
</FORM>
</div></td>
</tr>
<tr>
<td height="45" bgcolor="#3399CC">
<div align="center">
<FORM ACTION="subirbiblio.php" METHOD="POST" name="insertar" id="insertar">
<INPUT name="SUBMIT2" TYPE="SUBMIT" value="Volver a la B煤squeda">
</FORM>
</div></td>
</tr>
</table></td>
</tr>
</table>
<? echo $_POST[\'isbn\'] ?>
<?
while ($row=mysql_fetch_array($csql))
{
echo \'<td>\'.$row["nomblibro"].\'</td>\';
}
?>
<p> </p>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE>Insertar.php</TITLE>
</HEAD>
<BODY>
<?
//Conexion con la base
mysql_connect("localhost","admin","2610");
//Ejecucion de la sentencia SQL
$csql=mysql_db_query("estudios","select * from libros where codmod=\'".$_POST[\'codmod\']."\'"); este post viene de un formulario anterior, es valor se carg贸 en un
combo en una primera p谩g
ahora viene el filtro:
quiero poner: si el campo nomblibro de la bd (una vez recorrido) no es igual al valor que trae del form entonces haz la inserci贸n sino, no hagas nada
if (.$row["nomblibro"].!=$_POST[\'nomblibro\'])
{
mysql_db_query("estudios","insert into libros (codmod,nomblibro) values (\'".$_POST[\'codmod\']."\',\'".$_POST[\'nomblibro\']."\')");
//mysql_db_query("estudios","insert into libros (codmod,nomblibro,nombautor,nombeditorial,isbn) values
(\'".$_POST[\'codmod\']."\',\'".$_POST[\'nomblibro\']."\',\'".$_POST[\'nombautor\']."\',\'".$_POST[\'nombeditorial\']."\',\'".$_POST[\'isbn\']."\')");
}
elseif
?>
<table width="300" border="1" cellpadding="0" cellspacing="0" bordercolor="#000000">
<tr>
<td><table width="300" border="0" cellpadding="0" cellspacing="0">
<tr>
<td> <div align="center"><font size="6">Registro Insertado</font></div></td>
</tr>
<tr>
<td bgcolor="#000000"><table width="300" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
</tr>
<tr>
<td bgcolor="#3399CC"> </td>
</tr>
</table></td>
</tr>
<tr>
<td bgcolor="#3399CC">
<div align="center">
<FORM ACTION="visualizar.php" METHOD="POST" name="insertar" id="insertar">
<input name="codmod" type="hidden" value="<? echo $_POST[\'codmod\'] ?>">
<INPUT name="SUBMIT2" TYPE="SUBMIT" value="Contenido del M贸dulo">
</FORM>
</div></td>
</tr>
<tr>
<td height="45" bgcolor="#3399CC">
<div align="center">
<FORM ACTION="subirbiblio.php" METHOD="POST" name="insertar" id="insertar">
<INPUT name="SUBMIT2" TYPE="SUBMIT" value="Volver a la B煤squeda">
</FORM>
</div></td>
</tr>
</table></td>
</tr>
</table>
<? echo $_POST[\'isbn\'] ?>
<?
while ($row=mysql_fetch_array($csql))
{
echo \'<td>\'.$row["nomblibro"].\'</td>\';
}
?>
<p> </p>
</BODY>
</HTML>
Me podr铆as decir cual es la funci贸n de la variable " codmod " ???
No te ser铆a m谩s facil realizar la 1° query coloc谩ndole como condici贸n el nombre del libro en cuesti贸n ( Ejemplo : $csql= " select * from libros where nomlibro = '".$_POST['nomlibro']."'"; )
y as铆 sabr铆as m谩s facilmente si ese libro est谩 贸 no en tu BD ..........
No te ser铆a m谩s facil realizar la 1° query coloc谩ndole como condici贸n el nombre del libro en cuesti贸n ( Ejemplo : $csql= " select * from libros where nomlibro = '".$_POST['nomlibro']."'"; )
y as铆 sabr铆as m谩s facilmente si ese libro est谩 贸 no en tu BD ..........
te explico todo el funcionamiento.
es una base de datos para un instituto y consiste en hacer una parte publica para consultar bibliograf铆a recomendada y una privada para los profesores para que la suban, modifiquen y eliminen.
as铆 que estamos en la subida.
en una 1ª p谩g, salen 4 combos anidados que toman valores de la bd haciendo filtros.
1er combo r茅gimen, al seleccionar carga en el 2º de familias pasando el c贸digo de r茅gimen a la select de familias. lo mismo desde familias hasta ciclos y lo mismo desde ciclos hasta m贸dulos (asignaturas), el 煤ltimo combo de m贸dulos carga el c贸digo de m贸dulo para que al pasar a la siguiente p谩g del formulario, lo meta en un input hidden junto con las cajas de texto del resto de info de la tabla libros:nombautor, monblibro, editorial,isbn.
por eso no puedo hacer la select sobre nomblibro, porque el bloque de registros se va a insertar en la tabla libros con un c贸digo de m贸dulo espec铆fico para que al utilizar laparte p煤blica y el usuario acceda a la informaci贸n se acceda dela misma forma a trav茅s delos combos citados, sacando un listado de libros que solo pertenecen al m贸dulo escogido.
si hago la select hacia nombre de libro, me coge el de todos los m贸dulos.
por eso lo hago sobre codmod(c贸digo de m贸dulo) para que solo me seleccione los que pertenecen a ese m贸dulo (el que escogi贸 el profesor al ir a insertar un nuevo libro). se cual es el c贸digo de m贸dulo porque viene cargado por post desde la p谩g de combos.
as铆 que habr铆a 3 p谩gs, 1-selecci贸n del m贸dulo a trav茅s de combos. 2-formulario de inserci贸n de campos dela tabla libros. 3-script de inserci贸n a bd y (lo que intento) controlar la no duplicaci贸n.
oye, gracias por molestarte en contestarme, todas tus sugerencias ser谩n muy bien recibidas.
es una base de datos para un instituto y consiste en hacer una parte publica para consultar bibliograf铆a recomendada y una privada para los profesores para que la suban, modifiquen y eliminen.
as铆 que estamos en la subida.
en una 1ª p谩g, salen 4 combos anidados que toman valores de la bd haciendo filtros.
1er combo r茅gimen, al seleccionar carga en el 2º de familias pasando el c贸digo de r茅gimen a la select de familias. lo mismo desde familias hasta ciclos y lo mismo desde ciclos hasta m贸dulos (asignaturas), el 煤ltimo combo de m贸dulos carga el c贸digo de m贸dulo para que al pasar a la siguiente p谩g del formulario, lo meta en un input hidden junto con las cajas de texto del resto de info de la tabla libros:nombautor, monblibro, editorial,isbn.
por eso no puedo hacer la select sobre nomblibro, porque el bloque de registros se va a insertar en la tabla libros con un c贸digo de m贸dulo espec铆fico para que al utilizar laparte p煤blica y el usuario acceda a la informaci贸n se acceda dela misma forma a trav茅s delos combos citados, sacando un listado de libros que solo pertenecen al m贸dulo escogido.
si hago la select hacia nombre de libro, me coge el de todos los m贸dulos.
por eso lo hago sobre codmod(c贸digo de m贸dulo) para que solo me seleccione los que pertenecen a ese m贸dulo (el que escogi贸 el profesor al ir a insertar un nuevo libro). se cual es el c贸digo de m贸dulo porque viene cargado por post desde la p谩g de combos.
as铆 que habr铆a 3 p谩gs, 1-selecci贸n del m贸dulo a trav茅s de combos. 2-formulario de inserci贸n de campos dela tabla libros. 3-script de inserci贸n a bd y (lo que intento) controlar la no duplicaci贸n.
oye, gracias por molestarte en contestarme, todas tus sugerencias ser谩n muy bien recibidas.
Entonces que te parece si en una misma query verificas si existe ese Libro 贸 No, en tal modulo, ejemplo :
$csql= "select * from libros where nomlibro = '".$_POST['nomlibro']."' and codmod='".$_POST['codmod']."';";
No se si te entend铆 bien ..... que te parece ??
$csql= "select * from libros where nomlibro = '".$_POST['nomlibro']."' and codmod='".$_POST['codmod']."';";
No se si te entend铆 bien ..... que te parece ??
si, si, me entendiste perfectamente.
es que estoy un poco liado con todo esto, solo llevo un par de semanas con php y sql.
entonces, ahora tengo una select de todos los campos del libro que pertenece al m贸dulo escogido cuyo nombre de libro es igual al introducido en el formulario.
pero, tengo que hacer a continuaci贸n el if, no?
como lo hago? como le digo que si el nombre de libro ya existe no lo inserte?
por ahora con la select solo tengo valores para comparar.
es que estoy un poco liado con todo esto, solo llevo un par de semanas con php y sql.
entonces, ahora tengo una select de todos los campos del libro que pertenece al m贸dulo escogido cuyo nombre de libro es igual al introducido en el formulario.
pero, tengo que hacer a continuaci贸n el if, no?
como lo hago? como le digo que si el nombre de libro ya existe no lo inserte?
por ahora con la select solo tengo valores para comparar.
Ok, la cosa ser铆a m谩s 贸 menos as铆 :
mysql_connect("localhost","admin","2610");
mysql_select_db("estudios");
$result=mysql_query("select * from libros where nomlibro = '".$_POST['nomlibro']."' and codmod='".$_POST['codmod']."';");
$num_resultados=mysql_num_rows($result);
if($num_resultados<>0)
{
$query_insert="insert into libros (codmod,nomblibro,nombautor,nombeditorial,isbn) values ('".$_POST['codmod']."','".$_POST['nomblibro']."','".$_POST['nombautor']."','".$_POST['nombeditorial']."','".$_POST['isbn']."');";
mysql_query($query_insert);
}
else
{
/* Aqu铆 va el c贸digo cuando YA existe el Libro en el Modulo elegido, No s茅, puedes enviarle
un mensaje de que ya existe ese libro en ese Modulo, por ejemplo !! */
}
y, como V谩 ??
mysql_connect("localhost","admin","2610");
mysql_select_db("estudios");
$result=mysql_query("select * from libros where nomlibro = '".$_POST['nomlibro']."' and codmod='".$_POST['codmod']."';");
$num_resultados=mysql_num_rows($result);
if($num_resultados<>0)
{
$query_insert="insert into libros (codmod,nomblibro,nombautor,nombeditorial,isbn) values ('".$_POST['codmod']."','".$_POST['nomblibro']."','".$_POST['nombautor']."','".$_POST['nombeditorial']."','".$_POST['isbn']."');";
mysql_query($query_insert);
}
else
{
/* Aqu铆 va el c贸digo cuando YA existe el Libro en el Modulo elegido, No s茅, puedes enviarle
un mensaje de que ya existe ese libro en ese Modulo, por ejemplo !! */
}
y, como V谩 ??
no me hace el insert.
lo tengo as铆
le met铆 todos los campos para que el libro tenga que ser exactamente el mismo.
<?
//Conexion con la base
mysql_connect("localhost","admin","2610");
//Ejecucion de la sentencia SQL
$result=mysql_db_query("estudios","select * from libros where codmod='".$_POST['codmod']."' and nomblibro='".$_POST['nomblibro']."' and nombautor='".$_POST['nombautor']."' and nombeditorial='".$_POST['nombeditorial']."' and isbn='".$_POST['isbn']."'");
$num_resultados=mysql_num_rows($result);
if ($num_resultados!=0)
{
mysql_db_query("estudios","insert into libros (codmod,nomblibro,nombautor,nombeditorial,isbn) values ('".$_POST['codmod']."','".$_POST['nomblibro']."','".$_POST['nombautor']."','".$_POST['nombeditorial']."','".$_POST['isbn']."')");
}
else
{
echo hola;
}
?>
por cierto como puedo mandar un mensaje de que ya existe? redireccionando a otra p谩g, cual ser铆a el comando para la redirecci贸n?
lo tengo as铆
le met铆 todos los campos para que el libro tenga que ser exactamente el mismo.
<?
//Conexion con la base
mysql_connect("localhost","admin","2610");
//Ejecucion de la sentencia SQL
$result=mysql_db_query("estudios","select * from libros where codmod='".$_POST['codmod']."' and nomblibro='".$_POST['nomblibro']."' and nombautor='".$_POST['nombautor']."' and nombeditorial='".$_POST['nombeditorial']."' and isbn='".$_POST['isbn']."'");
$num_resultados=mysql_num_rows($result);
if ($num_resultados!=0)
{
mysql_db_query("estudios","insert into libros (codmod,nomblibro,nombautor,nombeditorial,isbn) values ('".$_POST['codmod']."','".$_POST['nomblibro']."','".$_POST['nombautor']."','".$_POST['nombeditorial']."','".$_POST['isbn']."')");
}
else
{
echo hola;
}
?>
por cierto como puedo mandar un mensaje de que ya existe? redireccionando a otra p谩g, cual ser铆a el comando para la redirecci贸n?
Hber prueba esto :
<?
num_resultados=0;
//Conexion con la base
mysql_connect("localhost","admin","2610");
//Ejecucion de la sentencia SQL
$result=mysql_db_query("estudios","select * from libros where codmod='".$_POST['codmod']."' and nomblibro='".$_POST['nomblibro']."' and nombautor='".$_POST['nombautor']."' and nombeditorial='".$_POST['nombeditorial']."' and isbn='".$_POST['isbn']."'");
$num_resultados=mysql_num_rows($result);
echo "Num_Resultados es ..:".$num_resultados;
if ($num_resultados!=0)
{
mysql_db_query("estudios","insert into libros (codmod,nomblibro,nombautor,nombeditorial,isbn) values ('".$_POST['codmod']."','".$_POST['nomblibro']."','".$_POST['nombautor']."','".$_POST['nombeditorial']."','".$_POST['isbn']."')");
}
else
{
?>
<script language="javascript">
alert("Ese libro ya Existe !!");
</script>
<?
require("pagina_anterior.php");
}
?>
en el require le cambias el require "pagina_anterior.php" por la p谩gina a la cual redireccionas ......
<?
num_resultados=0;
//Conexion con la base
mysql_connect("localhost","admin","2610");
//Ejecucion de la sentencia SQL
$result=mysql_db_query("estudios","select * from libros where codmod='".$_POST['codmod']."' and nomblibro='".$_POST['nomblibro']."' and nombautor='".$_POST['nombautor']."' and nombeditorial='".$_POST['nombeditorial']."' and isbn='".$_POST['isbn']."'");
$num_resultados=mysql_num_rows($result);
echo "Num_Resultados es ..:".$num_resultados;
if ($num_resultados!=0)
{
mysql_db_query("estudios","insert into libros (codmod,nomblibro,nombautor,nombeditorial,isbn) values ('".$_POST['codmod']."','".$_POST['nomblibro']."','".$_POST['nombautor']."','".$_POST['nombeditorial']."','".$_POST['isbn']."')");
}
else
{
?>
<script language="javascript">
alert("Ese libro ya Existe !!");
</script>
<?
require("pagina_anterior.php");
}
?>
en el require le cambias el require "pagina_anterior.php" por la p谩gina a la cual redireccionas ......
ok, cojonudo, much铆iiisimas gracias.
no me iba porque al poner la condici贸n de si es igual a 0 pon铆a = y es ==. as铆 me va de puta madre.
oye, es dif铆cil obtener scripts de internet que se ajusten a las necesidades de cada uno, as铆 que gracias de nuevo por tu ayuda.
no me iba porque al poner la condici贸n de si es igual a 0 pon铆a = y es ==. as铆 me va de puta madre.
oye, es dif铆cil obtener scripts de internet que se ajusten a las necesidades de cada uno, as铆 que gracias de nuevo por tu ayuda.
