Gå til innhold

Script vil ikke fungere - Prøver å rette php-feil


Anbefalte innlegg

Skrevet

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 :p

 

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 
} 
?>

Videoannonse
Annonse
Skrevet (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 :D

Edit2: Redigering med php tags fungerer ikkje så bra :/

Endret av Shadows0
Skrevet

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!

Skrevet

*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
<?php

while ($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;)

Skrevet

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.

Skrevet

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...

Skrevet

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 :D

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...