v5.dk logo
Kom ind og besøg vores Discord Chat-community
Bliv medlem her eller læs mere om Discord her
Få adgang til alt på hele v5.dk
- bliv Premium-medlem for kun 39,95 kr.

Mere info Køb nu

Premium på v5.dk
v5.dk logo  v5.dk e-learning
Log på med Facebook
  • Log ind på v5.dk
  • Opret bruger
  • Log ind
  • v5.dk Premium
  • v5.dk Premium
  • Hvad siger vores kunder?
  • E-læring for begyndere
  • icon for WordPress 4 e-learning WordPress 4
  • icon for Office 365 e-learning Office 365
  • icon for Microsoft Word e-learning Microsoft Word
  • Bloggen for alle
  • E-læring for nørder
  • icon for PHP-programmering e-learning PHP-programmering
  • icon for iOS Programmering e-learning iOS Programmering
  • icon for Linux Server e-learning Linux Server
  • Bloggen for nørder
  • Arkiverede videoer
  • Fællesskab
  • Forum
  • Idéer og ønsker
  • Markedspladsen
  • v5.dk Premium
  • Gratis webhotel
  • Cloud-servere
  • Om v5.dk
  • Søg på v5.dk
  • Om v5.dk ApS
    • Om virksomheden
    • RSS-feeds og tjenester
    • Driftsmeddelelser
    • Presse-kit
    • Ledige jobs
    • Social Netværk
      • Facebook
      • Twitter
      • Instagram
    • Alt det andet
      • Forretningsbetingelser
      • Ophavsret og Copyright
  • Kontakt kundeservice
  • FAQ og Hjælp
    • Premium og abb.
    • Videoer og Afspiller
    • Forum og Points
    • Cloud-servers
  • Partner/Virksomhed
  • Partner-kanal
v5.dk logo mobile
  • Menu
  • Opret bruger

Gennemlæs et directory og tæl forekomster...

  • v5.dk
  • Forum
  • PHP-programmering
  • Gennemlæs et directory og tæl forekomster...
  • Sidevisninger: 2709 har set dette indlæg
Besvar #0Spørgsmål oprettet af @jens-peterkongerslev | 55 points
15 points ude 4 indlæg 6 år siden Spørgsmål besvaret
avatar
 

Hvis du skulle lave et gennemløb af et directory på serveren som eks. har følgende indhold:
1.jpg
2.jpg
2_1.jpg
2_2.jpg
3.jpg
.
.
.
100.jpg
100_1.jpg

Filnavnene er struktureret således at de starter med et nr før underscore som er hovedbillednr, nummeret efter underscore er et underkategorinr.

- og du vil tælle antal filer inden for hvert billede, altså:
billed 1 findes i 1 udgave
billed 2 findes i 3 udgaver
billed 3 findes i 2 udgaver
.
.
.
billed 100 findes i 2 udgaver

Hvordan ville du så gøre det i PHP?

Mvh. Jens Peter 

Dette svar er accepteret af OP og tildelt 15 points
avatar
 
Besvar#1 @jens-peterkongerslev svarede for 6 år siden

Jeg er selv kommet frem til følgende mulige løsning - ikke køn og garanteret ikke den simpleste og effektive.... men "it does the job!"

<?php
include("app.php");
$app = new minAwesomeApp;

function listDirs($where){
$itemHandler=opendir($where);
$i=0;
$liste = array();
while(($item=readdir($itemHandler)) !== false){
if(substr($item, 0, 1)!="."){
if(is_dir($item)){
echo "Directory";
}else{
if(((substr($item, 1, 1)=="_")) or ((substr($item, 1, 1)==".")))
{
$liste[substr($item, 0, 1)]++;
}
else{ if(((substr($item, 2, 1)=="_")) or ((substr($item, 2, 1)==".")))
{
$liste[substr($item, 0, 2)]++;
}
else{ if(((substr($item, 3, 1)=="_")) or ((substr($item, 3, 1)==".")))
{
$liste[substr($item, 0, 3)]++;
}
}}}
$i++;
}
}
ksort($liste);
foreach($liste as $x => $x_value) {
echo "<br>Billednr=" . $x . "  findes i " . $x_value . " udgaver.";
}
}
?>

<?php
listDirs("billeder/");
?>

avatar
 
Besvar#2 @jens-peterkongerslev kommenterede for 6 år siden

Med ovenstående in mente har jeg forsøgt at lave en update af et felt på en tabel med antal udgaver af hvert billede....
Jeg har inde i min for each tilføjet

$app->DatabaseUpdate("billeder", array('antalBilleder'), array($x_value), "WHERE gruppeId = 2 AND billedNr = $x");

MEN jeg får følgende fejl:

Fatal error: Uncaught Error: Call to a member function DatabaseUpdate() on null.....

Nogen der kan sige hvad jeg gør forkert...?

Mvh. Jens Peter 

avatar
 
