• User Attivo

    Problema variabili

    Ciao a tutti, ho un problema con delle variabili, vi spiego in modo pratico.
    La pagina index.php così composta
    [php]
    <table border="0" bordercolor="#867C7C" cellpadding="0" cellspacing="0" width="200">
    <tr>
    <td valign="top">
    <?php
    if(isset($_GET['pag']))
    {
    include($_GET['pag'] . '.php');
    $pag=$_GET['pag'] . '.php';
    }
    else
    {
    $pag=include('default.php');
    }
    ?>
    </td>
    </tr>
    </table>
    <table border="0" bordercolor="#867C7C" cellpadding="0" cellspacing="0" width="594">
    <tr>
    <td bgcolor="#D3CBCB" valign="top" height="300">
    <?php
    if(isset($_GET['pagina_interna']))
    {
    include($_GET['pagina_interna'] . '.php');
    $pagina_interna=$_GET['pagina_interna'] . '.php';
    }
    else
    {
    $pagina_interna=include('default_interno.php');
    }
    ?>
    </td>
    </tr>
    </table>
    [/php]--------------------------------



    • menu1 - menu2 - menu3 -





    • pag - pagina_interna -



    Scusate del disegno ma per farvi capire meglio.
    Allora dal menu1 richiamo la variabile pag che conterrà un altro menu, poi dal menu che si trova in pag riciamo delle pagine.php attraverso la variabile pagina_interna.
    Il problema lo trovo quando devo cancellare un articolo.

    La pagina pdf_elimina_allievi.php cosi composta
    [php]
    <?
    require 'Config.php';
    require 'Connect.php';
    ?>
    <table border="0" cellpadding="0" cellspacing="0">
    <tr>
    <td> </td>
    <td><img src="img_entry/titolo_info_25.jpg" /></td>
    <tr>
    </tr>
    <?php
    //$result_query_ep=mysql_query("SELECT * FROM eventi_palestra ORDER BY id_palestra desc")
    $result_query_ep=mysql_query("SELECT * FROM allievi ORDER BY id_allievo DESC")
    or die("errore nella query;".mysql_error());

    print"
    <table border='0' cellpadding='0' cellspacing='0'>";
    print"
    <tr>";
    print"
    <td> </td>";
    print"
    <td width='150'>
    <font size='1' face='Verdana, Arial, Helvetica, sans-serif'>
    <b>Cognome</b>
    </font>";
    print"
    </td>";
    print"
    <td> </td>";
    print"
    <td width='150'>
    <font size='1' face='Verdana, Arial, Helvetica, sans-serif'>
    <b>Mail</b>
    </font>";
    print"
    </td>";
    print"
    <td> </td>";
    print"
    <td width='150'>
    <font size='1' face='Verdana, Arial, Helvetica, sans-serif'>
    <b>Grado</b>
    </font>";
    print"
    </td>";
    print"
    <td> </td>
    <td> </td>";
    print"
    </tr>";
    while($elenco_allievi=mysql_fetch_assoc($result_query_ep))
    {
    print"
    <tr>";
    print"
    <td> </td>";
    print"
    <td bgcolor='#F3EEEE'>
    <font size='1' face='Verdana, Arial, Helvetica, sans-serif'>
    $elenco_allievi[cognome]
    </font>";
    print"
    </td>";
    print"
    <td> </td>";
    print"
    <td bgcolor='#F3EEEE'>
    <font size='1' face='Verdana, Arial, Helvetica, sans-serif'>
    $elenco_allievi[mail]
    </font>";
    print"
    </td>";
    print"
    <td> </td>";
    print"
    <td bgcolor='#F3EEEE'>
    <font size='1' face='Verdana, Arial, Helvetica, sans-serif'>
    $elenco_allievi[grado]
    </font>";
    print"
    </td>";
    print"
    <td> </td>
    <td>
    <a href='index.php?pag=delete_allievo&id=$elenco_allievi[id_allievo]'>
    <img src='img_entry/t_elimina.jpg' border='0'>
    </a></td>";
    print"
    </tr>";
    print"
    <tr>";
    print"
    <td colspan='8' height='5'></td>";
    print"
    </tr>";
    }
    print"
    </table>";
    ?>
    [/php]Pagina delete_allievo.php cosi composta
    [php]
    <?php
    require 'Config.php';
    require 'Connect.php';
    ?>
    <?php
    $indice=isset($_GET['id'])? $_GET['id']:0;
    $result_query_cancella_allievo=
    mysql_query("DELETE FROM allievi WHERE id_allievo='$indice'")
    or die("errore nella query;".mysql_error());
    header('location:'.'index.php?pag=menu_allievi&&pagina_interna=pdf_elimina_allievi');
    mysql_close();
    ?>
    [/php]Mi da un errore nella sezione pag

    **Warning**: Cannot modify header information - headers already sent by (output started at D:\html\entry_2\index.php:125) in **D:\html\delete_allievo.php** on line **16**
    
    ```Vi ho segnato in grassetto le cose più importanti, penso di aver richiamato bene le pagine.
     
    E' un po difficilotto da capire, anche io ho trovato difficoltà a spiegarvelo.
    Grazie dell'aiuto da danny.

  • ModSenior

    Ciao danny1975,

    hai organizzato il sito in un modo poco consigliabile.
    Perchè mandi un output prima di far eseguire tutti i file.
    Metti questa istruzione:
    [php]
    ob_start("ob_gzhandler");
    [/php]
    In modo che sia la prima ad essere eseguita ogni volta, per far si che non avvengano output fino alla fine dell'esecuzione dello script.

    Attento che gli include in quel modo mi sembrano veramente pessimi come soluzione, cosa succede se richiamo ad esempio la pagina index.php?pag=index


  • User Attivo

    Ciao Thedarkita, io ho provato ad inserirlo in cima alla pagina ```
    delete_allievo.php

    Per quanto riguarda la seconda domanda quella delle include, per la verità mi sono anch'io chiesto alcune volte, se qualcuno a pag associa anche una parola per dire 'pizza', cosa succede?
    io vorrrei che ci fosse un messaggio dicendo 'spiacente la pagina non è disponibile', come posso fare?
    Ho provato a fare come mi hai detto```
    index.php?pag=index
    

    il sito si è ripetuto almeno 7 volte
    mi consiglieresti un sistema che possa sbarazzarmi dei 2 errori che ti ho accennato
    grazie da danny
    Ah; non dimenticare di farmi capire come funziona
    ob_start"ob_gzhandler");


  • ModSenior

    Quella funzione che ti ho detto va messa in cima al file index.php.
    Per il messaggio di errore, se non trova il file bisogna usare la funzione file_exists, per l'inclusione ricorsiva metti include_once invece di include.


  • User Attivo

    Ciao, penso di esserci vicino
    se inserisco in cima alla index
    ob_start("ob_gzhandler");
    mi da questo messaggio

    Warning: (null)() ref.outcontrol: output handler 'ob_gzhandler' cannot be used twice in Unknown on line 0

    mentre se inserisco solo
    ob_start();
    no da errori
    come mai?
    grazie da danny


  • ModSenior

    Puoi lasciare ob_start(); senza problemi, in quanto il parametro è opzionale.
    Questa funzione attiva il buffering dell'output, cioè quando tu fai gli echo, questi non avvengono ma vengono messi in un buffer interno, solo alla fine viene stampato il buffer.


  • User Attivo

    Grazie tante Thedarkita
    domani continuerò a lavorarci in maniera tranquilla
    ciao da danny1975