22. januar 2007 - 13:45
Der er
24 kommentarer og 1 løsning
sortere billeder affabetisk
Hi there, har en side der viser alle mine billder i thumpsnails, men mangler at kunne vise dem i alfabetisk rækkefølge, herefter tal. Ved bogstaver er det det første uanset om det er lilel eller stort. har forsøgt med sort( $fil_liste ); men det bliver noget underligt noget. ??? :-)
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
22. januar 2007 - 13:54
#1
Prøv natsort()
22. januar 2007 - 13:57
#2
hejsa, næ den ser ikke ud til at virke men måske jeg placerer den forkert: <?php $bibliotek = "../../image"; function list_filer($bibliotek) { if ($bib = @opendir($bibliotek)) { $antal_pr_row = 5; $num = 0; while (false !== ($fil = readdir($bib))) { if ($fil != '.' && $fil != '..' && !ereg('^\..+', $fil)) { $fil_liste[$num] = ""; if ($num % $antal_pr_row == 0) $fil_liste[$num] .= "<tr>"; $fil_liste[$num] .= "<td><img src=\"$bibliotek/$fil\" width=\"90\" height=\"90\" /><br /><a href=\"$bibliotek/$fil\">$fil</a></td>"; if ($num % $antal_pr_row == 4) $fil_liste[$num] .= "</tr>"; $num++; } } closedir($bib); natsort( $fil_liste ); if(is_array($fil_liste)) { $c = count( $fil_liste ); $liste = "<table width='100%' border='0'>"; for ( $i = 0; $i < $c; $i++ ) { $n = $i % 5; if ( $n == 0 && $i != 0 ) { $liste .= " </tr>\n"; } if ( $i == 0 || $n == 0 ) { $liste .= " <tr>\n"; } $liste .= " <td>$fil_liste[$i]</td>\n"; } for ( $i = $n + 1; $i < 5; $i++ ) { $liste .= " <td> </td>\n"; } $liste .= " </tr>\n</table>\n"; } else { $liste = "<p>Ingen filer i dir</p>"; } return "Klik på link for at se normal visning:" . $liste; } else { die("Kunne ikke åbne dir: " . $bibliotek); } } echo list_filer('../../image'); ?>
22. januar 2007 - 14:08
#3
Det kan jeg ikke lige overskue nu! :o) Det må jeg kigge på senere, eller en anden må.
22. januar 2007 - 14:28
#4
Det kunne være at du skulle prøve natcasesort. Hvis den heller ikke virker så må du lige forklare hvad den gør forkert..
22. januar 2007 - 14:35
#5
hej sw_red_6 det er det samme, som du kan se sætter jeg natsort( $fil_liste ); efter første afsnit men den viser fotos i tilfældig reækkefølge , kan slet ikke se nogen logi i rækkefølgen. Skulle jo gerne vise fra a osv vandret 5 foto. ved ikke om placering af natsort( $fil_liste ); og om $fil_liste er det rigtige. :-)
22. januar 2007 - 14:41
#6
det er nok fordi den ikke ændrer på arraykeys når du sorterer så du skulle måske lave det om så du bruger foreach() til at udskrive dine billeder
22. januar 2007 - 14:45
#7
prøv evt. det her: if(is_array($fil_liste)) { $i=0; $liste = "<table width='100%' border='0'>"; foreach ($fil_liste as $key => $fil) { $i++; $n = $i % 5; if ( $n == 0 && $i != 0 ) { $liste .= " </tr>\n"; } if ( $i == 0 || $n == 0 ) { $liste .= " <tr>\n"; } $liste .= " <td>$fil</td>\n"; } for ( $i = $n + 1; $i < 5; $i++ ) { $liste .= " <td> </td>\n"; } $liste .= " </tr>\n</table>\n"; } else { $liste = "<p>Ingen filer i dir</p>"; }
22. januar 2007 - 15:06
#8
aå laver den 6 rækker og vil ikke vise alle men står bare og knokler *S*
22. januar 2007 - 15:14
#9
men den sorterer dog men viser ikke korrekt tabelvisning
22. januar 2007 - 15:28
#10
hmm har du prøvet at sætte $i++; nederst i den foreach?
22. januar 2007 - 15:34
#11
hvordan mener du?
22. januar 2007 - 15:37
#12
det må være noget med tabellen nu for den kører efter alfabet men den viser en masse tomme felter og laver flere rækker end de 5 og rykker den sidste return "Klik på link for at se normal visning:" . $liste; forkert !!!!
22. januar 2007 - 15:38
#13
Sådan her: foreach ($fil_liste as $key => $fil) { $n = $i % 5; if ( $n == 0 && $i != 0 ) { $liste .= " </tr>\n"; } if ( $i == 0 || $n == 0 ) { $liste .= " <tr>\n"; } $liste .= " <td>$fil</td>\n"; $i++; } Det er mere fordi du siger den laver 6 rækker, selvom den kun skal lave 5.
22. januar 2007 - 16:00
#14
du får lige hele koden som den er nu for den funker ikke den viser nu 6 rækker og en del tomme felter hvor koden øverst viser korrekt jeg kan ikke se hvor det går galt - kan du? her er koden: <?php $bibliotek = "../../image"; function list_filer($bibliotek) { if ($bib = @opendir($bibliotek)) { $antal_pr_row = 5; $num = 0; while (false !== ($fil = readdir($bib))) { if ($fil != '.' && $fil != '..' && !ereg('^\..+', $fil)) { $fil_liste[$num] = ""; if ($num % $antal_pr_row == 0) $fil_liste[$num] .= "<tr>"; $fil_liste[$num] .= "<td><img src=\"$bibliotek/$fil\" width=\"90\" height=\"90\" /><br /><a href=\"$bibliotek/$fil\">$fil</a></td>"; if ($num % $antal_pr_row == 4) $fil_liste[$num] .= "</tr>"; $num++; } } closedir($bib); natcasesort( $fil_liste ); if(is_array($fil_liste)) { $i=0; $liste = "<table width='100%' border='0'>"; foreach ($fil_liste as $key => $fil) { $n = $i % 5; if ( $n == 0 && $i != 0 ) { $liste .= " </tr>\n"; } if ( $i == 0 || $n == 0 ) { $liste .= " <tr>\n"; } $liste .= " <td>$fil</td>\n"; $i++; } for ( $i = $n + 1; $i < 5; $i++ ) { $liste .= " <td> </td>\n"; } $liste .= " </tr>\n</table>\n"; } else { $liste = "<p>Ingen filer i dir</p>"; } return "Klik på link for at se normal visning:" . $liste; } else { die("Kunne ikke åbne dir: " . $bibliotek); } } echo list_filer('../../image'); ?>
22. januar 2007 - 16:04
#15
den første kolonne der skal man scrolle langt langt ned for at se fotoet om det er den kolonne der er forkert eller om det er den sidste nr 6 ved jeg skisme ik *S*
22. januar 2007 - 16:19
#16
prøv det her: function list_filer($bibliotek) { if ($bib = @opendir($bibliotek)) { $antal_pr_row = 5; $num = 0; while (false !== ($fil = readdir($bib))) { if ($fil != '.' && $fil != '..' && !ereg('^\..+', $fil)) { $fil_liste[$num] = ""; $fil_liste[$num] .= "<td><img src=\"$bibliotek/$fil\" width=\"90\" height=\"90\" /><br /><a href=\"$bibliotek/$fil\">$fil</a></td>"; $num++; } } closedir($bib); natcasesort( $fil_liste ); if(is_array($fil_liste)) { $i=0; $liste = "<table width='100%' border='0'>"; foreach ($fil_liste as $key => $fil) { $n = $i % 5; if ( $n == 0 && $i != 0 ) { $liste .= " </tr>\n"; } if ( $i == 0 || $n == 0 ) { $liste .= " <tr>\n"; } $liste .= " $fil\n"; $i++; } for ( $i = $n + 1; $i < 5; $i++ ) { $liste .= " <td> </td>\n"; } $liste .= " </tr>\n</table>\n"; } else { $liste = "<p>Ingen filer i dir</p>"; } return "Klik på link for at se normal visning:" . $liste; } else { die("Kunne ikke åbne dir: " . $bibliotek); } }
22. januar 2007 - 16:36
#17
den funker skisme. hvor lækkert kun 1 ting den er utrolig langsom kan det være koden eller bare et tilfælde??? du smider et velfortjent svar, ik
23. januar 2007 - 08:59
#18
Det kan godt være koden der er langsom, men jeg kan ikke umiddelbart se nogen måde at optimerer den på..
23. januar 2007 - 09:31
#19
nej det er underligt den går lidt i stå men hvis jeg går en side tilbage og så frem så tager den flere med og sådan igen 2-3 gange så er den der *S* ved ike om du gider se på en mere det er bare en oplistning af alle filerne med en slette-funktion men den vil jeg også gerne have SORT du skal nok få flere points hvis jeg kan finde ud af det*S* Min kode er nu: <?php $dir = $_SERVER["DOCUMENT_ROOT"] ."/image/"; if(!isset($_GET['slet'])){ if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if($file != "." && $file != ".." && substr($file, -4) != '.php') { echo "<table border=0><tr>"; echo('<td width=200><a href="/image/'.htmlentities(urlencode($file)).'">'.htmlentities($file).'</a></td>'); echo "<td><a href=\"" . $_SERVER['PHP_SELF'] . "?slet=" . $file . "\">→ delete</a></td>"; echo "</tr></table>"; } } closedir($dh); } } }else{ if(file_exists($dir . $_GET['slet'])){ unlink($dir . rawurldecode($_GET['slet'])); echo "Filen: " . $_GET['slet'] . " blev slettet. <a href=\"" . $_SERVER['PHP_SELF'] . "\">Retur</a><br><br>"; }else{ echo "Filen: " . $_GET['slet'] . " findes ikke. <a href=\"" . $_SERVER['PHP_SELF'] . "\">Retur</a><br><br>"; } } ?> :-)
26. januar 2007 - 10:58
#20
Det nemmeste ville nok være at skifte dette: if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if($file != "." && $file != ".." && substr($file, -4) != '.php') { echo "<table border=0><tr>"; echo('<td width=200><a href="/image/'.htmlentities(urlencode($file)).'">'.htmlentities($file).'</a></td>'); echo "<td><a href=\"" . $_SERVER['PHP_SELF'] . "?slet=" . $file . "\">→ delete</a></td>"; echo "</tr></table>"; } } closedir($dh); } } ud med den anden funktion jeg har lavet og så ændre i koden så du får slet-linket med..
26. januar 2007 - 11:01
#21
/me synes folk skulle bruge DirectoryIterator noget mere.
26. januar 2007 - 13:32
#22
hej sw jeg har vist ikke forklaret mig godt nok. Min slettefunktion ligger på seperat fil og skal ikke blandes ind i den anden. Så min kode: <?php $dir = $_SERVER["DOCUMENT_ROOT"] ."/image/"; if(!isset($_GET['slet'])){ if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if($file != "." && $file != ".." && substr($file, -4) != '.php') { echo "<table border=0><tr>"; echo('<td width=200><a href="/image/'.htmlentities(urlencode($file)).'">'.htmlentities($file).'</a></td>'); echo "<td><a href=\"" . $_SERVER['PHP_SELF'] . "?slet=" . $file . "\">→ delete</a></td>"; echo "</tr></table>"; } } closedir($dh); } } }else{ if(file_exists($dir . $_GET['slet'])){ unlink($dir . rawurldecode($_GET['slet'])); echo "Filen: " . $_GET['slet'] . " blev slettet. <a href=\"" . $_SERVER['PHP_SELF'] . "\">Retur</a><br><br>"; }else{ echo "Filen: " . $_GET['slet'] . " findes ikke. <a href=\"" . $_SERVER['PHP_SELF'] . "\">Retur</a><br><br>"; } } ?> skal bare have indsat en kodestump så den lister i alfabetisk orden. Jeg har prøvet at indsættet natcasesort( ); flere steder men den kommer frem med der skal være et array. Kan man ikke bruger ORDER eller SORT et sted i koden så den er alfabetisk. :-)
29. januar 2007 - 11:42
#23
det kan ikke umiddelbart sættes ind, har du prøvet at kigge på windcapes forslag ang. DirectoryIterator.. såfremt du har php5 altså og ikke har noget mod at bruge et, tilsyneladende, udokumenteret library...
29. januar 2007 - 11:54
#24
Hej, nej anvender ikke php5. Ok, smider du et svar så stiller jeg spørgsmålet igen... og 1000 tak for hjælpen :-)
29. januar 2007 - 11:56
#25
så får du et svar igen ;o)
Vi tilbyder markedets bedste kurser inden for webudvikling