• User Attivo

    Onestamente pensavo che tu avessi già dei dati da processare con quel codice. Io ho impostato la variabile chiamandola "$input", ma tu puoi inserire la variabile che contiene le strighe che vuoi processare.

    In base alla stringa input che gli dai, lui poi ti determina quelle nuove variabili in cui conosci tutti i valori, che puoi utilizzare per le tue visualizzazioni.

    Non sapendo per bene cosa hai e cosa vuoi fare, non saprei dirti di più...


  • User Newbie

    Io devo processare diversi tipi di stringhe, ma per capirlo meglio ammettiamo che siano solamente due, ad esempio:
    foglio_1360x768.php?ID=2&IDMsgPadre=1207&p=1
    foglio_1366x768.php?ID=3&IDMsgPadre=9654&p=1
    Come faccio a dire al "$imput" di processarle entrambe nello stesso codice?


  • User Attivo

    Usandolo più volte, puoi metterlo tutto in una funzione. Richiamare il file che contiene questa funzione (oppure metterla all'interno dello stesso file, prima di richiamare la funzione, se non ti serve utilizzarla in altre pagine).

    **<?php

    function dimensione($input) {
    **
    **// Raccogliamo prima il valore (1360 o 1366). Entrambi i valori sono preceduti e seguiti da una parte di stringa fissa.
    **// Quindi iniziamo ad esplodere:
    **$explode1 = explode("_", $input); // Output: $explode1[0] = foglio || $explode1[1] = 1360x768.php?ID=3&IDMsgPadre=1207&p=1
    **$width = explode("x", $explode1[1]); // Output = $width[0] = 1360
    ****$width = $width[0];
    **// Ora hai il tuo numero, 1360 e 1366. Se poi vuoi anche gli altri valori andiamo avanti.
    **$explode2 = explode("?", $explode1[1]); // Output: $explode2[1] = ID=3&IDMsgPadre=1207&p=1

    **// Ultimo explode per determinare nome variabili e valore passati nel foreach.
    **$explode3 = explode("&", $explode2[1]); // Output: array("ID=3", "IDMsgPadre=1207", "p=1")

    **$i = 0;
    *foreach($explode3 as $value) {
    ** $explode4 = explode("=", $explode3
    );
    ** $$explode4[0] = $explode4[1]; //Utilizzo le variabili variabili.
    ** ++$i;
    **}

    // Metto tutti i risultati in un array che ritorno.
    $res = array("width" => ********************$width, "ID" => $ID, "IDMsgPadre" => $IDMsgPadre, "P" => **** $p);
    **return $res;

    **************} // Fine della funzione

    // Qui sotto ora puoi utilizzare la funzione
    $risultati1 = dimensione($input1);
    $risultati2 = dimensione($input2);
    // ecc...

    // Come utilizzi i dati?
    echo $risultati1['width']; // Output: 1360 o 1366
    echo $risultati1['ID'];**************************************************
    echo $risultati1['IDMsgPadre'];****
    echo $risultati1['p'];


    //Lo stesso per $risultati2, ecc..
    ?>************************************************


  • User Newbie

    Copiando quest'ultimo codice mi tira fuori il fatal error cannot redeclare dimensione() previously declared in (n° riga) in (stesso numero di riga).
    Ho cominciato a giocarci un po' sostituendo qualche parametro ma arrivo sempre al punto che mi fornisce solo 1360, anche se la pagina che l'utente sta visitando è la 1366 oppure me li fornisce contemporaneamente (13601366).
    Sto impazzendo.
    Allora:

    • se Mario vede la pagina 1360 deve darmi risposta 1360
    • se Luigi vede la pagina 1366 deve darmi risposta 1366
    • Ovviamente se entrambi entrano e si collegano contemporaneamente e vedono quelle pagine il codice deve fornirmi la risposta che Mario veda la 1360 e Luigi la 1366.
      Perdonami se insisto ma non ci sto capendo più niente

  • User Attivo

    Io fin'ora avevo capito che tu i dati li avevi da qualche parte, es. nel database.
    Se prendi quell'input dall'indirizzo pagina, è inutile tutto il codice sotto per rilevare i vari dati, che puoi ottenere con il $_GET..

    La funzione l'ho provata e lavora bene, nessun problema come quello che citi. La funzione la dichiari una volta, non devi ripetere tutto per ogni input.

    Inserisci qui il tuo codice così vediamo cosa non va. Secondo me hai ripetuto due volte ciò che basta mettere una sola volta (è il senso delle funzioni).

    Naturalmente funziona indipendentemente dal valore, 1360, o 1366, ma anche fosse 19352953, va.


  • User Attivo

    Tra l'altro, a questo punto, ti suggerisco di mettere tutto con i $_GET[].

    Rinominando la pagina in foglio.php

    E gli passi i valori così: foglio.php?width=1360&height=768&ID=3&IDMsgPadre=1207&p=1

    In questo modo per ricavarli ti bastano:

    $_GET['width'] che ti da 1360 o 1366
    $_GET['height'] che ti da 768
    $_GET['ID'] che ti da 3
    $_GET['IDMsgPadre'] che ti da 1207
    $_GET['p'] che ti da 1


  • User Newbie

    Ecco il pezzo di codice che interessa:

    // $rs["Luogo" è dove viene recuperata l'informazione della pagina che sta visitando l'utente precedentemente impostata sul database
    // 1 Acquisti , 2 Altro , 3 Vendite ecc.

    if ($rs["Luogo"] == '1') {
    ?>
    font-size:14px">A visualizzare gli Acquisti</div>
    <?
    }
    elseif ($rs["Luogo"] == '2') {
    ?>
    font-size:14px">A leggere <? echo
    str_replace("/foglio_1360x768.php?ID=1", "Problemi 1360" ,
    str_replace("/foglio_1360x768.php?ID=2", "Altro 1360" ,
    str_replace("/foglio_1360x768.php?ID=3", "Novità 1360" ,

    str_replace("/foglio_1366x768.php?ID=1", "Problemi 1366" ,
    str_replace("/foglio_1366x768.php?ID=2", "Altro 1366" ,
    str_replace("/foglio_1366x768.php?ID=3", "Novità 1366" ,
    $rs["Zona"])))))); ?> in Bacheca</div>
    <?
    }
    elseif ($rs["Luogo"] == '3') {
    ?>
    font-size:14px">A visualizzare le Vendite</div>
    <?
    }
    // e così via

    Ma questo codice, nel momento in cui un utente staziona su foglio_1360x768.php?ID=3&IDMsgPadre=1207&p=1
    mi fornisce "A leggere Novità 1360&IDMsgPadre=1207&p=1"
    Mi occorrerebbe invece che mi fornisca "A leggere novità 1360"

    Grazie per la pazienza


  • User Attivo

    Il codice per trovare il 1360 (o 1366 o altro) è sopra. Se usi quella funzione ti basta usare

    $input = quello che prendi dal database

    $risultato = dimensione($input);

    echo "A leggere novità " . $risultati1['width']; // Stampa: A leggere novità 1360


  • User Newbie

    Va bene Gigi. Adesso mi studio come assemblare le cose. Spero di riuscirci.
    Sei stato di grande aiuto. Grazie infinite


  • User Attivo

    Di nulla.

    Segnalo solo errore mio nell'ultimo post con l'echo (ho usato la variabile di esempio sopra $risultati1 invece di $risultato dichiarato), qui tutto corretto:

    [PHP]
    // qui la dichiarazione della funzione "function dimensione($input) { ecc... copiando tutto come sopra }

    // $input = quello che prendi dal database, che devi dichiarare sopra e inserire qui sotto dentro dimensione().
    $risultato = dimensione($input);

    echo "A leggere novità " . $risultato['width']; // Stampa: "A leggere novità 1360"
    [/PHP]