Foros del Web » Programando para Internet » PHP »

Insertar registros de un array comprobando que no existan

Estas en el tema de Insertar registros de un array comprobando que no existan en el foro de PHP en Foros del Web. Hola, alguien puede ayudarme? Tengo un formulario que me muestra el campo de la BD "doc" y selecciono varios a través de checkbox para poder ...
  #1 (permalink)  
Antiguo 14/11/2011, 14:18
 
Fecha de Ingreso: noviembre-2011
Mensajes: 2
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta Insertar registros de un array comprobando que no existan

Hola, alguien puede ayudarme?
Tengo un formulario que me muestra el campo de la BD "doc" y selecciono varios a través de checkbox para poder asignarles permiso a un usuario (los usuarios los muestro en un desplegable) y todo ello grabarlo en la BD. Todo funciona bien pero ahora quiero comprobar que esos "doc" con ese usuario elegido no existen en la BD. Si existen, muestro un mensaje y si no, hago un INSERT por cada doc seleccionado. El problema es que siempre me inserta registros, aún cuando ya existen. Os pongo el código: (creo que el primer for donde recorro el array es donde está el fallo... )
<?PHP
require_once("conexion.php");
$usuario=$_POST["usuario"];
$archivo=$_POST["archivo"];
$url=$_POST["url"];
$carpeta=$_POST["carpeta"];


for($i = 0; $i < count($archivo); $i++){
$sql="SELECT * FROM archivos WHERE usuario='.$usuario.' AND doc='.$archivo[$i]'";
$consulta = mysql_query($sql,$conexion) or die(mysql_error());
echo $archivo[$i];

if (mysql_num_rows($consulta)>0){
echo "<font class='texto'><br>DATOS NO GUARDADOS. SE HA PRODUCIDO EL SIGUIENTE ERROR: <br></font>";
echo "<font class='normal'>El usuario <font class='texto'>".$usuario."</font> ya tiene permiso para descargar el archivo: <font class='texto'>".$archivo[$i]."</font><br></font>";
}
else{
$sql2 = "INSERT INTO archivos (usuario,doc,url) VALUES ('$usuario','$archivo[$i]','descargas/$carpeta/$archivo[$i]')";
if($consulta2 = mysql_query($sql2,$conexion)){
echo "<font class='normal'>Archivo <font class='texto'>".$archivo[$i]. "</font> asignado a <font class='texto'> ".$usuario."</font><br>";
}else{
echo "<font class='normal'>Error al asignar permiso.</font>";
}
}

}

mysql_close($conexion);

?>
  #2 (permalink)  
Antiguo 14/11/2011, 16:28
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Insertar registros de un array comprobando que no existan

Algo me dice que el problema está aquí:
Código PHP:
Ver original
  1. "SELECT * FROM archivos WHERE usuario='.$usuario.' AND doc='.$archivo[$i]'";
Específicamente en los puntos.

Al estar entrecomillada la sentencia sql, no los necesita:
Código PHP:
Ver original
  1. "SELECT * FROM archivos WHERE usuario='$usuario' AND doc='$archivo[$i]'";

o bien, si quieres usarlos para mayor claridad (aunque a mi me resulta lo contrario)
Código PHP:
Ver original
  1. "SELECT * FROM archivos WHERE usuario='".$usuario."' AND doc='".$archivo[$i]."'";
  #3 (permalink)  
Antiguo 14/11/2011, 16:34
 
Fecha de Ingreso: noviembre-2011
Mensajes: 2
Antigüedad: 12 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Insertar registros de un array comprobando que no existan

Mil gracias! Ya está solucionado, efectivamente eran los puntos!
A veces estás mirando mucho tiempo una cosa que es una tontería, lo tienes delante pero no lo ves... je!
Muchas gracias

Etiquetas: formulario, mysql, registro, registros, sql, usuarios
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 18:56.