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")) {
Printable View
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/")) {
http://dreadnaut.altervista.org/_alt...-sign-tiny.png Correzione inesatta:
nelle condizioni non si usa = che è di assegnazione. ma ==.
:wink:Codice PHP:
<?php
$handle = opendir('/prove/' . $accesso . '/contenuti/');
if($handle)
{
#Codice
}
closedir($handle);
?>
@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/")) {
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);
$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.