- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema di variabili?
-
Problema di variabili?
Ragazzi non sò davvero cosa inventarmi più... Allora ho una pagina con un form per creare una nuova pagina, basta inserire un nome e lo script mi crea questa pagina. Ora ho voluto aggiungere una cosa, cioè:
una volta creata la pagina, dico anche: Vuoi modificarla subito?
Il codice del collegamento è così:
[HTML]<a href=modifica.php?titolo_articolo=$titolo_articolo>Modifica<b> $titolo_articolo</b></a>[/HTML]
quando vado a modifica.php (dove mi tengo la variabile $titolo_articolo) ho uno script dove si inserisce in una variabile $loadcontent il nome della pagina creata. Il problema è che se per esempio sò come si chiama la pagina, quindi:
[HTML]$loadcontent=nuovi_articoli/a.php;[/HTML]
Lo script funziona, mentre se io assegno alla variabile $loadcontent la variabile $titolo_articolo, non funziona:
[HTML]
$loadcontent= "nuovi_articoli/$titolo_articolo.php";
[/HTML]
Se volete vi incollo tutto quello script, ho pensato che magari il problema potrei risolverlo diversamente...
grazie
-
Ciao scwd
hai provato così?
[php]$loadcontent= "nuovi_articoli/".$titolo_articolo.".php";[/php]
se non ti funziona neanche così ti consiglierei di verificare che $titolo_articolo abbia un contenuto facendoti un echo
-
Samyrorn purtroppo si, ho provato anche come hai detto tu, anzi è stata la prima prova quella, mentre per l'echo è tutto ok.... è quello che non mi spiego, ho provato anche così:
[php]
$titolo_articolo= "nuovi_articoli/".$titolo_articolo.".php";
$loadcontent= $titolo_articolo;
[/php]
E mi sembra veramente ma veramente strana questa cosa:?... Se vuoi posto tutto lo script che interessa $loadcontent perchè sinceramente non penso che l'errore sia in altre pagine...:D
-
Fai un po' l' echo di $loadcontent dell'ultimo esempio
se il contenuto è giusto allora bisogna dare un'occhio allo script
-
E ancora purtroppo già l'avevo fatto, ecco lo script appartenente a questa pagina:
[HTML]
<html>
<body>
<?php
include("testa2.php");
$loadcontent= "nuovi_articoli/$titolo_articolo.php";if($save_file) { $savecontent = stripslashes($savecontent); $fp = @fopen($loadcontent, "w"); if ($fp) { fwrite($fp, $savecontent); fclose($fp);
print '<a href='.$_SERVER[PHP_SELF].'>Refresh</a>';
print "<html><head><META http-equiv="refresh" content="0;URL=$_SERVER[PHP_SELF]"></head><body>";}
}
$fp = @fopen($loadcontent, "r");
$loadcontent = fread($fp, filesize($loadcontent));
$lines = explode("\n", $loadcontent);
$count = count($lines);
$loadcontent = htmlspecialchars($loadcontent);
fclose($fp);
for ($a = 1; $a < $count+1; $a++) {
$line .= "$a\n";
}
?>
<script language="JavaScript" type="text/javascript" src="wysiwyg.js">
</script>
<body>
<br>
<form method=post action="modifica.php">
<center><input type="submit" name="save_file" value="Save"> </center>
<table width="600px" valign="top" border="0" align="center" cellspacing="1" cellpadding="1">
<tr>
<td width="3%" align="right" valign="top"><pre style="text-align: right; padding: 4px; overflow: auto; border: 0px groove; font-size: 12px" name="lines" cols="4" rows="<?=$count+3;?>"><?=$line;?></pre></td>
<td width="97%" align="left" valign="top">
<textarea id="textarea" style="border-style: groove; border-color: inherit; border-width: 3px; text-align: left; padding: 0px; overflow: auto; font-size: 12px; width: 631px; height: 305px;" name="savecontent" wrap="OFF"><?=$loadcontent?></textarea>
<script language="javascript1.2">
generate_wysiwyg('textarea');
</script>
</td>
</tr>
</table>
<br>
<center><input type="submit" name="save_file" value="Save"> </center>
</form>
<?
include("fondo.php");
?>
</html>
</body>
[/HTML]
et voilà
-
Mi sorge un dubbio, forse a video ti fa vedere tutto per bene, ma...... hai visualizzato l'HTML della pagina per vedere cosa tira fuori effettivamente l' echo? magari c'è qualche carattere di troppo, non so, non trovo spiegazione neanch'io
-
guarda ora provo e ti faccio sapere, comunque in effetti questa è una cosa strana, ma l'errore deve essere assolutamente li perchè appena metto per intero la stringa col nome funziona
-
L'unico altro consiglio che potrei darti è quello di farti un echo prima e dopo ogni richiamo delle variabili $titolo_articolo e $loadcontent....mumble mumble
-
Ok allora guarda (innanzi tutto grazie per la pazienza :D) ho provato a inserire nel codice di prima qualche echo (tutte nella parte superiore della pagina):
[php]
echo"$titolo_articolo<br>"; //Stampo solo il nome del file
$loadcontent= "nuovi_articoli/".$titolo_articolo.".php";
echo "|";
echo"$loadcontent";
echo "|";
[/php]
Allora praticamente ho messo due "|" uno prima e uno dopo per vedere se ci fosse qualche carattere strano che dava problemi e...purtroppo nessun carattere strano...
Allora da uno script creo attraverso la rete un file e lo chiamo a.php ma $titolo_articolo contiene solo "a";
Quindi infatti quando dico modifica e va a questa maledettissima pagina mi stampa:
[php]
a
|nuovi_articoli/a.php|
//resto pagina...
[/php]
Incollo anche l'HTML che mi da completo il mio browser:
[html]
<html>
<body>
<html><head><meta http-equiv="content-language" content="it-us"><meta name="generator" content="microsoft frontpage 6.0"><meta name="progid" content="frontpage.editor.document"><meta http-equiv="content-type" content="text/html; charset=windows-1256"><title>S C W D</title><link rel="stylesheet" href="style.css" type="text/css"></head></script><body topmargin="0" leftmargin="10" bgcolor="#026FD4"><table height=50% align="center" border="0" width="750" id="table1" cellspacing="0" cellpadding="0" bgcolor="#fbfbfb" bordercolor="#006ab0">
<tr>
<td height=60><img src="images/logo.jpg"></td>
</tr>
<tr>
<td><font size=2 color=#A0A0A0><p align=center><b>
| MENU |
<a href=crea.php?crea=1>Nuovo Articolo</a> |
<a href=crea.php?crea=2>Elimina Articolo</a> |
</b></p></font></td>
</tr>
<tr>
<td valign="top">a<br>|nuovi_articoli/a.php|
<script language="JavaScript" type="text/javascript" src="wysiwyg.js">
</script>
<body>
<br>
<form method=post action="modifica.php">
<center><input type="submit" name="save_file" value="Save"> </center>
<table width="600px" valign="top" border="0" align="center" cellspacing="1" cellpadding="1">
<tr>
<td width="3%" align="right" valign="top"><pre style="text-align: right; padding: 4px; overflow: auto; border: 0px groove; font-size: 12px" name="lines" cols="4" rows="4">1
</pre></td>
<td width="97%" align="left" valign="top">
<textarea id="textarea" style="border-style: groove; border-color: inherit; border-width: 3px; text-align: left; padding: 0px; overflow: auto; font-size: 12px; width: 631px; height: 305px;" name="savecontent" wrap="OFF">Ciao ho appena creato il file: a .</textarea>
<script language="javascript1.2">
generate_wysiwyg('textarea');
</script>
</td>
</tr>
</table>
<br>
<center><input type="submit" name="save_file" value="Save"> </center>
</form></td>
</tr>
<tr>
<td height=20>
<center><font face=verdana size=1>Copiright Simone Corbisiero Web Design 2008</font></center>
<img src="images/footer.gif" border="0" usemap="#mapFooter"></td>
</tr>
</table>
</html>
</body>
[/html]
Però il file me lo apre e tutto quindi lo trova, lo legge ma non me lo vuole scrivere con il passaggio di variabile che ho fatto...
-
Bene ho capito dove fosse il problema, praticamente se facevo click su "salva", la pagina che ricaricava tutto non si portava dietro quella stramaledetta variabile $loadcontent giustamente. Quindi quando creavo il nuovo file in un'altra pagina, direttamente gli mettevo nei cookie il valore di $titolo_articolo, poi rimandava alla pagina che diceva: "Bravo hai creato il file bla bla bla, clicca qui per modificarlo" e su clicca qui c'era un link che mi rimandava alla pagina modifica.php.
La pagina modifica.php:
[html]
<html>
<body>
<?php
include("testa2.php");
$loadcontent= "nuovi_articoli/".$titolo_articolo.".php";if($save_file) { //il resto tutto uguale a sopra
[/html]
Quindi problema risolto, puoi chiudere la discussione ^^ e grazie di tutto
-