• Super User

    $_server...

    Domanda:
    ho un link che mi butta alla pagina "www.provasito.it?mostra=4&action=delete&risp=1"

    • il "mostra=n" mostra un contenuto a seconda del numero
    • il "action=tipo" è l'azione in questo caso il delete. In questa posizione l'utente avrà una pagina dove sceglierà tra due possibilità : OK O ANNULLA
    • il "risp=n" indica una terza pagina: se è 1 l'utente ha cliccato su OK, altrimenti torna alla pagina precedente con "$_SERVER['HTTP_REFERER']Quello che però voglio fare è questo:
      Come faccio dal link "www.provasito.it?mostra=4&action=delete&risp=1" a tornare in posizione "www.provasito.it?mostra=4" ?

    Non voglio scriverlo a mano poichè essendo un link dinamico non è detto che l'action=delete appartenga unicamente a quel "mostra=4"

    C'è una funzione tipo $_SERVER['HTTP_REFERER'] da raddoppiare?


  • Super User

    Ciao karedas,
    se ho ben capito la tua richiesta potresti fare cosi:
    [PHP]$p=explode("&",$_SERVER[QUERY_STRING]);
    echo "<a href="$_SERVER[SERVER_NAME].$_SERVER[SCRIPT_NAME].'?'.$p[0]">clicca qui per tornare indietro</a>";[/PHP]
    Fammi sapere 😉
    Ciao!


  • Super User

    Intanto ti ringrazio in anticipo xkè mi hai fatto scoprire una funzione nuova del php che mi serviva in altri casi.

    Però ho un problema strano quindi ti illustro brevemente la struttura del sito altrimenti nn so come spiegarti:

    Ho un sito fatto a due colonne: sinistra il menù con i link e a destra il contenuto per ogni link.
    A seconda di cosa passo all'url, il contenuto mi cambia andando a richiamare una tale funzione "nome" che crea appunto quest'ultimo.
    **

    **Questo è l'url di default quando l'amministratore si collega al pannello di controllo. Esso mostra un contenuto di default tramite uno switch identificato tramite il "show=1"

    Ci sono 14 tipi di show e ognuno mostra un contenuto.

    Allora l'incriminato è questo:
    *www.sito.it?gruppo=web-master&show=5

    *Cliccandoci il contenuto mostra una tabella che contiene i record gettati dal database.
    Per ogni riga vi è alla fine un paio di pulsanti: EDIT E DELETE.
    Se clicco su DELETE il contenuto cambia andandomi a finire su:

    **"www.sito.it?gruppo=web-master&action=delete&id=n"

    **Allora come avrai notato manca il "show=n".
    Questo perchè questa pagina mostra un DIV nella zona contenuti dove l'utente deve scegliere se premere SI o NO.

    • Mancando* però il show=n non viene visualizzata la tabella ma solo il div in modo che mi compaia unicamente il suddetto DIV.

    Ora:
    Se clicco su NO il gioco è fatto e mi torna al proprio show tramite un link su "$_SERVER['HTTP_REFERER'].
    Se clicco su SI l'url si sposta su:
    **"www.sito.it?gruppo=web-master&action=delete&id=n&risp=si"

    **Come vedi ho aggiunto il "risp=si".
    Questa pagina mi mostra un semplice div che annuncia l'avvenuta del delete sul record. Ci sarà quindi un link "prosegui" il quale mi dovrà riportare al contenuto iniziale e quindi allo "show=n".

    Ecco non avendo sullla stringa più il "show=n" come faccio a dirgli di tornare a esattamente due pagine prima? Non capisco come fare °_°

    Grazie sono di corsa e qui chiudono ci si sente!


  • Super User

    Mhh più o meno ho risolto anche se in modo macchinoso.
    Però mi è capitato questo fattaccio:

    Ho questo form che si apre tramite un click sull'EDIT di un field.

    Il file.php è strutturato così:

    • function formcatalogo
    • deleteitem
    • updateitem($tipo)

    La funzione formcatalogo crea questo form nel quale vi sono degli input con tanto di tag "name" in modo che al submit questi vengano spediti alla funzione updateitem presente nella stessa pagina.

    Problemi riscontrati:

    • Per gestire meglio la grafica del submit ho usato invece di:[INDENT]<input type='submit' name='submit' value='salva' />
      il
      <button type'submit'>Salva</input>

    Pare , o pare solo a me, che questo bottone non riesca ad inviare tramite POST i dati °_° Se non è così nn so come fare
    [/INDENT]

    • Nel tag ACTION del form ho messo "action='<? updateItem('catalogo');?>. "updateItem" ,essendo una funzione riutilizzabile a seconda della tabella mostrata, ha il semplice compito tramite uno switch su "tipo=xxxx" di inviare una diversa query alla funzione esterna "connection::sendQuery($query). Questo perchè ogni tabella ha campi diversi. Il problema è che non riesce ad arrivare niente. Ho provato a vedere se nella funzione updateItem($type) arrivasse qualcosa ma ci sono solo valori vuoti.
      L'unico modo per aggiornare i campi è mettere la porzione di codice
      [PHP]if(($_POST['submit'])){
      $sendQuery="UPDATE catalogo SET nome='".$_POST['nome']."'
      WHERE id_catalogo='".$id."'";
      connection::sendQuery($sendQuery);

        }[/PHP]
      

    all'interno della funzione che crea il FORM.
    Qualcuno ha capito qualcosa del mio problema o buio assoluto? °_°

    Ah una domanda diversa:
    qualcuno mi spiega di preciso l'uso della funzione php "header(...)"?
    Io l'ho messa in session per rispedire l'utente alla propria pagina:
    [INDENT][PHP]header("Refresh:5; URL=admin.php?show=1");[/PHP]

    Pensavo mi servisse tipo link per inviare l'utente ad una pagina da me scelta ma se provo a riusarlo mi da come errore apache:
    Warning: Cannot modify header information - headers already sent....

    [/INDENT]


  • Super User

    up!


  • Super User

    Up 😮