Foros del Web » Programando para Internet » PHP »

Insertar datos si no existen

Estas en el tema de Insertar datos si no existen en el foro de PHP en Foros del Web. Hola! En mi proyecto que nunca acaba, recojo las variables de un formulario en un array y las inserto en una tabla "ingredientes" con la ...
  #1 (permalink)  
Antiguo 21/07/2012, 14:27
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Insertar datos si no existen

Hola!

En mi proyecto que nunca acaba, recojo las variables de un formulario en un array y las inserto en una tabla "ingredientes" con la siguiente query:
Código PHP:
 mysql_query("INSERT INTO ingredientes (nombreIngrediente) VALUES ('".$ingrediente[$i]."')"); 
El problema viene que inserta el ingrediente en la tabla independientemente de que el ingrediente se encuentre ya en ella o no.
Como podria hacerlo para que inserte solo el ingrediente si no se encuentra en la tabla?

GRacias
__________________
Tecnología y tutoriales
  #2 (permalink)  
Antiguo 21/07/2012, 14:56
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Insertar datos si no existen

if(exist($ingrediente[$i]){

echo "Este ingrendiente ya se encuentra registrado.";
}else{
mysql_query("INSERT INTO ingredientes (nombreIngrediente) VALUES ('".$ingrediente[$i]."')");
}


pero recuerda hacer la consulta..

otra solucion seria esta



$i='el ingrediente';
echo "<br/>";
$d=mysql_query("SELECT * FROM ingrendientes WHERE ingredientes='$i'");
$e=mysql_num_rows($d);
if($e==1){
echo "Existe en nuestra base de datos";
}else{
mysql_query("INSERT INTO ingredientes (nombreIngrediente) VALUES ('".$ingrediente[$i]."')");
}


Saludos,
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #3 (permalink)  
Antiguo 22/07/2012, 06:50
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Insertar datos si no existen

Ok! Entiendo que la consulta que dices que tengo que hacer en la primera opcion seria:
Código PHP:
mysql_query(SELECT FROM ingredientes
Y ya con esto bastaria no?
__________________
Tecnología y tutoriales
  #4 (permalink)  
Antiguo 22/07/2012, 07:04
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Insertar datos si no existen

Hola
He intentado lo que me has dicho de la siguiente forma :
Código PHP:
 echo "Ingredientes necesarios:".
        
"<ol>";
   while (
$i $n)
   {
    if (
$ingrediente[$i]!='')
        {
         echo 
"<li>{$ingrediente[$i]} {$cantidad[$i]} {$idUnidad[$i]}</li>";
         
mysql_query("SELECT * FROM ingredientes");
         if (
exist($ingrediente[$i])) {
            echo 
"el ingrediente"$ingrediente[$i]." ya existe por lo que no se ha introducido<br> ";
            }else{
         
mysql_query("INSERT INTO ingredientes (nombreIngrediente) VALUES ('".$ingrediente[$i]."')");}
        }
      
$i++;
   }
   
   echo 
"</ol>"
Pero me devuelve el siguiente error:
Cita:
Fatal error: Call to undefined function exist() in /Applications/XAMPP/xamppfiles/htdocs/recetas/insertarreceta.php on line 98
Porque?
__________________
Tecnología y tutoriales
  #5 (permalink)  
Antiguo 22/07/2012, 07:11
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Insertar datos si no existen

le falta una s
es exists
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #6 (permalink)  
Antiguo 22/07/2012, 07:27
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Insertar datos si no existen

Pues... aun poniendole la s sigue dando el mismo error....
__________________
Tecnología y tutoriales
  #7 (permalink)  
Antiguo 22/07/2012, 07:40
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Insertar datos si no existen

porque estas usando arrays?? ese es el problema...
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #8 (permalink)  
Antiguo 22/07/2012, 07:56
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Insertar datos si no existen

intenta con esto



echo "Ingredientes necesarios:".
"<ol>";
while ($i < $n)
{
$ingredientes=$ingrediente[$i];
if ($ingredientes=='')
{
echo "<li>{$ingredientes} {$cantidad[$i]} {$idUnidad[$i]}</li>";
mysql_query("SELECT * FROM ingredientes");
if (exist($ingrediente[$i])) {
echo "el ingrediente". $ingredientes." ya existe por lo que no se ha introducido<br> ";
}else{
mysql_query("INSERT INTO ingredientes (nombreIngrediente) VALUES ('".$ingredientes."')");}
}
$i++;
}

echo "</ol>";
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #9 (permalink)  
Antiguo 22/07/2012, 10:36
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Insertar datos si no existen

Hola de nuevo gldelossantos

Antes que nada agradecerte todas las respuestas y el interes por ayudarme.
Al final no me ha servido ninguna de tus respuestas, yo creo que es por la funcion exists
ya que siempre me lanzaba el mismo error.

Lo he solucionado con esta FAQ : http://www.forosdelweb.com/wiki/PHP:...os_en_mi_BD%3F

El resultado final ha quedado asi:

Código PHP:
   echo "Ingredientes necesarios:".
        
"<ol>";
   while (
$i $n)
   {
    if (
$ingrediente[$i]!='')
        {
         echo 
"<li>{$ingrediente[$i]} {$cantidad[$i]} {$idUnidad[$i]}</li>";
         
$busqueda=mysql_query("SELECT * FROM ingredientes WHERE nombreIngrediente='$ingrediente[$i]'");
         if(
mysql_num_rows($busqueda)>0){
            echo 
"el ingrediente "$ingrediente[$i]." ya existe por lo que no se ha introducido<br> ";
            }else{
         
mysql_query("INSERT INTO ingredientes (nombreIngrediente) VALUES ('".$ingrediente[$i]."')");}
        }
      
$i++;
   }
   
   echo 
"</ol>"
Lo dicho: Muchisimas gracias!
__________________
Tecnología y tutoriales
  #10 (permalink)  
Antiguo 22/07/2012, 18:28
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años
Puntos: 34
Respuesta: Insertar datos si no existen

eso es redundante, estas consultando 2 veces en lugar de 1. Establecé nombreIngrediente como campo unique y ya la base de datos se encarga de que no puedas insertar mas de uno, no hay que comprobar nada.

y si no te gusta eso podes ponerlo como PK y usar:
Código SQL:
Ver original
  1. mysql_query("REPLACE ingredientes (nombreIngrediente) VALUES ('".$ingrediente[$i]."')");
  #11 (permalink)  
Antiguo 22/07/2012, 19:01
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Insertar datos si no existen

dryant debes tratar de interpretar se dice aqui y tambien buscar el error... yo te he dado pista, entonces tu deber es analizar y aplicar la idea k se te brinda, en mi post anterior cometi un error con unas comillas, que debes saber buscar esos errorcitos para que puedas aprender y resolver mas rapido tus inconvenientes...

saludos,
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #12 (permalink)  
Antiguo 22/07/2012, 19:13
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años
Puntos: 34
Respuesta: Insertar datos si no existen

para que comprobar con php si ya se puede comprobar automaticamente sin escribir nada?

Etiquetas: formulario, mysql, tabla, variables
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 19:07.