- Home
- Categorie
- Coding e Sistemistica
- PHP
- Scemenza da principiante
-
Scemenza da principiante
Salve ragazzi, sto cercando di studiare il php seguendo un tutorial su questo forum, ma non riesco a capire per quale motivo non funziona correttamente:
[php]<?php
$cartella = opendir('../archivio');
while ($file = readdir($cartella)) {
$file_array[] = $file;
}
foreach ($file_array as $file) {
if ( $file == ".." || $file == ".") {
continue;
}
echo "<a href="../archivio/$file">$file<BR></a>";
$lungh_array= count($file_array);
}
echo "$lungh_array";
?>[/php]La lunghezza del'array tracciato non è esatta e mi ritrovo nella lista anche i file che iniziano per "." o ".." non capisco, dove sbaglio?Sono agli inizi... non massacratemi.
-
Ragazzi, ma perchè mi ritrovo sempre due file in più in una semplice cartella sul server?
I file sono "." e "..", da dove vengono fuori? Perchè sono costretto a toglierli con un ciclo?Se faccio così funziona tutto, è fatto bene?
Sono solo esercizi scemi :[php]<?php
$cartella = opendir('../archivio');
while ($file = readdir($cartella)) {
$file_array[] = $file;
$lunghFile= count($file_array);
}
foreach ($file_array as $file)
{
if ( $file == ".." || $file == ".") {
continue;
}
echo "<a href="../archivio/$file">$file</a><BR>";
}
echo "$lunghFile"-2;$doppio = "blu";
$colori = array('bianco','verde','blu','giallo','nero');
$lunghColori= count($colori);foreach ($colori as $colore)
{
if ( $colore == $doppio) {
echo "<BR>c'è un doppione ed è : $colore";
}
}
echo"<BR>$lunghColori"
?>[/php]
-
Quelli sono i collegamenti alle cartelle superiori, alla radice.
La funzione legge tutto...
Potresti fare un if che estrometta quei risultati.
-
Dici di mettere un if direttamente nel primo ciclo while?
Mi aiuti?
-
Ciao nuovobuio,
dai un occhiata qui.
-
Ti ringrazio Thedarkita, ho fatto così ma non capisco per quale motivo se cerco di mettere i file nell'array invece di stamparli soltanto mi riescono i file "." ".."
poi scusami, ma dopo l'if non ci vogliono le graffe con il codice da eseguire? Perchè tu non le hai messe e funziona lo stesso?
[php]$cartella = "../archivio";
$apriCartella = opendir($cartella);while (false !== ($files = readdir($apriCartella)))
{
if ($files != '.' && $files != '..')
$file_array[] = $files;
echo $files.'<br />';
//echo "<a href="../archivio/$files">$files</a><BR>";
}
[/php]
-
Credo sai un problema del costrutto if.
[php]if ($files != '.' && $files != '..')
{
$file_array[] = $files;
echo $files.'<br />';
echo "<a href="../archivio/$files">$files</a><BR>";
}[/php]Prova a mettere le azioni tra graffe.
-
I file . e .. sono per andare alle directory superiori, lo trovavi scritto anche nella discussione che ti ho indicato, vengono trovati sempre.
Le parentesi graffe non sono obbligatorie, se non ci sono viene eseguita solo l'operazione successiva, cioè:
[php]
if(1 == 1)
{
echo 'a';
}
echo 'b';
[/php]
è equivalente a:
[php]
if(1 == 1)
echo 'a';
echo 'b';
[/php]
Solo echo 'a'; viene eseguito se la condizione è vera, echo 'b'; viene eseguito sempre.
-
Vi ringrazio tantissimo ragazzi, piano piano imparerò! In effetti mettendo le graffe per l'if funziona tutto perfettamente:
[php]$cartella = "../archivio";
$apriCartella = opendir($cartella);while (false !== ($files = readdir($apriCartella)))
{
if ($files != '.' && $files != '..')
{
$fileArray[] = $files;
$lunghFile= count($fileArray);
//echo $files.'<br />';
//echo "<a href="../archivio/$files">$files</a><BR>";
}
}echo "$fileArray[0]<BR>";
echo "$lunghFile";[/php]Posso farvi ancora una domanda? Voi utilizzate qualche sw per scrivere php? Lo chiedo perchè non conosco ancora bene la sua formattazione, in flash c'è un pulsante che ti aggiusta e ti formatta tutto il codice scritto in automatico, verificandolo allo stesso tempo, non esiste una cosa simile per il php?
Io sono su mac.
-
Io uso Notepad++ che ha la sintassi colorata che aiuta non poco.
-
Nuovobuio fai attenzione alle maiuscole e alla punteggiatura nei messaggi...
Per quanto mi riguarda uso il semplice gedit di linux.