¿Qué me falta en este código?

Xpert jorvidu !
Mi duda es que en este código ¿qué tengo mal? Por más que busco no encuentro y quisiera ver si me puedes ayudar para resolverlo, te explico:
Se reciben estos datos:
?
    if($_POST)
    {
        $folio_venta = $_POST['miusuarioml'];
        $articulos = $_POST['articulos'];
        $fecha_compra = $_POST['mifecha'];
        $cantidad = $_POST['cantidad'];
        $envio = $_POST['envio'];
        $usuarioml_art = $_POST['miusuarioml'];
En esta parte hago una consulta para saber cuáles ya están en la BD y cuáles no:
??????????????????    
        $conexion = mysql_connect("localhost","root","");
        mysql_select_db("ventasml",$conexion);
$sql_query = "SELECT Articulos_Codigo FROM compra_articulos WHERE compra_articulos.FolioVenta = " . $_POST['miusuarioml'];
        $tiene = mysql_query($sql_query);
        $columna = mysql_fetch_array($tiene);
Aquí checo si es el 1er dato que entra en la BD:
??????????????????
        if ($columna['Articulos_Codigo'] == "")
        {
         mysql_select_db("ventasml",$conexion);
         $sql_query = "INSERT INTO compra_articulos values('$folio_venta','$articulos','$fecha_compra','$cantidad','$envio','$usuarioml_art')";
         mysql_query($sql_query,$conexion);
        }
        else
Este es el 'else' por si no es el primer dato que se va a agregar y lo busca en la BD para que no se repita:
??????????????????
        {
         $busca = "SELECT Articulos_Codigo FROM compra_articulos WHERE compra_articulos.FolioVenta = " . $folio_venta;
         if (mysql_query($busca))
         {
          $tienes = mysql_query($busca);
          while ($col = mysql_fetch_array($tienes))
          {
Si lo encuentra manda un ALERT diciendo que ya está en la BD:
??????????????????
           if ($col['Articulos_Codigo'] == $_POST['articulos'])
           {
            echo "
<script>alert('Ya has comprado este articulo.')</script>
";
            break;
           }
           else
Si no lo encuentra, lo guarda en la BD:
??????????????????
           {
            $conexion = mysql_connect("localhost","root","");         
            $sql_query3 = "INSERT INTO compra_articulos values('$folio_venta','$articulos','$fecha_compra','$cantidad','$envio','$usuarioml_art')";
            mysql_query($sql_query3,$conexion);
            break;
           }
          }
         }
        }
¿Qué es lo que pasa?
Que cuando agrego el 1er artículo todo va bien y también el 2o pero, si intento meter alguno de estos 2 de nuevo pues me da un ERRRRRRROOR grandísimo, ya que me permite meter un montón de artículos iguales, excepto el primero, por ejemplo:
Guardo Articulo USB ---- ok.
Guardo Articulo Teclado ----- ok.
Guardo Articulo Teclado(otra vez) ------ok.
Guardo Articulo Teclado(otra vez) ------ok.
...
...
Y azi me sigo agregando Teclados y cualquier otro tipo de Artículos y no me deshabilita el acceso a la BD por más repetidos que estén los artículos.
Pues si me pudieses ayudar mil

1 respuesta

Respuesta
1
Tienes que regir la BD a través de los ID de los productos, nunca compararlos por su nombre, como me parece que estás haciendo.
Es decir, cada producto tiene una ID, un numero. Cuando vayas a meter ese producto en la BD, que sea a través de si ID, de forma que luego comparando números, va a ser mucho más coherente todo.
Hola,
Pues de esa forma es como lo estoy haciendo:
 if ($col['Articulos_Codigo'] == $_POST['articulos'])
Aquí busca el código no el nombre del articulo, Ya casi lo tengo resuelto pero me sigue creando duplicados de lo que voy comprando.
Gracias por tu respuesta.
Un Saludo, espero que puedas seguir ayudándome.
L.I. Juan Carmona.
Antes de insertar, haces esto:
"SELECT Articulos_Codigo FROM compra_articulos WHERE compra_articulos.FolioVenta = " . $folio_venta;
Ahí estás comparando FolioVenta, no es el id de cada producto... ¿no?
Hola,
"SELECT Articulos_Codigo FROM compra_articulos WHERE compra_articulos.FolioVenta = " . $folio_venta;
Ahí selecciono los artículos de un solo Folio, por ejemplo si el folio del comprador es 4:
Folio - Articulo
4 - ART1001
4 - ART1003
4 - ART1005
Esto es para saber solo los Códigos de Articulo y compararlos después con los que quiere comprar con:
$busca = "SELECT Articulos_Codigo FROM compra_articulos WHERE compra_articulos.FolioVenta = " . $folio_venta;
         if (mysql_query($busca))
         {
            $tienes = mysql_query($busca);
            while ($col = mysql_fetch_array($tienes))
            {
                if ($col['Articulos_Codigo'] == $_POST['articulos'])
               {
                 echo "
<script>alert('Ya has comprado este articulo.')</script>
";
                 break;
                }
               else
                {
       /*Aqui es donde no se que poner para que no me duplique los que vaya agregando*/
                $conexion = mysql_connect("localhost","root","");         
                 $sql_query3 = "INSERT INTO compra_articulos values
               ('$folio_venta','$articulos','$fecha_compra','$cantidad','$envio','$usuarioml_art')";
                 mysql_query($sql_query3,$conexion);
                 break;
                }
            }
        }
Saludos..!
L.I. Juan Carmona
Justo antes de aquí:
/*Aquí es donde no se que poner para que no me duplique los que vaya agregando*/
                $conexion = mysql_connect("localhost","root","");         
                 $sql_query3 = "INSERT INTO compra_articulos values
               ('$folio_venta','$articulos','$fecha_compra','$cantidad','$envio','$usuarioml_art')";
                 mysql_query($sql_query3,$conexion);
                 break;
Haz una consulta para ver si en folio_venta con ese código, ya existe un $articulos... yo lo veo lógico, haz una consulta previa y si está vacía, que inserte, y si no al break!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas