Avatar billede 4t Nybegynder
29. september 2005 - 22:56 Der er 27 kommentarer

images der skifter efter faste datoer

Nogle der har en ide til hvordan man kan ligge en kode i en PHP så den via indtastede datoer automatisk skifter foto/img ud.
Eks. noget med:

image1.jpg vises fra den 01.01.2005 til 21.03.2005
image2.jpg vises fra den 22.03.2005 til 24.03.2005
image3.jpg vises fra den 24.03.2005 til 30.03.2005

Osv.
Avatar billede hmortensen Nybegynder
30. september 2005 - 07:46 #1
Måske noget i den her retning:
$pics = array(
    array('image1.jpg', '2005-01-01', '2005-03-21'),
    array('image2.jpg', '2005-03-22', '2005-03-24'),
    array('image3.jpg', '2005-03-25', '2005-03-30')
);

function VisBillede($pics)
{
    for ($x = 0; $x < count($pics); $x++)
    {
        if ((strtotime($pics[$x][1]) <= time()) && (strtotime($pics[$x][2]) >= time()))
        {
            return $pics[$x][0];
        }
    }
    return false;
}

$pic = VisBillede($pics);
if ($pic)
    echo $pic;
Avatar billede 4t Nybegynder
30. september 2005 - 11:42 #2
OK tester det lige. Koden skal vel blot ind i notepad og så kanfilen kaledes random.php.
Imag ligger i img - så skal "den linie der kalder foto vel hede":

    array('img/image1.jpg', '2005-01-01', '2005-03-21'),

ikke? De rkan vel tilføjes flre linier ned af ikke, uden at der skal ædres i koden andet end.

    array('image1.jpg', '2005-01-01', '2005-03-21'),
    array('image2.jpg', '2005-03-22', '2005-03-24'),
    array('image3.jpg', '2005-03-25', '2005-03-30')
    array('image4.jpg', '2005-01-01', '2005-03-21'),
    array('image5.jpg', '2005-03-22', '2005-03-24'),
    array('image6.jpg', '2005-03-25', '2005-03-30')

(og så skal dato ændres ikke!)
Avatar billede hmortensen Nybegynder
30. september 2005 - 11:43 #3
Jo, du kan blot tilføje flere, bare husk (,) komma efter hver linie, på nær den sidste.
Avatar billede 4t Nybegynder
30. september 2005 - 12:02 #4
Mangler der noget før og efter koden? (Er ikkelige PHP ekspert)
Avatar billede hmortensen Nybegynder
30. september 2005 - 12:03 #5
Nej, det kode stykke her, vil returnere navnet på det billede der er knyttet til den aktuelle dato, hvis det findes.
Avatar billede 4t Nybegynder
30. september 2005 - 12:12 #6
Har lige testet.. Lagt det op på min server. (Der er PHP osv). Så skriver den blot koderne: $pics = array( array('img/image1.jpg', '2005-09-30', '2005-10-01'), array('img/image2.jpg', '2005-10-02', '2005-10-03'), array('img/image3.jpg', '2005-10-04', '2005-10-05') ); function VisBillede($pics) { for ($x = 0; $x < count($pics); $x++) { if ((strtotime($pics[$x][1]) <= time()) && (strtotime($pics[$x][2]) >= time())) { return $pics[$x][0]; } } return false; } $pic = VisBillede($pics); if ($pic) echo $pic;

Hm... Hvad mon går galt. Foto er lagt op i et under dir img - "under" det arkiv hvor php filen ligger..
Avatar billede 4t Nybegynder
30. september 2005 - 12:16 #7
Serveren er hos UnoEuro og er et hotel (Bronze Suite) med PHP tilsluttet og aktiveret Frontpage Extensions..http://www.unoeuro.com/
Avatar billede hmortensen Nybegynder
30. september 2005 - 12:53 #8
Har du "<?php ?>" tags på ?
Avatar billede 4t Nybegynder
30. september 2005 - 14:53 #9
Nu har jeg denne kode!

<?php$pics = array(
    array('image1.jpg',

'2005-09-30',

'2005-10-01'),
    array('image2.jpg',

'2005-10-02',

'2005-10-03'),
    array('image3.jpg',

'2005-10-04',

'2005-10-05')
);

function VisBillede($pics)
{
    for ($x = 0; $x <

count($pics); $x++)
    {
        if

((strtotime($pics[$x][1])

<= time()) &&

(strtotime($pics[$x][2])

>= time()))
        {
            return

$pics[$x][0];
        }
    }
    return false;
}

$pic = VisBillede($pics);
if ($pic)
    echo $pic;?>

Og når den er på sitet, og jeg reloader så sender den koden til min maskine! (Bruger alm. Internet MS Browser) Hm..
Avatar billede showsource Seniormester
30. september 2005 - 15:00 #10
Her skal være mellemrum, <?php$pics

<?php
$pics
Avatar billede 4t Nybegynder
30. september 2005 - 15:07 #11
Nu står det således:

<?php

$pics = array(
    array('image1.jpg', '2005-09-30',

'2005-10-01'),
    array('image2.jpg', '2005-10-02',

'2005-10-03'),
    array('image3.jpg', '2005-10-04',

'2005-10-05')
);

function VisBillede($pics)
{
    for ($x = 0; $x < count($pics);

$x++)
    {
        if ((strtotime($pics[$x][1]) <=

time()) && (strtotime($pics[$x][2]) >=

time()))
        {
            return $pics[$x][0];
        }
    }
    return false;
}

$pic = VisBillede($pics);
if ($pic)
    echo $pic; ?>

Men samme fejl opstår.
Avatar billede 4t Nybegynder
30. september 2005 - 15:09 #12
Og også uden linieskift:

<?php
$pics = array( osv..........

Måske du vil sætte tagsene ind rigtigt? Sådan en Photoshop fætter som mig er jo ikke kode fyr :-)
Avatar billede 4t Nybegynder
30. september 2005 - 15:14 #13
Et skrift længere, nu skriver den image1.jpg i framen! Men henter ikke foto ind!
Fremskridt * Smiler *
Avatar billede hmortensen Nybegynder
30. september 2005 - 15:18 #14
Så laver du blot udskrift linie om:
echo '<img src="'.$pic.'">';
Avatar billede 4t Nybegynder
30. september 2005 - 15:22 #15
Øhe hvor skal den ind?
Avatar billede hmortensen Nybegynder
30. september 2005 - 15:23 #16
Istedet for den her linie:
echo $pic;
Avatar billede 4t Nybegynder
30. september 2005 - 15:24 #17
Sådan?

<?php
$pics = array(
    array('img/image1.jpg',

'2005-09-30', '2005-10-01'),
    array('img/image2.jpg',

'2005-10-02', '2005-10-03'),
    array('img/image3.jpg',

'2005-10-04', '2005-10-05')
);

function VisBillede($pics)
{
    for ($x = 0; $x < count($pics);

$x++)
    {
        if ((strtotime($pics[$x][1]) <=

time()) && (strtotime($pics[$x][2]) >=

time()))
        {
            return $pics[$x][0];
        }
    }
    return false;
}

echo '<img src="'.$pic.'">';
if ($pic)
    echo $pic; ?>

Det virker ej heller..
Avatar billede 4t Nybegynder
30. september 2005 - 15:26 #18
Prøvede også:

<?php

$pics = array(
    array('image1.jpg', '2005-09-30',

'2005-10-01'),
    array('image2.jpg', '2005-10-02',

'2005-10-03'),
    array('image3.jpg', '2005-10-04',

'2005-10-05')
);

function VisBillede($pics)
{
    for ($x = 0; $x < count($pics);

$x++)
    {
        if ((strtotime($pics[$x][1]) <=

time()) && (strtotime($pics[$x][2]) >=

time()))
        {
            return $pics[$x][0];
        }
    }
    return false;
}

$pic = VisBillede($pics);
if ($pic)
    echo '<img src="'.$pic.'">'; ?> 

Men det virker ej heller...... Måske du vil skrive det, så det havner rigtigt?
Avatar billede hmortensen Nybegynder
30. september 2005 - 15:29 #19
Sådan her:
<?php

$pics = array(
    array('image1.jpg', '2005-09-30',
    '2005-10-01'),
    array('image2.jpg', '2005-10-02',
    '2005-10-03'),
    array('image3.jpg', '2005-10-04',
    '2005-10-05')
);

function VisBillede($pics)
{
    for ($x = 0; $x < count($pics); $x++)
    {
        if ((strtotime($pics[$x][1]) <= time()) && (strtotime($pics[$x][2]) >= time()))
        {
            return $pics[$x][0];
        }
    }
    return false;
}

$pic = VisBillede($pics);

if ($pic)
{
    echo '<img src="'.$pic.'">';
}
?>
Avatar billede 4t Nybegynder
30. september 2005 - 15:31 #20
Tænkte på kan det være noget med stige at gøre? Der er oprettet et arkiv hvor det hele ligger. Php, image1.jpg, image2.jpg, image3.jpg dette ligger ikke helt ude i roden. Skal der skrives en anden allokation i PHP. Men hvis blot PHP og images ligger i samme kasse er det vel fint nok. Eller skal der sådan noget ../ foran noget, eller bruger man ikke det i PHP
Avatar billede hmortensen Nybegynder
30. september 2005 - 15:33 #21
Du skal henvise til billedet:
echo '<img src="mappe/'.$pic.'">';
Avatar billede 4t Nybegynder
30. september 2005 - 15:33 #22
Brugte netop din kode, men det er det samme, den skriver blot image1.jpg i feltet i stedet for at hente filen ned/ind.
Avatar billede 4t Nybegynder
30. september 2005 - 15:39 #23
Sådan?

<?php

$pics = array(
    array('image1.jpg', '2005-09-30',
    '2005-10-01'),
    array('image2.jpg', '2005-10-02',
    '2005-10-03'),
    array('image3.jpg', '2005-10-04',
    '2005-10-05')
);

function VisBillede($pics)
{
    for ($x = 0; $x < count($pics);

$x++)
    {
        if ((strtotime($pics[$x][1]) <=

time()) && (strtotime($pics[$x][2]) >=

time()))
        {
            return $pics[$x][0];
        }
    }
    return false;
}

$pic = VisBillede($pics);

if ($pic)
{
echo '<img src="img/'.$pic.'">';
}
?>

De tre foto image1.jpg, image2.jpg og image3.jpg ligger i en mappe kaldt img. der er en undermappe til der hvor php filen ligger. Men det virker ej heller.
Der skal ikke også stå img oppe ved hvert foto eller?

Eksempelvis:

array('img/image1.jpg', '2005-09-30','2005-10-01'),
Avatar billede 4t Nybegynder
30. september 2005 - 15:41 #24
nnæ  det skulle man heller ikke lige hm........
Avatar billede 4t Nybegynder
30. september 2005 - 15:45 #25
Måske jeg skal lade dig skrive den fulde kode. Og ikke gætte. Lige nu ligger filen i en mappe kaldet: info-random i den mappe ligger der en fil info-random.php og en mappe betegnet img, deri ligger de tre foto.
Avatar billede 4t Nybegynder
30. september 2005 - 16:03 #26
Så fik jeg til at virke. Mange 1000 tak, så må vi se om den også skifter dem ud relateret til datoer. Spændende.
Avatar billede 4t Nybegynder
30. september 2005 - 16:05 #27
Kan man lave det så image1.jpg starter helt oppe i venstra hjørne - helt oppe?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester