- Home
- Categorie
- Coding e Sistemistica
- Coding
- Problema variabili
-
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.
-
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
-
Ciao Thedarkita, io ho provato ad inserirlo in cima alla pagina ```
delete_allievo.phpPer 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=indexil 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");
-
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.
-
Ciao, penso di esserci vicino
se inserisco in cima alla index
ob_start("ob_gzhandler");
mi da questo messaggioWarning: (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
-
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.
-
Grazie tante Thedarkita
domani continuerò a lavorarci in maniera tranquilla
ciao da danny1975