Consigli su come tagliare questo codice

di melixo il
21 risposte

21 Risposte - Pagina 2

  • 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
  • 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
  • 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
  • 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");
  • 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
                    )
    
            )
    
    )
  • 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.
  • 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