Besvar#3 @dhh Admin kommenterede for 6 år siden

 #2  Dit problem er noget der kaldes for "scopes". (Husk i fremtiden at lave en ny forumtråd, så andre nemmere kan finde svar også. )

Lidt let fortalt, så handler det om hvad for nogle funktioner der kan se andre objekter og funktioner i koden. Fejlen med "on null" med din "DatabaseUpdate" function, betyder at objektet $app er tomt. Her har du et eksempel hvor det virker:

class.php fil:

<?php

// Opsætter fejlrappotering til alt pånær "notice"-beskeder
error_reporting(E_ALL ^ E_NOTICE);

// Definerer at vi gerne vil vise fejlbeskeder, sæt til 0 for at skjule fejlbeskeder
ini_set("display_errors", 1);

class minClass {
    public function minFunction() {
        echo "<p>Kaldt min funktion inde i min class.php fil.</p>";
    }
}

?>

index.php fil:

<?php

// Inkludere vores class.php fil
include('class.php');
// Initialize/start minClass object og sæt det til en variabel ($min_class)
$min_class = new minClass;

// Kalder vores $min_class object direkte efter at vi har sat den
$min_class->minFunction();

// En funktion i vores "hoved PHP fil" med et enkelt argument
function ikkeClassFunction($parsed_class) {
    echo "<p>Prøver at kalde min class inde fra en function.</p>";
    $parsed_class->minFunction();
}

// Starter ikkeClassFunction med $min_class som argument
ikkeClassFunction($min_class);

?>

I det overstående simplificeret eksempel, kan du se at vi først henter vores class.php fil og derefter sætter vores minClass class ind i vores $min_class variable.

Så kalder vi den som normalt, hvor det virker - for det er inde for dens "scope".

Men nu laver jeg en funktion som vi kalder senere i vores PHP kode på index.php. Og giver vores function et argument den kan tage imod. (Variablen $parsed_class.)

Så kalder jeg min nye funktion med $min_class som dens argument, så vi simpelthen giver den "objektet".

Jeg håber at det hele gav mening. Igen, grunden til at $app->DatabaseUpdate() ikke fungere, er fordi den ingen reference har til objektet $app. Den ser det simpelthen ikke, fordi du er inde i en funktion. Så vi bliver nød til at sende objektet $app, med over i funktionen for at kunne tilgå den.

Redigeret af dhh @dhh  d. 03.11.2016 kl. 11:20

Med venlige hilsner

Daniel H. Hemmingsen (@dhh)

avatar
 
Besvar#4 @jens-peterkongerslev kommenterede for 6 år siden

Tak Daniel - jeg tror godt jeg forstår konceptet nu ;-)

Mvh. Jens Peter 

Spørgsmålet er besvaret, men du er altid mere end velkommen til at skrive en kommentar!
avatar
 

Du er ikke logget ind

Du skal være logget ind på v5.dk før du kan benytte vores forum. Det er ganske gratis at oprette en bruger.

Opret en ny gratis bruger Log ind

Følger med i denne tråd

jens-peterkongerslev

Forum kategorier

  • Generelt
  • Guides & Howto84
  • Offtopic / Andet158
  • Microsoft Office
  • Microsoft Word11
  • Microsoft Excel4
  • Microsoft PowerPoint0
  • Web og hjemmesider
  • Wordpress17
  • Operativsystemer
  • Apple Mac OS X14
  • Apple iOS28
  • Microsoft Windows4
  • Linux16
  • Teknologier
  • Netværk og WiFi3
  • Internet-tjenester9
  • Programmering
  • PHP-programmering124
  • iPhone-/Xcode-programmering9

Aktive forum-tråde lige nu

Er det værd at have en "portfolio"-hjemmeside!?
Fejlkode i form af bip-lyde ved opstart af gammel stationær PC
MacBook gået ud ved indsættelse at IPhone SE…
Is Weed Legal in Europe
Buy real passport online|Buy counterfeit money
Chrome Auto Fyld holdt op med at virke
ÆØÅ
Tegne Program
Bygget med af v5.dk
© Copyright 2006-2023 • Forretningsbetingelser • Copyright • Persondata- og Cookiepolitik
v5.dk ApS - Åbogade 15 - 8200 Aarhus N - CVR: 36902833
v5.dk logo
Hej, vi hedder v5.dk og vi laver e-learning på dansk

v5.dk er sat i verden for at gøre teknologi tilgængeligt og anvendeligt for både professionelle og almindelige brugere på alle niveauer.

93 200 555
  Skriv til os
v5.dk bruger cookies til at huske dine indstillinger, livechat samt til statistik
 

Alle vores priser er inkl. moms Sikker SSL-beskyttet forbindelse

Dankort og Visa-Dankort  Visa  Mastercard og Mastercard Junior  Maestro

  • Produkter
  • v5.dk Premium
  • Cloud-servers
  • v5.dk
  • Om v5.dk
  • Kunderne siger
  • Kontakt os
  • Presse
  • Stay updated
  • RSS & tjenester
  • Søg på v5.dk
  • Sitemap