Pagina 1 di 2 12 UltimoUltimo
Visualizzazione risultati 1 fino 30 di 59
Like Tree3Likes

Discussione: ordinare numeri estratti

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

    Predefinito ordinare numeri estratti

    Problema:

    ho un campo nel database dal nome as_characterin cui e' memorizzato i crediti dell'attore e un numero variabile racchiuso (non sempre presente) tra apici, una cosa simile

    <8>
    <2>
    <10>
    <3>

    serve per posizionare il ruolo dell'attore, se principale o comprimario, il problema che questo numero e' memorizzato con i crediti, quindi ho creato questo codice che estrae il numero tramite regex
    quello che vorrei ottenere e' ordinare tutti i numeri estratti, in ordine ascendente, in questo modo potrei ordinare anche gli attori nella giusta posizione di visualizzazione nella scheda, ma non so come procedere

    ho provato con la funzione natsort ma non funziona



    codice

    Codice PHP:
    //$row->as_character

    preg_match_all('/<?(\d+)>/s', $row->as_character, $result2);
    $result2 = $result2[1];

    echo '
    <br>';

    natsort($result2);

    foreach ( $result2 as $res ) {

    //echo $res;
    }

    var_dump($result2);
    risultato dell'estrazione

    Ultima modifica di blackskyisback : 24-11-2022 alle ore 22.12.50

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

    Predefinito

    Puoi usare usort ed ordinare le righe direttamente. Qualcosa di questo tipo:

    Codice PHP:
    <?php

    $righe
    = [ /* probabilmente dal database? */ ];

    usort($righe, 'confronta_due_righe');

    function
    confronta_due_righe($riga_a, $riga_b) {
    $crediti_a = estrai_numero($riga_a->as_character);
    $crediti_b = estrai_numero($riga_b->as_character);
    return
    $ncrediti_a <=> $crediti_b;
    }

    function
    estrai_numero($stringa)
    {
    if (
    preg_match("#<(\d+)>#s", $stringa, $match)) {
    return
    $match[1];
    }
    return
    "";
    }
    Ultima modifica di dreadnaut : 24-11-2022 alle ore 23.47.14

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

    Predefinito

    Ciao dreadnaut

    ricevo errori


    Warning: usort() expects parameter 1 to be array, null given in .. on line 92

    Warning: Use of undefined constant estrai_numero - assumed 'estrai_numero' (this will throw an Error in a future version of PHP) in .. on line 108
    e



    Codice PHP:
    <?php

    $char
    = $row->as_character;

    $righe = $char;

    usort($righe, 'confronta_due_righe'); //line 92

    function confronta_due_righe($riga_a, $riga_b) {
    $crediti_a = estrai_numero($riga_a->as_character);
    $crediti_b = estrai_numero($riga_b->as_character);
    return
    $ncrediti_a <=> $crediti_b;
    }

    function
    estrai_numero($stringa)
    {
    if (
    preg_match("#<(\d+)>#s", $stringa, $match)) {
    return
    $match[1];
    }
    return
    "";
    }

    echo
    estrai_numero[$match[1]]; // line 108

    ?>

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

    Predefinito

    estrai_numemero($matches[1]); è una funzione non una matrice (array) però il primo argomento di usort è null invece puoi passare array con almeno due elementi (ma che tutti e due abbiano valori stringa non null).
    Scrivere $righe = array(); o $righe = []; è equivalente la seconda forma esiste da php 5.4 (ovviamente il mio esempio è array vuoto mentre tu lo devi riempire con le righe del tuo database).
    Quindi se hai anche null ti occorre qualcosa migliore del semplice ordinamento.
    Ultima modifica di darbula : 25-11-2022 alle ore 09.26.58

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

    Predefinito

    ciao darbula

    non ho capito bene

    mi puoi fare un esempio basato sul mio codice

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

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Quindi se hai anche null ti occorre qualcosa migliore del semplice ordinamento.
    e si, ci sono anche dei valori null qualche consiglio?

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

    Predefinito

    Più o meno
    Codice PHP:
    <?php
    $i
    = 0; //prima del loop attori
    //Dentro al loop dove recuperi tutti gli attori
    //while(true) {
    $var2['id'] = $row->actorid;
    $var2[$i] = $row->as_character;
    preg_match('/<(\\d+)>/s', $var2[$i], $matches);
    if(empty(
    $matches[1])) {
    $var2['senza_ruolo'][$i] = $row->actorid;
    } else {
    $var[$i] = $matches[1];
    $matches = NULL;
    unset(
    $matches);
    }
    $i++;
    //} fine loop attori
    unset($i);
    natsort($var); // Reimposta al primo elemento senza sostituire le chiavi ma con ordinamento naturale del valore
    var_dump($var);
    Questo esempio è se nome <numero> lo trovi su $var, intanto provalo poi puoi modificarlo per aggiungere gli id dei tuoi attori e ovviamente il nome (invece di fare più loop es. while, for, foreach) ma in questo contesto devi creare la variabile stop che essenzialmente è la funzione count per array di totale attori.
    Ultima modifica di darbula : 26-11-2022 alle ore 09.53.24

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

    Predefinito

    darbula



    21
    Warning: usort() expects exactly 2 parameters, 1 given in ........ on line 109
    array(1) { [0]=> string(25) "[Giovane del paese] <21>" }
    13
    Warning: usort() expects exactly 2 parameters, 1 given in ........ on line 109
    array(1) { [0]=> string(31) "[Un giovanotto del paese] <13>" }
    27
    Warning: usort() expects exactly 2 parameters, 1 given in ........ on line 109
    array(1) { [0]=> string(4) "<27>" }
    2
    Warning: usort() expects exactly 2 parameters, 1 given in ........ on line 109
    array(1) { [0]=> string(19) "[Don Vincenzo] <2>" }
    20
    Warning: usort() expects exactly 2 parameters, 1 given in ........ on line 109
    array(1) { [0]=> string(18) "[Il barista] <20>" }
    22
    Warning: usort() expects exactly 2 parameters, 1 given in ........ on line 109
    array(1) { [0]=> string(31) "[Altro giovane del paese] <22>" }
    32
    Warning: usort() expects exactly 2 parameters, 1 given in ........ on line 109
    array(1) { [0]=> string(4) "<32>" }
    ........................................
    ps: uso Postgresql e php 7
    Ultima modifica di blackskyisback : 25-11-2022 alle ore 23.11.38

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

    Predefinito

    Errore di battitura usa natsort invece di usort.
    edit: ho corretto anche $match[1] con $matches[1], riprova
    Ultima modifica di darbula : 26-11-2022 alle ore 00.59.13

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

    Predefinito

    questo e' un pezzo di risultato non sembra che siano ordinati pero'
    guardando attentamente noto anche duplicati.
    E adesso come gestire questi dati?

    array(1) {
    [0]=>
    string(3) "21>"
    }
    array(3) {
    ["senza_ruolo"]=>
    array(1) {
    ["test"]=>
    int(1)
    }
    ["name"]=>
    array(1) {
    [0]=>
    string(25) "[Giovane del paese] <21>"
    }
    ["id"]=>
    array(1) {
    [0]=>
    string(6) "159842"
    }
    }


    -------------------------

    array(1) {
    [0]=>
    string(3) "13>"
    }
    array(3) {
    ["senza_ruolo"]=>
    array(1) {
    ["test"]=>
    int(1)
    }
    ["name"]=>
    array(2) {
    [0]=>
    string(25) "[Giovane del paese] <21>"
    [1]=>
    string(31) "[Un giovanotto del paese] <13>"
    }
    ["id"]=>
    array(2) {
    [0]=>
    string(6) "159842"
    [1]=>
    string(6) "256607"
    }
    }


    -------------------------
    Ultima modifica di blackskyisback : 26-11-2022 alle ore 09.19.35

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

    Predefinito

    Mi sono confuso nel creare array, $var viene creato se corrisponde con la regex mentre $var2['senza_ruolo'] se non corrisponde mentre $var2['id'] e $var2[$i] esistono comunque

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

    Predefinito

    darbula ciao,
    ho aggiornato con il tuo codice
    ma...non vedo ordinamenti

    questo e' il secondo risultato

    array(1) { [0]=> string(2) "21" }
    array(1) { [0]=> string(2) "13" }
    array(1) { [0]=> string(2) "27" }
    array(1) { [0]=> string(1) "2" }
    array(1) { [0]=> string(2) "20" }
    array(1) { [0]=> string(2) "22" }
    array(1) { [0]=> string(2) "32" }
    array(1) { [0]=> string(2) "32" }
    array(1) { [0]=> string(1) "5" }
    array(1) { [0]=> string(2) "23" }
    array(1) { [0]=> string(2) "14" }
    array(1) { [0]=> string(2) "28" }
    array(1) { [0]=> string(2) "31" }
    array(1) { [0]=> string(1) "4" }
    array(1) { [0]=> string(2) "25" }
    array(1) { [0]=> string(2) "24" }
    array(1) { [0]=> string(1) "3" }
    array(1) { [0]=> string(2) "29" }
    array(1) { [0]=> string(2) "33" }
    array(1) { [0]=> string(2) "18" }
    array(1) { [0]=> string(1) "8" }
    array(1) { [0]=> string(1) "9" }
    array(1) { [0]=> string(2) "10" }
    array(1) { [0]=> string(2) "30" }
    array(1) { [0]=> string(2) "16" }
    array(1) { [0]=> string(2) "26" }
    array(1) { [0]=> string(2) "12" }
    array(1) { [0]=> string(2) "19" }
    array(1) { [0]=> string(1) "7" }
    array(1) { [0]=> string(2) "11" }
    array(1) { [0]=> string(1) "6" }
    array(1) { [0]=> string(1) "1" }
    array(1) { [0]=> string(2) "17" }
    Ultima modifica di blackskyisback : 26-11-2022 alle ore 10.41.10

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

    Predefinito

    Stai effettuando il var_dump dentro al loop va fuori altrimenti non esiste soluzione.
    Ultima modifica di darbula : 26-11-2022 alle ore 12.59.08

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

    Predefinito

    e strutturata cosi la query, da una pagina demo per testare



    Codice PHP:
    <?php



    .............

    $query = "
    SELECT
    movies.movieid,
    movies.title,
    movies.year,
    movies.imdbid,
    actors.actorid,
    actors.name,
    movies2actors.as_character
    FROM
    movies
    INNER JOIN movies2actors ON movies.movieid = movies2actors.movieid
    INNER JOIN actors ON movies2actors.actorid = actors.actorid
    WHERE
    movies.movieid = 4004300
    "
    ;

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


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


    $i = 0; //prima del loop attori
    //Dentro al loop dove recuperi tutti gli attori
    //while(true) {
    $var2['id'] = $row->actorid;
    $var2[$i] = $row->as_character;
    preg_match('/<(\\d+)>/s', $var2[$i], $matches);
    if(empty(
    $matches[1])) {
    $var2['senza_ruolo'][$i] = $row->actorid;
    } else {
    $var[$i] = $matches[1];
    $matches = NULL;
    unset(
    $matches);
    }
    $i++;
    //} fine loop attori
    unset($i);
    natsort($var); // Reimposta al primo elemento senza sostituire le chiavi ma con ordinamento naturale del valore
    var_dump($var);

    echo
    '</pre>';

    echo
    '<br>-------------------------';


    ?>


    <?php

    }

    ?>

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

    Predefinito

    Nemmeno i loop dopo anni sai riconoscere?
    Questo da spostare dopo la parentesi graffa di chiusura
    Codice PHP:
    unset($i);
    natsort($var); // Reimposta al primo elemento senza sostituire le chiavi ma con ordinamento naturale del valore
    var_dump($var);
    Ho scritto anche il commento //while(true) era inteso per while ($row = pg_fetch_object($result)) { (indovina dove viene chiuso il loop))
    Ultima modifica di darbula : 26-11-2022 alle ore 14.59.41

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

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Nemmeno i loop dopo anni sai riconoscere?
    Questo da spostare dopo la parentesi graffa di chiusura
    Codice PHP:
    unset($i);
    natsort($var); // Reimposta al primo elemento senza sostituire le chiavi ma con ordinamento naturale del valore
    var_dump($var);
    Ho scritto anche il commento //while(true) era inteso per while ($row = pg_fetch_object($result)) { (indovina dove viene chiuso il loop))
    sorry, una mia svista

    comunque e' peggiorato

    solo un risultato , praticamente l'ultimo

    https://forum.it.altervista.org/php-...ml#post1483885

    array(1) { [0]=> string(2) "17" }
    Ultima modifica di blackskyisback : 26-11-2022 alle ore 15.34.41

  17. #17
    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
    ricevo errori


    Warning: usort() expects parameter 1 to be array, null given in .. on line 92

    Warning: Use of undefined constant estrai_numero - assumed 'estrai_numero' (this will throw an Error in a future version of PHP) in .. on line 108
    e
    Il codice che ti ho dato come esempio vuole tutte le righe della tabella dentro $righe, ed alla fine le hai tutte ordinate in base ai crediti. Nella tua versione, hai messo in $righe un singolo valore:
    Codice PHP:
    <?php

    $char
    = $row->as_character;

    $righe = $char;
    Quindi non funziona

    Anche questo è sbagliato, come riportato da Darbula sopra:
    Codice PHP:
    echo estrai_numero[$match[1]]; // line 108
    estrai_numero è una funzione, quindi va chiamata con le parentesi tonde
    Codice PHP:
    echo estrai_numero($match[1]); // line 108

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

    Predefinito

    @dreadnaut deve creare array non confrontare due righe (ma tutte le righe di $row->as_character)
    Poiché in una scheda film sicuramente fa il loop per recuperare ogni valore ([nome] e <numero> o (uncredited) [nome], actorid e così via) per leggibilità preferisco creare array invece di scorrere più volte tramite una funzione che comunque il return $ncrediti_a era $crediti_a. Inoltre gli elementi del precedente piccolo array sono riutilizzabili per fare tutto nella scheda film (che comunque @blackskyisback non riesce e non riuscirà ma piuttosto sovraccarica con codice).
    Però potrebbe effettuare l'ordinamento anche per $var2['senza_ruolo'] se accetta il predefinito con la funzione natsort

    @blackskyisback e cosa restituisce $var2['senza_ruolo']?

    Codice PHP:
    <?php
    // ordinamento da sinistra verso destra e inizia da zero 0 + elemento come predefinito in php
    $var = array('5', '2', '6');
    natsort($var);
    var_dump($var);

    ?>
    Expected result:
    Codice:
    array(3) {
      [1]=>
      string(1) "2"
      [0]=>
      string(1) "5"
      [2]=>
      string(1) "6"
    }
    Non capisco perché possiedi solo un elemento, magari in alcune circostanze l'ordine iniziale non è da zero (ordinamento macchina o php) ma con natsort deve restituire correttamente ordine crescente (ascending).
    Ultima modifica di darbula : 26-11-2022 alle ore 18.25.40

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

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    @dreadnaut deve creare array non confrontare due righe (ma tutte le righe di $row->as_character)
    Esattamente quello che fa usort() in un solo comando, senza cicli o complicazioni.

    Per il resto non ho guardato la tua soluzione, che sembra comunque più complessa. Ho solo risposto a Blackyisblack riguardo al mio codice iniziale.

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

    Predefinito

    Scusa per il malinteso, lui riutilizza le variabili array con stile procedurale è più semplice (poi ho creato codice procedurale senza funzioni oltre natsort per capire dai suoi output errati come migliorare, altrimenti non riesco a seguirlo).
    Ultima modifica di darbula : 26-11-2022 alle ore 18.31.40

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

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio

    @blackskyisback e cosa restituisce $var2['senza_ruolo']?



    array(3) { ["id"]=> string(7) "4063139" ["senza_ruolo"]=> array(1) { [0]=> string(7) "1431214" } [0]=> string(24) "[Altra prostituta] <17>" }

    Codice PHP:
    unset($i);
    natsort($var2); // Reimposta al primo elemento senza sostituire le chiavi ma con ordinamento naturale del valore
    var_dump($var2);
    var_dump($row); mi risulta questo

    posto un risultato parziale


    Codice PHP:
    object(stdClass)#1 (7) {
    ["movieid"]=>
    string(7) "4004300"
    ["title"]=>
    string(16) "Maddalena (1954)"
    ["year"]=>
    string(4) "1954"
    ["imdbid"]=>
    string(9) "tt0046023"
    ["actorid"]=>
    string(6) "159842"
    ["name"]=>
    string(16) "Bartoletti, Elio"
    ["as_character"]=>
    string(25) "[Giovane del paese] <21>"
    }

    object(stdClass)#2 (7) {
    ["movieid"]=>
    string(7) "4004300"
    ["title"]=>
    string(16) "Maddalena (1954)"
    ["year"]=>
    string(4) "1954"
    ["imdbid"]=>
    string(9) "tt0046023"
    ["actorid"]=>
    string(6) "256607"
    ["name"]=>
    string(16) "Borelli, Rosario"
    ["as_character"]=>
    string(31) "[Un giovanotto del paese] <13>"
    }

    ........................................
    Ultima modifica di blackskyisback : 26-11-2022 alle ore 19.13.10

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

    Predefinito

    Ho riletto il tuo esempio di codice, $i = 0; va prima del while che tu sai (altrimenti è impostato sempre a zero per ogni iterazione e il risultato è uno solo)

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

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Ho riletto il tuo esempio di codice, $i = 0; va prima del while che tu sai (altrimenti è impostato sempre a zero per ogni iterazione e il risultato è uno solo)
    ci siamo darbula adesso l'ordinamento e' corretto

    sei un genio, grazie

    Codice PHP:
    array(32) { [31]=> string(1) "1" [3]=> string(1) "2" [16]=> string(1) "3" [13]=> string(1) "4" [8]=> string(1) "5" [30]=> string(1) "6" [28]=> string(1) "7" [20]=> string(1) "8" [21]=> string(1) "9" [22]=> string(2) "10" [29]=> string(2) "11" [26]=> string(2) "12" [1]=> string(2) "13" [10]=> string(2) "14" [24]=> string(2) "16" [32]=> string(2) "17" [19]=> string(2) "18" [27]=> string(2) "19" [4]=> string(2) "20" [0]=> string(2) "21" [5]=> string(2) "22" [9]=> string(2) "23" [15]=> string(2) "24" [14]=> string(2) "25" [25]=> string(2) "26" [2]=> string(2) "27" [11]=> string(2) "28" [17]=> string(2) "29" [23]=> string(2) "30" [12]=> string(2) "31" [6]=> string(2) "32" [18]=> string(2) "33" }
    adesso come gestisco il tutto per ordinare i numeri con gli attori?

    dato che il while finisce prima e poi viene natsort, quindi dopo non posso processare i dati provenienti dalla query



    codice finale


    Codice PHP:
    <?php

    $i
    = 0; //prima del while


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

    //Dentro al loop dove recuperi tutti gli attori
    //while(true) {
    $var2['id'] = $row->actorid;
    $var2[$i] = $row->as_character;
    preg_match('/<(\\d+)>/s', $var2[$i], $matches);
    if(empty(
    $matches[1])) {
    $var2['senza_ruolo'][$i] = $row->actorid;
    } else {
    $var[$i] = $matches[1];
    $matches = NULL;
    unset(
    $matches);
    }
    $i++;

    }
    // end while


    //} fine loop attori
    unset($i);
    natsort($var); // Reimposta al primo elemento senza sostituire le chiavi ma con ordinamento naturale del valore

    echo '<pre>';

    var_dump($var);

    echo
    '</pre>';
    Ultima modifica di blackskyisback : 26-11-2022 alle ore 20.07.36

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

    Predefinito

    Codice PHP:
    foreach($merge as $key => $value) {
    echo
    $var2[$key]['id'];
    echo
    $var2[$key]['tname']; // as_character;
    }
    Modifica in questo modo

    Codice PHP:
    <?php
    $i
    = 0; //prima del loop attori
    //Dentro al loop dove recuperi tutti gli attori
    //while(true) {
    $var2[$i] = array('id' => $row->actorid, 'imdbid' => $row->imdbid, 'year' => $row->year, 'name' => $row->name, 'tname' => $row->as_character, 'birthday' => $row->birthday);
    if(
    $var[$i]['imdbid']) {
    preg_match('/<(\\d+)>/s', $var2[$i]['tname'], $matches);
    $var[$i] = $matches[1];
    $matches = NULL;
    unset(
    $matches);
    } else {
    $var2['senza_ruolo'][$i] = $var2[$i]['id'];
    }
    $i++;
    //} fine loop attori
    unset($i);
    natsort($var);
    if(empty(
    $var2['senza_ruolo'])) {
    // o tutti gli attori hanno un ruolo o qualcosa non va
    $merge = $var;
    } else{
    natsort($var2['senza_ruolo']); // Reimposta al primo elemento senza sostituire le chiavi ma con ordinamento naturale del valore
    $merge = $var + $var2['senza_ruolo']; // Se in alto i valori numerici
    //$merge = $var2['senza_ruolo'] + $var; // Se in basso i valori numerici
    }
    // foreach qui
    foreach($merge as $key => $value) {
    echo
    $var2[$key]['id'];
    echo
    $var2[$key]['imdbid'];
    echo
    $var2[$key]['year'];
    echo
    $var2[$key]['name'];
    echo
    $var2[$key]['tname']; // as_character;
    echo $var2[$key]['birthday'];
    //concatenazione stringa php
    var_dump('images_actors_profile/*' . $var2[$key]['imdbid'] . '/');
    //Da usare con la funzione glob e il restante codice
    }
    prova il foreach va dopo la creazione di $merge. Edit si spera definitivo
    Ultima modifica di darbula : 27-11-2022 alle ore 18.05.11
    blackskyisback likes this.

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

    Predefinito

    Grazie darbula

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

    Predefinito

    Modificato era errato

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

    Predefinito

    opzione 1:


    corretto questo, mancava una parentesi

    Codice PHP:
    natsort($var2['senza_ruolo']);

    ricevo errore

    Warning: natsort() expects parameter 1 to be array, null given in .. line 68

    Fatal error: Uncaught Error: Unsupported operand types in .. on line 69



    Codice PHP:

    $i
    = 0; //prima del while


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




    $var2 = array($i => $row->actorid, 'name' => $row->as_character);
    preg_match('/<(\\d+)>/s', $var2['name'], $matches);
    if(empty(
    $matches[1])) {
    $var2['senza_ruolo'][$i] = $var2['id'];
    } else {
    $var[$i] = $matches[1];
    $matches = NULL;
    unset(
    $matches);
    }
    $i++;
    }
    //fine loop attori
    unset($i);
    natsort($var);
    natsort($var2['senza_ruolo']); // Reimposta al primo elemento senza sostituire le chiavi ma con ordinamento naturale del valore
    $merge = $var + $var2['senza_ruolo']; // Se in alto i valori numerici //line 69
    var_dump($var);

    opzione 2:

    dove va il foreach?

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

    Predefinito

    Codice migliorato senza var_dump e completo, copia e riprova https://forum.it.altervista.org/php-...ml#post1483903

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

    Predefinito

    grazie darbula, domani provo e ti faccio sapere

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

    Predefinito

    Buona Domenica a tutti

    rieccomi, ho controllato il codice di darbula e funziona perfettamente
    quello che manca e' il nome dell'attore che e' fondamentale per visualizzare le immagini del profilo per ognuno

    ho manipolato il codice, inserendo actors.name, che visualizzo ma non e' separato dagli altri array, il risultato e' deludente

    penso che sia necessario integrare anche l'array separato per imdbid, movies.imdbid

    questo per completare il percorso immagine

    Codice PHP:
    $search_dir = 'images_actors_profile/*' . $row->imdbid . '/';

    $images = glob("$search_dir/*.jpg");

    $matches = array();
    preg_match('/(.*?)(\w+)$/', $row->name, $matches);


    $dir = 'images_actors_profile/';
    $nome = $row->name;
    $delimiter = ' ';
    $imdbid = $row->imdbid;
    $ext = '.jpg';
    Codice PHP:
    <img src='$dir$name$delimiter$imdbid$ext' id='rcorners1' /> ";
    immagine esempio: Torén, Märta nm0869084.jpg



    tutto sballato e nessuna immagine

    questo e' l'originale, ovviamente senza il codice di darbula



    per non creare altri post ho messo il progetto qui,
    c'e' il file teststring.php (per test, ma il codice originale ha altre query e codice che non e' necessario per testare questo) con i css con images_actors_profile

    EDIT: mi correggo, anche altri campi sono necessari, tipo birthday per controllare la differenza tra actors.birthday e movies.year
    e restituire l'eta' di quando ha partecipato al film

    vedi, Gino Cervi (53)

    inoltre e' presente l'outpout html dei risultati di teststring

    FILE PROGETTO
    Ultima modifica di blackskyisback : 27-11-2022 alle ore 14.24.06

Pagina 1 di 2 12 UltimoUltimo

Regole di scrittura

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