Consigli su come tagliare questo codice

di il
21 risposte

21 Risposte - Pagina 2

  • Re: Consigli su come tagliare questo codice

    Perché alla fine dei conti a me serve una lista di "gruppi" di foto complete, e una lista di "gruppi" di foto incomplete
    non una lista di foto che hanno http nel campo link, o una lista di foto che hanno Error nel campo link

    il gruppo 1 è composto da 10 righe, tutte e 10 le righe hanno "http" nel campo link? allora il gruppo è completo
    di tutte le foto del gruppo 1 prelevo nome foto, gruppo, e url http
    il gruppo 2 è composto da 20 righe, alcune di queste righe hanno "http" nel campo link e altre invece hanno "Error"? allora il gruppo è incompleto (stessa cosa se hanno tutti Error)
    di tutte le foto del gruppo 2 prelevo nome foto, gruppo, ed Error
  • Re: Consigli su come tagliare questo codice

    tatino ha scritto:


    Se il valore link NON sarà MAI null allora puoi fare la query cosi
    select gruppo, nome_foto, if(link LIKE 'Error%',1,0) as errore_foto from FOTO where ...... and link is not null

    in questo modo escludi i risultati con link NULL che per definizione esclude di fatto tutto il gruppo
    si, il campo link può essere anche NULL, solo che se è NULL tutto il suo gruppo va escluso, perché se anche un solo campo è NULL anche tutti gli altri del suo gruppo sono NULL

    se un gruppo viene toccato da una operazione, tutti acquisiranno o http o Error o tutti solo uno dei 2 o mischiati. Ma i NULL si toglieranno tutti
  • Re: Consigli su come tagliare questo codice

    C'è anche da dire che, escludendo le righe che sono NULL
    se un gruppo ha anche solo una foto in Error, allora tutto il gruppo è in Error.
    Diversamente il gruppo può essere solo completo
    Se in un gruppo non trova Error, allora su tutti buoni per logica
    L'importante è che si lavori solo sui NOT NULL
  • Re: Consigli su come tagliare questo codice

    Ma non si può fare una sola query, che restituisca 2 set di risultati, tipo:

    SELECT * FROM foto WHERE (se tutti i campi di uno stesso gruppo hanno "http" nel campo link) as completi AND (se i campi di uno stesso gruppo hanno sia "http" che "Error" o anche 1 solo "Error") as incompleti WHERE link IS NOT NULL

    $sql = mysqli_query($mysqli_connection, "SELECT gruppo, nome_foto, link, if(link LIKE 'http%', 1, 0) as completi, if(link LIKE 'Error%', 1, 0) as incompleti FROM foto WHERE link IS NOT NULL ORDER BY percorso ASC");
  • Re: Consigli su come tagliare questo codice

    Vi ringrazio per l'aiuto che mi avete dato, grazie mille, oltre ad aver risolto ho imparato a fare delle query leggermente (ma molto leggermente) più complesse
    Ho risolto così
    $sql = mysqli_query($mysqli_connection, "SELECT gruppo, nome_foto, link, if(link LIKE 'http%', 1, 0) as completi, if(link LIKE 'Error%', 1, 0) as incompleti FROM foto WHERE link IS NOT NULL ORDER BY percorso ASC");
    while($riga = mysqli_fetch_assoc($sql)){
    	if($riga['completi']){
    		$completi['completi'][$riga['gruppo']][] = $riga['gruppo']."_".$riga['nome_foto']."_".$riga['link'];
    	}
    	if($riga['incompleti']){
    		$completi['incompleti'][$riga['gruppo']][] = $riga['gruppo']."_".$riga['nome_foto']."_".$riga['link'];
    	}
    }
    echo "<pre>"; print_r($completi);
    
    Array
    (
        [completi] => Array
            (
                [1] => Array
                    (
                        [0] => 1_DSC_8857.JPG_http
                        [1] => 1_DSC_8858.JPG_http
                        [2] => 1_DSC_8859.JPG_http
                    )
    
                [2] => Array
                    (
                        [0] => 2_DSC_8860.JPG_http
                    )
    
                [4] => Array
                    (
                        [0] => 4_DSC_8877.JPG_http
                        [1] => 4_DSC_8878.JPG_http
                        [2] => 4_DSC_8879.JPG_http
                    )
    
            )
    
        [incompleti] => Array
            (
                [2] => Array
                    (
                        [0] => 2_DSC_8861.JPG_Error
                        [1] => 2_DSC_8862.JPG_Error
                    )
    
                [4] => Array
                    (
                        [0] => 4_DSC_8876.JPG_Error
                    )
    
            )
    
    )
  • Re: Consigli su come tagliare questo codice

    melixo ha scritto:


    Vi ringrazio per l'aiuto che mi avete dato, grazie mille, oltre ad aver risolto ho imparato a fare delle query leggermente (ma molto leggermente) più complesse
    Ho risolto così
    Sono davvero molto contento, come vedi non serve assolutamente a niente chiedere solo "del codice" pronto ma è molto piu' utile, formativo e produttivo arrivare alla soluzione da solo.
    Hai perso sicuramente più tempo pero' sono certo che stavolta sei consapevole di quello che hai scritto e resterà nel tuo bagaglio di conoscenze per le prossime volte.

    Salvo.
  • Re: Consigli su come tagliare questo codice

    Io non chiedo propriamente solo del codice, anche se è insita in una domanda il fatto di cercare un codice come risposta
    ma anche se mi dà del codice pronto io vado a capire comunque perché, diversamente la prossima volta avrei lo stesso problema.
    E comunque se in risposta ad una domanda mi si danno delle pagine da leggere dicendomi che lì sta la soluzione per me è già un grandissimo aiuto
    Grazie!
Devi accedere o registrarti per scrivere nel forum
21 risposte