Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Non inserire gli stessi valori nel database

    Salve ragazzi, ho questo codice dove inserisce dei valori contenuti in array nel database, però volevo fare in modo che se nell'array un qualsiasi valore sia ripetuto venga inserito una sola volta nel database, ecco il codice:

    Codice PHP:
    $q "SELECT * FROM products_options_values WHERE products_options_values_name = '".$_POST['Variante1']."' && 
    products_options_values_name = '"
    .$_POST['Variante2']."'"
    $s mysql_query($q) or die (mysql_error()); 
    while (
    $row mysql_fetch_array($s)){      
     
    $variante[] = $row['products_options_values_name']; 

    $array1 explode("," ,$_POST['TipoVariante1']); 
     
    $num 1
    if (
    in_array($num$array1)){     
    $res array_unique($array1); 

    $array2 explode("," ,$_POST['Variante1']);  
    $nume 1
    if (
    in_array($nume$array2)){     
    $res1 array_unique($array2); 
    }   
    $array $res;  
    $var2=count($array);  
    $res false;  
    for(
    $i=0;$i<$var2;$i++) { 
    if (
    $array[$i]==$variante[$i])     
    {
     
    $res1=true;     
    }
     }  
    if(
    $res1 == false) { 
     
    $q "SELECT * FROM products_options WHERE products_options_name = '".$_POST['TipoVariante1']."'"
    $s mysql_query($q); 
    while (
    $row mysql_fetch_array($s)){ 
    $vari $row['products_options_id']; 

    $vari1 setstockvar($params['Variante1']); 
    $pid $_POST['Model'];  
    $query "INSERT INTO products_attributes (products_attributes_id, products_id, options_id, options_values_id, product_attribute_is_free, attributes_discounted, attributes_price_base_included) 
    VALUES ('', '
    $pid', '$vari', '$vari1', '1', '1', '1')"
    $insert mysql_query($query);    
    if(!
    $insert) die(mysql_error());  
    }  
    }; 
    Quindi se nell'array è contenuto ad esempio: $array = (1,2,2,3,1);
    nel database deve essere inserito solo 1, 2, 3.

    Spero di essere stato abbastanza chiaro.

    Grazie

  2. #2

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Grazie per la risposta, potresti farmi un'esempio pratico?

    Grazie

  4. #4
    Originariamente inviato da intimoviro
    Grazie per la risposta, potresti farmi un'esempio pratico?

    Grazie
    ne hai diversi nel manuale che ti ho linkato... es.:

    Example #2 array_unique() and types
    <?php
    $input = array(4, "4", "3", 4, 3, "3");
    $result = array_unique($input);
    var_dump($result);
    ?>

    The above example will output:

    array(2) {
    [0] => int(4)
    [2] => string(1) "3"
    }

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Quindi:
    //$_POST.... è una stringa
    $array1 = explode("," ,$_POST['TipoVariante1']);
    $res = array_unique($array1);

    Giusto?

  6. #6
    Originariamente inviato da intimoviro
    Quindi:
    //$_POST.... è una stringa
    $array1 = explode("," ,$_POST['TipoVariante1']);
    $res = array_unique($array1);

    Giusto?
    puo' essere. La sintassi e' corretta.

    Stampa l'array $_POST e valuta le azioni che sono piu' opportune.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    perché tanta fatica, lo fa di base sql se definisci il campo che ti interessa come chiave primaria o unique.

  8. #8
    Originariamente inviato da bionicoz
    perché tanta fatica, lo fa di base sql se definisci il campo che ti interessa come chiave primaria o unique.
    forse perche' in questo caso uscirebbe un errore e fallirebbe la query. Inoltre verrebbero valutate tutte le presenze nella tabella e non i duplicati possibili della stessa tupla.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Perchè ora ti spiego come è strutturato il database:


    (1)products_attributes_id (chiave primaria e autoincrementante)

    (2)products_id (sarebbe l'id del prodotto che serve per associare un prodotto a delle varianti)

    (3)options_id (va l'id dell'opzione TipoVariante1)

    (4)options_values_id (va la seconda opzione che deve essere associata al prodotto)


    In products_id può contenere anche più volte lo stesso valore del resto come anche le altre tabell, però il problema sorge quando in tutte e quattro le tabelle sono contenuti gli stessi valori, cioè:

    Così va bene
    (1) = 1
    (2) = 10
    (3) = 9
    (4) = 2

    Anche così va bene
    (1) = 1
    (2) = 10
    (3) = 9
    (4) = 3//valore diverso

    Così nocioè ripete dei valori che già sono presenti in tutte e quattro le tabelle)

    (1) = 1
    (2) = 10
    (3) = 9
    (4) = 2

    Spero di essere stato abbastnza chiaro

  10. #10
    Scusate ragazzi, ma sono interessato perché allora mi sa che nn ho capito molto di come funziona un db nel profondo
    Vi dico quello che penso io e ditemi dove sbaglio il ragionamento: (visto che devo anche dare un esame su sql a breve :P)

    la query è una insert semplice in un'unica tabella, ed è questa:
    Codice PHP:
    "INSERT INTO products_attributes (products_attributes_id, products_id, options_id, options_values_id, product_attribute_is_free, attributes_discounted, attributes_price_base_included)
    VALUES ('', '
    $pid', '$vari', '$vari1', '1', '1', '1')"
    Giusto?
    Da quel che ho letto/capito la chiave primaria è products_attributes_id, che per definizione deve essere unica. Forzando l'insert di una tupla con il campo products_attributes_id specificato, ed esistendo già tale chiave all'interno della tabella, nn si riceve semplicemente un errore? E se sto ciclando n inserimenti da array con php, quando ricevo errore di inserimento, non ho come effetto quello di passare alla prossima tupla da inserire?

    Scusate l'intromissione. Bio.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.