Non riesco a far accettare opendir in questo modo:
Credo sia una semplice questione di apici e doppi apici, ma non riesco a venirne a capo. Suggerimenti?Codice PHP:
if ($handle = opendir("prove/".$accesso."/contenuti")) {
Non riesco a far accettare opendir in questo modo:
Credo sia una semplice questione di apici e doppi apici, ma non riesco a venirne a capo. Suggerimenti?Codice PHP:
if ($handle = opendir("prove/".$accesso."/contenuti")) {
Prova così:
Codice PHP:
if ($handle = opendir("/membri/bisbiturro/prove/".$accesso."/contenuti/")) {
Correzione inesatta:
nelle condizioni non si usa = che è di assegnazione. ma ==.
Codice PHP:
<?php
$handle = opendir('/prove/' . $accesso . '/contenuti/');
if($handle)
{
#Codice
}
closedir($handle);
?>
Ultima modifica di dreadnaut : 19-04-2009 alle ore 00.59.03
@biccheddu:
Quella non è una condizione, è una assegnazione! E' corretta così com'è, ed è un ottimo metodo per risparmiare spazio mantenendo leggibilità. Altri esempi utili:
Un if vuole fra parentesi una espressione (booleana, o convertibile a ~), ed una assegnazione è proprio un'espressione, che come risultato ha il valore assegnato alla variabile. In php puoi scrivere:Codice PHP:
if ($db = mysql_db_connect(...)) {
...
if ($f = fopen($nomefile, "r")) {
La maggior parte delle funzioni php restituisce false in caso di errore rendendo questa pratica molto usata - false fa fallire l'if, e si può quindi scrivere codice tipoCodice PHP:
$a = $b = 3;
@bisbiturro:Codice PHP:
if ($qualcosa = funzione()) {
// usiamo $qualcosa
} else {
// la funzione non ha funzionato
}
La sintassi è corretta - se $accesso contiene il nome di una direcctory esistente, ed il path completo è una sottodirectory della cartella in cui si trova lo script principale.
Sintassi alternativa:
Codice PHP:
if ($handle = opendir("prove/{$accesso}/contenuti/")) {
Ultima modifica di dreadnaut : 19-04-2009 alle ore 01.10.06
Grazie per aver fatto un po' di chiarezza.
Cmq no, niente da fare. Il pezzo fa parte di uno script per leggere files di test da una directory e poi stamparli a video. In altri punti l'accesso alla stessa directory funziona, la variabile passa. Lo so perchè ho provato mettendo subito la directory e poi la variabile, e funzionava. Arrivato al famigerato punto, più nulla.
Codice PHP:
$apridati = fopen("prove/".$accesso."/dati.txt", "r"); //QUI SI'
$leggidati = fgets($apridati, 4096);
fclose($apridati);
$divididati=explode("*+", $leggidati);
function getNewsList(){
$fileList = array();
if ($handle = opendir("prove/{$accesso}/contenuti/")) { //QUI NO
while ($file = readdir($handle)) {
if (!is_dir($file)) {
$fileList[] = $file;
}}}
rsort($fileList);
return $fileList;
}
Codice PHP:
$list = getNewsList();
foreach ($list as $value) {
$newsData = file("prove/".$accesso."/contenuti/".$value); //QUI SI'
$data = $newsData[0];
$testo = $newsData[1];
unset ($newsData['0']);
unset ($newsData['1']);
$newsContent = "";
foreach ($newsData as $value) {
$newsContent .= $value;
}
$testonuovo=preg_replace('#\\\"#',"'",$testo);
echo"<table width='900' border='0' cellspacing='0' cellpadding='0'>
<tr>
<td width='400' align='center' class='body'>
<p><img src='prove/".$accesso."/immagini/".$data.".jpg'></p>
</td>
<td width='500' valign='top' class='body'>
$testonuovo
</td>
</tr>
</table>";
}
EDIT:
Ho risolto, mi concentravo sul problema sbagliato: la sintassi era giusta (mi pareva assurdo, infatti) ma era all'interno di una funzione e avevo dimenticato che bisogna far passare le variabili anche lì. :D
Per cui, semplicemente ho messo
e al richiamoCodice:function getNewsList($accesso){ $fileList = array();
E va che è una meraviglia. :DCodice:$list = getNewsList($accesso);
Ultima modifica di seneca : 19-04-2009 alle ore 18.31.06
$accesso è una variabile top-level, che non è visibile dentro una funzione. Passala come parametro, o se vuoi metti un global $accesso; all'inizio di getNewList, per "risucchiarla" fra le variabili disponibili nella funzione.