Kenneth Dammyr Skrevet 7. juni 2007 Skrevet 7. juni 2007 Hei Jeg har laget et script som skal vise de 4 nyeste bildene i en mappe. I mappen ligger det 3 versjoner av hvert bilde, så den sorterer også ut slik at den bare viser "thumb". I tillegg vil jeg at bildene skal linke opp mot sen større versjon av seg selv i bildegalleriet (MG2). Bildegalleriet bruker flatfiler og det var dermed litt tungvint. Men tro det eller jeg så klarte jeg det. Fram til jeg skulle inkludere fila i hovedsiden. Da ville den ikke samarbeide lenger. Jeg tror feilen ligger i flatfil-"kapittelet", siden scriptet fungerte på hovedsiden før jeg fikk inn flatfila. Så skal dt også nevnes at hvis jeg flytter alle nødvendige filer til root-folder(samme som index) så vil det fungere. Så jeg slo på Error-reporting-ting og fikk opp en del meldinger. Kanskje disse er årsak i at det ikke fungerer? Men skjønner jeg error-meldingene? Selvsagt ikke Galleri-teaser Klikk for å se/fjerne innholdet nedenfor <?php error_reporting(E_ALL); ini_set('display_errors', '1'); // Funksjoner function LoadFiles($dir,$filter="") { $Files = array(); $It = opendir($dir); if (! $It) die('Cannot list files for ' . $dir); while ($Filename = readdir($It)) { if (preg_match("/\_thumb\b/i", $Filename)) { if ($Filename != '.' && $Filename != '..' ) { if(is_dir($dir . $Filename)) { $Files = array_merge($Files, LoadFiles($dir . $Filename.'/')); } else if ($filter=="" || preg_match( $filter, $Filename ) ) { $LastModified = filemtime($dir . $Filename); $Files[] = array($dir .$Filename, $LastModified); } else continue; } } } return $Files; } function DateCmp($b, $a) { return strnatcasecmp($a[1] , $b[1]); } function SortByDate(&$Files) { usort($Files, 'DateCmp'); } // Utfør handlinger $Files = LoadFiles("pictures/"); $fivePos = strpos($Files, "_thumb"); echo $fivePos; SortByDate($Files); reset($Files); while ($i < 4) { $i++; list($k,$v) =each($Files); $fildel = explode("_thumb",$v[0]); $fildel2 = explode("/",$fildel[0]); $handle = fopen("mg2db_idatabase.php", "r"); while (($data = fgetcsv($handle, 1000, "*")) !== FALSE) { $fildel = explode(".",$data[2]); if ($fildel2[1] == $fildel[0]) { ?> <a href="<?echo "index.php?id=".$data[1]; ?>"><img src="<?=$v[0] ?>" /></a><br /><br /> <?php } } ?> <?php } ?>
Runar0 Skrevet 7. juni 2007 Skrevet 7. juni 2007 (endret) Svarar på feilmeldingene generelt. Orker ikkje å telje meg fram til linjene. Notice: Array to string conversion in /home/studenter/organisasjoner/fadder/gallery/galleryteas.php on line 39 Her bruker du eit array objekt som ein tekst streng. Eks: PHP <?php$i = array('foo', 'bar'); $bar = 'Foo'.$i; ?> Notice: Undefined variable: i in /home/studenter/organisasjoner/fadder/gallery/galleryteas.php on line 45 $i var ikkje satt før du brukte den. Eks: PHP <?php// Feil while(true) { $i++; if($i > 10) break; } // Rett $i = 0; while(true) { $i++; if($i > 10) break; } ?> Notice: Undefined offset: 2 in /home/studenter/organisasjoner/fadder/gallery/galleryteas.php on line 52 Index 2 er ikkje satt i arrayen. Eks PHP <?php$i = array('foo', 'bar'); echo $i[2]; ?> Edit: 300 Edit2: Redigering med php tags fungerer ikkje så bra :/ Endret 7. juni 2007 av Shadows0
Kenneth Dammyr Skrevet 7. juni 2007 Forfatter Skrevet 7. juni 2007 Kjempefint med en oppklaring rundt utrykkene, men jeg forstår ikke så mye mer av hva jeg skal gjøre likevel. Hva er en index liksom? Og hvilken er nummer 2? Og ikke minst hvordan endrer jeg det? På forhånd takk!
Runar0 Skrevet 7. juni 2007 Skrevet 7. juni 2007 *telje* Vist eg talte rett så er dette linje 52 PHP <?php$fildel = explode(".",$data[2]); ?> Feilen betyr da at $data[2] ikkje finst. Feilmeldingen om at $i ikkje finst kjem her i frå: PHP <?phpwhile ($i < 4) { $i++; ?> prøv og legg til $i = 0 for while løkka. Må løpe no, kjem tilbake i kveld vist du ikkje finn ut av det;)
grimjoey Skrevet 7. juni 2007 Skrevet 7. juni 2007 Index er en referanse til en verdi i et array. $arr = array('noe', 'noe annet', 'dette?'); denne typen array får numeriske indices (index i flertall) eller keys. da kan du hente ut verdiene som $arr[0], $arr[1] og $arr[2]. Indices begynner med 0. Det kan hende det er der feilen ligger (du kan ha telt fra 1). Det finnes også assosiative arrays som har strenger som keys. $arr = array('index1' => 'noe', 'index2' => 'noe annet', 'blablabla' => 'dette?'); disse verdiene hentes med $arr['index1'], $arr['index2'] og $arr['blablabla']. en annen ting værdt å nevne er at man kan hente keys i en foreach loop. foreach($arr as $key => $value) { echo($key.' er indexen og '.$value.' er verdien.'); } i motsetning til vanligere: foreach($arr as $value) { echo($value.' er verdien.'); } og til sist: $some = 'dette'; $thing = array("key" => "something"); $string = "dette er en string med $thing['key']"; // funker ikke $string = "$some er en string med {$thing['key']}"; // funker altså. hvis assosiative arrays skal brukes direkte i en "..." sting må arrayet og key'en innkapsles i {...}. Ellers behandler php parseren key'en som en del av stringen.
Kenneth Dammyr Skrevet 11. juni 2007 Forfatter Skrevet 11. juni 2007 Shadows0: Takk for konkrete forslag. Det første vet jeg ikke helt hvordan jeg skal løse. $data skal blir definert her: while (($data = fgetcsv($handle, 1000, "*")) !== FALSE) { ... Forslag nummer to fjernet et par linjer med error. grimjoey: Sikkert mye nyttig der, men jeg blir ikke så veldig mye klokere dessverre. Prøvde å sette krøllparentes rundt som du sier, men da fikk jeg blank side...
Kenneth Dammyr Skrevet 11. juni 2007 Forfatter Skrevet 11. juni 2007 Once again må jeg takke for hjelpen. Nå klarte jeg faktisk å få det til å funke! Problemet lå i mappe-problematikken og arrays. Når jeg i den ene mappa hadde funnet ut at array[1] var det jeg så etter, så var det ikke det i mappa over(der fila skulle ligge). Der var array[2] riktig. Så ved å bytte ut 1 med 2, så gikk det altså. Man lærer hver dag
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå