Pagina 2 di 2 PrimoPrimo 12
Visualizzazione risultati 31 fino 59 di 59
Like Tree3Likes

Discussione: ordinare numeri estratti

  1. #31
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,899

    Predefinito

    $var2 è una matrice ho modificato il codice precedente e adesso memorizza altri campi della precedente query.
    Inoltre tale codice può essere migliorato non produce output e se ti serve puoi aggiungere altro codice
    Se non ti è chiaro chiedi, la stringa di ogni elemento è autodescrittivo di per sé.
    Codice PHP:
    <?php
    $myvar
    = 'hi';
    ?>
    <html>
    Blablabla
    <?php
    //$myvar output mai eseguito
    ?>
    Sono io il programmatore che decido quando stampare su schermo, quindi potrei anche nominare dopo il tag html perché prima effettuo altre operazioni.
    Codice PHP:
    <?php
    $myvar
    = 'hi';
    $sum = 2+2=4;
    ?>
    <html>
    Blablabla
    <?php
    echo 'php dice ' . $num;
    ?>
    Ultima modifica di darbula : 27-11-2022 alle ore 10.04.35
    blackskyisback likes this.

  2. #32
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    provo piu' tardi e ti aggiorno

    grazie darbula

  3. #33
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    niente, ci rinuncio

    vengono restituiti tutti gli imdbid uguali, tt0046023

    il codice non riesce a trovare l'immagine in questo modo

    codice aggiornato con le ultime modifiche

    FILE PROGETTO V.2

    https://www.upload.ee/files/14700896...i_v.2.rar.html
    Ultima modifica di blackskyisback : 27-11-2022 alle ore 14.24.54

  4. #34
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,899

    Predefinito

    Cosa te lo fa pensare? Per esempio var_dump ($var2[0]['imdbid'], @$var2[1]['imdbid']); sono o no diversi? (Dentro al foreach che scorre $merge)
    È ovvio se creo una variabile fissa il valore non cambia (sia dentro il loop o fuori)
    Quando fai il debug si analizza il valore non l'output html altrimenti crea confusione (se supera il test del valore poi si crea html e si verifica il suo output).
    Secondo il codice della SELECT ho dimenticato title però intanto prova i restanti campi, così poi modifico in base le tue esigenze
    Ho una domanda, se imdbid non esiste nel tuo database può esistere la foto con imdbid.jpg? (occorre una leggera modifica al mio codice)
    Ultima modifica di darbula : 27-11-2022 alle ore 15.51.56

  5. #35
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Cosa te lo fa pensare? Per esempio var_dump ($var2[0]['imdbid'], @$var2[1]['imdbid']); sono o no diversi? (Dentro al foreach che scorre $merge)


    Citazione Originalmente inviato da darbula Visualizza messaggio
    Ho una domanda, se imdbid non esiste nel tuo database può esistere la foto con imdbid.jpg? (occorre una leggera modifica al mio codice)
    no, se non esiste imdbid la foto non esiste nella cartella,
    praticamente cerco l'attore tramite un motore di ricerca, vado nella scheda attore tramite link id
    e solo se esiste imdbid scarica la foto dal sito imdb.com

    caspita, un codice molto difficile per me, e tutto questo solo per ordinare dei numeri

    azzardo una richiesta, e' possibile fare il regex direttamente nella query di partenza e poi ordinare il tutto? forse cosi era piu' semplice

    title non sono sicuro che serva, in quanto lo visualizzo con la prima query
    Ultima modifica di blackskyisback : 27-11-2022 alle ore 17.23.51

  6. #36
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    alllego il file json estratto dalla query tramite Navicat Premium

    https://www.upload.ee/files/14701422/Untitled.json.html

  7. #37
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Se vuoi ritentare con il primo codice che avevo suggerito, puoi riempire $righe così:
    Codice PHP:
    $righe = [];
    while (
    $row = pg_fetch_object($result)) {
    $righe[] = $row;
    }

    # ... il resto dell'esempio

    Detto questo, ti suggerirei di provare un editor che ti aiuti con il PHP. Questo sistemerebbe l'indentazione, ti mostrerebbe gli errori più semplici prima ancora di far girare il codice, ed aiuterebbe a navigare il progetto. Vedi ad esempio Notepad++ o VSCode.
    Ultima modifica di dreadnaut : 27-11-2022 alle ore 17.58.00

  8. #38
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,899

    Predefinito

    Codice aggiornato tolto la verifica se $matches[1] è vuoto, è impossibile che imdbid è uguale mentre i nomi sono diversi.
    https://forum.it.altervista.org/php-...ml#post1483903
    Come detto prima non creare $imdbid ma fai La Stampa tramite echo incluso nel mio foreach standard (li sicuramente sono diversi imdbid il che indica il problema è altrove). Forse sarebbe possibile o no io non sono in grado di ordinare due inner JOIN con ordinamento crescente movies.imdbid che peraltro usa anche NULL quando assente e quindi usa invece movies2actors.as_charcter
    Inoltre non vedo la chiusura di while ($row = pg_fetch_object($result)) { dopo $i++; che nel mio commento di codice ti chiedo fine loop attori.
    $var2 contiene tutto il necessario o il testo lo racchiudi tramite variabile.
    Codice PHP:
    <?php
    $esempio
    = ''; // prima del loop attori
    //dentro loop attori
    //if($var2[$i]['imdbid'])
    $esempio = $esempio . $var2[$i]['name'] . 'testo html';
    ?>
    Esempio semplificato ma crei la stringa html dove scrivo if($var2[$i]['imdbid']) per la foto altrimenti la foto bianca oppure dentro al loop foreach invece di $i è $key.

    Alla fine dopo la chiusura del foreach fai un echo di tutte le stringhe racchiuse in $esempio
    Ultima modifica di darbula : 27-11-2022 alle ore 18.50.54

  9. #39
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Se vuoi ritentare con il primo codice che avevo suggerito, puoi riempire $righe così:
    Codice PHP:
    $righe = [];
    while (
    $row = pg_fetch_object($result)) {
    $righe[] = $row;
    }

    # ... il resto dell'esempio

    Detto questo, ti suggerirei di provare un editor che ti aiuti con il PHP. Questo sistemerebbe l'indentazione, ti mostrerebbe gli errori più semplici prima ancora di far girare il codice, ed aiuterebbe a navigare il progetto. Vedi ad esempio Notepad++ o VSCode.
    sto usando gia' Notepad++ da anni ormai
    il codice lo idento quando termino la versione finale, questa e' una pagina di test

  10. #40
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Peccato che nessun ha pensato a questa soluzione

    e' la strada piu' semplice, secondo il mio parere ovviamente

    il problema e' ordinare AS numero in natural order, esiste questa funzione per la query sql?


    Codice:
    SELECT
    	movies2actors.*,
    	SUBSTRING ( as_character FROM '[0-9]+' ) AS numero 
    FROM
    	movies2actors 
    WHERE
    	movies2actors.movieid = 4004300 
    ORDER BY
    	numero ASC


    Ultima modifica di blackskyisback : 27-11-2022 alle ore 18.55.25

  11. #41
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da blackskyisback Visualizza messaggio
    il problema e' ordinare AS numero in natural order, esiste questa funzione per la query sql?
    Stai ordinando stringhe invece che numeri, vedi se puoi usare CAST per convertirle.
    Codice:
    CAST(SUBSTRING(as_character FROM '[0-9]+') AS DECIMAL) AS numero
    Citazione Originalmente inviato da blackskyisback Visualizza messaggio
    il codice lo idento quando termino la versione finale, questa e' una pagina di test
    Strano che l'editor non lo tenga in ordine in automatico per te
    blackskyisback likes this.

  12. #42
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Stai ordinando stringhe invece che numeri, vedi se puoi usare CAST per convertirle.
    Codice:
    CAST(SUBSTRING(as_character FROM '[0-9]+') AS DECIMAL) AS numero





    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Strano che l'editor non lo tenga in ordine in automatico per te
    non lo so forse devo abilitare qualche menu'

    grazie a darbula per lo sbattimento e dreadnaut per la soluzione finale
    Ultima modifica di blackskyisback : 27-11-2022 alle ore 20.23.30

  13. #43
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,899

    Predefinito

    Figurati ma la tabella riporta sempre lo stesso imdbid.

  14. #44
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    risultato finale sul codice originale



    ovviamente ancora in work in progress, molte informazioni non sono visibili per via delle query da inserire e codice da manipolare


    ps: quando vado in modalita' Avanzata e cerco d'inserire una foto si blocca la pagina e resetta quello che ho scritto
    Ultima modifica di blackskyisback : 27-11-2022 alle ore 20.15.50

  15. #45
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Figurati ma la tabella riporta sempre lo stesso imdbid.
    e deve essere cosi, sono nella scheda film,
    e' il codice imdb per i film, comincia per tt0046023,
    per gli attori nm0869084
    Ultima modifica di blackskyisback : 27-11-2022 alle ore 20.20.50

  16. #46
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,899

    Predefinito

    Ah ecco spiegato perché esisteva un solo imdbid nel mio codice php. Nel contesto mi serve imdbid degli attori altrimenti il codice è imprevedibile :)
    Ultima modifica di darbula : 27-11-2022 alle ore 20.30.30

  17. #47
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    ho notato una cosa strana, dopo la query risultano 33 rows, ma sono 34

    non e' conteggiato Loy, Nanni (senza numero)


    dopo la query

    Codice PHP:
    $result = pg_query($query) or die('Error message: ' . pg_last_error());

    $num_rows = pg_num_rows($result);
    //$num_cols = pg_num_fields($result);

    echo 'Performer Credits: <b style="color:blue;">' . $num_rows .'</b>';

    echo
    '<hr>';

    while (
    $row = pg_fetch_object($result)) {

    Ultima modifica di blackskyisback : 27-11-2022 alle ore 20.38.59

  18. #48
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,899

    Predefinito

    Appunto perché è null come detto prima, forse la regex pg lo salta come non corrisponde al pattern etc. e comunque sono 34 row ma 33 con esito positivo.
    Ultima modifica di darbula : 27-11-2022 alle ore 20.44.52

  19. #49
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Appunto perché è null come detto prima, forse la regex pg lo salta come non corrisponde al pattern etc. e comunque sono 34 row ma 33 con esito positivo.
    si puo' conteggiare anche il NULL? devo conteggiare tutti gli attori presenti nella scheda
    Ultima modifica di blackskyisback : 27-11-2022 alle ore 20.51.34

  20. #50
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,899

    Predefinito

    Cosa ti ritorna
    Codice PHP:
    //prima del loop
    $y = 0;
    while (
    $row = pg_fetch_object($result)) {
    $y++
    }
    // chiusura loop
    $y--;
    var_dump($y);

  21. #51
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Cosa ti ritorna
    Codice PHP:
    //prima del loop
    $y = 0;
    while (
    $row = pg_fetch_object($result)) {
    $y++
    }
    // chiusura loop
    $y--;
    var_dump($y);
    Buongiorno a tutti.


    Ciao darbula,

    visualizzo questo

    int(32)



  22. #52
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Update:

    nei crediti ci sono dei casi in cui sono presenti delle cifre, esempio (1972), quindi questa espressione regolare non va bene

    Codice:
    CAST(SUBSTRING(as_character FROM '[0-9]+') AS DECIMAL) AS numero


    sostituita con questa originale, adesso l'ordinamento e' corretto

    Codice:
    CAST(SUBSTRING(as_character FROM '<(\d+)>') AS DECIMAL) AS numero
    Ultima modifica di blackskyisback : 28-11-2022 alle ore 08.46.24

  23. #53
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    questo come lo risolvo?

    CAST ( SUBSTRING ( movies.title FROM '#(.*\d+)' ) AS DECIMAL ) AS numero

  24. #54
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,899

    Predefinito

    In realtà è un numero tra stringa.. non devi effettuare il CAST \d+ più occorrenze di intero (cioè da 0 a n senza punto decimale) la regex per una stringa è '#(\d+\.\d+)#' il cancelletto è il tra pattern mentre tra apice significa stringa.
    Discorso più complicato se vuoi ordine crescente di un valore decimale (solitamente perde di precisione per questo motivo l'input è diverso dal tuo output).
    Ultima modifica di darbula : 30-11-2022 alle ore 12.41.34

  25. #55
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    In realtà è un numero tra stringa.. non devi effettuare il CAST \d+ più occorrenze di intero (cioè da 0 a n senza punto decimale) la regex per una stringa è '#(\d+\.\d+)#' il cancelletto è il tra pattern mentre tra apice significa stringa.
    Discorso più complicato se vuoi ordine crescente di un valore decimale (solitamente perde di precisione per questo motivo l'input è diverso dal tuo output).
    no, e' una stringa (varchar)

    e' il titolo tutto intero

    "Space: 1999" (1975) {Breakaway (#1.1)}

    "Space: 1999" (1975) {Black Sun (#1.10)}

    "Space: 1999" (1975) {The Dorcons (#2.24)}

    "Space: 1999" (1975) {Force of Life (#1.2)}
    quindi la query dovrebbe ordinarli da

    1.1
    1.2
    ecc..
    1.10
    2.24
    Ultima modifica di blackskyisback : 30-11-2022 alle ore 13.14.20

  26. #56
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,899

    Predefinito

    Se ordinato per DECIMAL può comunque essere errato. Questo il pattern '#(\d+\.\d+)#' mentre quello usato da te '#(.*\d+)' non significa nulla o quantomeno manca il cancelletto delimitatori finale prima di apice.
    Comunque prova qualcosa del genere https://stackoverflow.com/questions/...decimal-points
    Non so come aiutarti perché il tuo input è già sbagliato il decimale 1.1 o 1.10 poiché lo zero non è significativo. Forse postgresql lo considera stringa e quindi dal valore decimale originale (postgresql poi lo converte in stringa) 1.10 è dopo 1.1 decimale
    Ultima modifica di darbula : 30-11-2022 alle ore 13.53.01

  27. #57
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    darbula ciao,

    sara' anche sbagliato il mio ma almeno qualcosa trovava

    il tuo


  28. #58
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,899

    Predefinito

    Rettifico il tuo pattern è un cancelletto letterale e quindi corrisponde a #qualsiasicosanumero o #numero

  29. #59
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Rettifico il tuo pattern è un cancelletto letterale e quindi corrisponde a #qualsiasicosanumero o #numero
    "Space: 1999" (1975) {Breakaway (#1.1)}
    dovrebbe estrarre il numero compreso tra # e la parentesi )
    in questo caso 1.1

    quindi seguendo il tuo consiglio dovrebbe essere cosi, mettendo la slash davanti a cancelletto smette di essere un carattere speciale

    SUBSTRING ( movies.title FROM '\#(\d+\.\d+)' ) AS numero
    ho modificato ma l'ordine non e' corretto
    Ultima modifica di blackskyisback : 30-11-2022 alle ore 14.33.59

Pagina 2 di 2 PrimoPrimo 12

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •