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

    Gestione delle categorie

    Ciao a tutti,
    Ho bisogno nuovamente di voi, mi serve un spunto su come strutturare un pezzo di codice che vado subito a spiegare...

    Ho le seguenti tabelle
    categorie
    id nomeCategoria

    corel_categorie
    id idNews idCateogira

    L'assegnazione delle categorie viene tramite delle checkbox.
    Il cliente può modificare l'articolo e potrebbe aggiungere una nuova categoria selezionando una nuova checkbox come toglierla, ovviamente deselezionandola.

    E qui viene il dubbio come posso gestire la cancellazione di una categoria?Come faccio a capire che un categoria non è più associata a quel articolo?

    Il seguente codice lo utilizzo nella modifica delle categorie
    Codice PHP:
    foreach($categoria as $cat){ 

        
    $sql_cat="SELECT cat.categorie FROM dw_categorie AS cat INNER JOIN dw_corel_categorie AS corel WHERE corel.idNews='".$ArticoloId."' AND corel.idCategorie=cat.id";
        
    $rs_controllo=mysql_query($sql_cat) or die(mysql_error());
        
    $nameCat=array();
        while(
    $rows=mysql_fetch_array($rs_controllo)){
            
    $nameCat[]=$rows['categorie'];
            
        }
        if(
    in_array($cat,$nameCat)){
            
        }else{
            
            
    $id_cat="SELECT * FROM dw_categorie WHERE categorie='".$cat."'";
            
    $rs_cat=mysql_query($id_cat) or die(mysql_error());
            while(
    $idCat=mysql_fetch_array($rs_cat)){
                
    $id_new_cat=$idCat['id'];
                
    $new_cat="INSERT INTO dw_corel_categorie (id, idNews, idCategorie) VALUES(NULL, '".$ArticoloId."','".$id_new_cat."')";
                
    $rs_new_cat=mysql_query($new_cat)or die(mysql_error());
            }
        }
            

    Come posso implementare la cancellazione?

    Grazie a tutti ...

  2. #2
    Non so se ho capito bene, ma per sapere se una categoria è associata ad un articolo basta fare una select count degli articoli con quella categoria, se il risultato è 0 cancelli, altrimenti non cancelli.

  3. #3
    Il checkbox ha un suo ID e un suo valore, quando arriva al codice php.
    Ti basta controllare se il valore è "on" o "off". On se checked, off se unchecked.
    Per sicurezza non verificare solo "on" e "off" ma anche "true" e "false" e "1" e "0". A volte i browser mandano in modo differente il valore.

  4. #4
    Purtroppo non è cosi semplice.
    Uno le categorie associate potrebbero essere più di una quindi il count potrebbe darmi un valore tipo 3

    Le categorie che mi vengono passate sono inserite in un array e quelle che attualmente sono associate pure.
    Stavo pensando di eliminare dal secondo array le categorie uguali e poi stampare il valore rimasto in questo modo ho la categoria da poter cancellare...
    Ma non riesco a fare la cancellazione appena scritta.

  5. #5
    Ciao dascos ti ringrazio per la risposta purtroppo non è quello che mi serve... io devo controllare se i dati passati sono stati modificati rispetto a quelli salvati nel db se sono state apportate delle modifiche alle checkbox andrò a modificare l'associazione delle categorie.

  6. #6
    Invece di vedere quali sono cambiate, cancellale tutte e inserisci tutte qulle associate.

    Non capisco perchè hai un id nella tabella corel_categorie, a che serve?

    Per caso associ più volte lo stesso articolo alla stessa categoria?

  7. #7
    L'id l'utilizzo come chiave primaria della tabella...
    E come soluzione è un pò drastica...

  8. #8
    Credo sia il caso che tu ci faccia qualche esempio pratico, altrimenti non riusciamo a focalizzare il problema.

  9. #9
    In questo caso la chiave della tabella dovrebbe essere idNews, idCategoria.

    La soluzione non è poi cos' drastica, bastano 2 query. E poi funziona!!

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.