Random image

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
EkLekTos
WebDev Moderator
Δημοσιεύσεις: 7421
Εγγραφή: 07 Απρ 2005 15:44
Τοποθεσία: Inside the Effects
Επικοινωνία:

Random image

Δημοσίευση από EkLekTos » 27 Απρ 2007 05:52

Έχω το παρακάτω script για random images σε κάθε ανανέωση σελίδας ...

Κώδικας: Επιλογή όλων

<?php

// Make this the relative path to the images, like "../img" or "random/images/".
// If the images are in the same directory, leave it blank.
$folder = '';

// Space seperated list of extensions, you probably won't have to change this.
$exts = 'jpg jpeg png gif';

$files = array&#40;&#41;; $i = -1; // Initialize some variables
if &#40;'' == $folder&#41; $folder = './';

$handle = opendir&#40;$folder&#41;;
$exts = explode&#40;' ', $exts&#41;;
while &#40;false !== &#40;$file = readdir&#40;$handle&#41;&#41;&#41; &#123;
    foreach&#40;$exts as $ext&#41; &#123; // for each extension check the extension
        if &#40;preg_match&#40;'/\.'.$ext.'$/i', $file, $test&#41;&#41; &#123; // faster than ereg, case insensitive
            $files&#91;&#93; = $file; // it's good
            ++$i;
            &#125;
        &#125;
    &#125;
closedir&#40;$handle&#41;; // We're not using it anymore
mt_srand&#40;&#40;double&#41;microtime&#40;&#41;*1000000&#41;; // seed for PHP < 4.2
$rand = mt_rand&#40;0, $i&#41;; // $i was incremented as we went along

header&#40;'Location&#58; '.$folder.$files&#91;$rand&#93;&#41;; // Voila!
?>
Έφτιαξα ένα φάκελο και αποθήκευσα το αρχείο με τις εικόνες που θέλω, πάω μετά στο css και βάζω το παρακάτω

Κώδικας: Επιλογή όλων

background&#58; url&#40;'images/images/rotate.php'&#41;no-repeat;
Το script παιζει τέλεια σε opera. Σε firefox παίζει σπάνια άλλα όχι σε κάθε refresh και σε ie δεν μου εμφανίζει καν την εικόνα... :-? :-?
* Apple Technical Support Specialist *
* Apple Sales & Product Professional Certificate since 2011 * Εικόνα
Follow me @Twitter

Άβαταρ μέλους
EkLekTos
WebDev Moderator
Δημοσιεύσεις: 7421
Εγγραφή: 07 Απρ 2005 15:44
Τοποθεσία: Inside the Effects
Επικοινωνία:

Random image

Δημοσίευση από EkLekTos » 27 Απρ 2007 12:53

Να πω επίσης πως χρησιμοποιώ wordpress ...
* Apple Technical Support Specialist *
* Apple Sales & Product Professional Certificate since 2011 * Εικόνα
Follow me @Twitter

Άβαταρ μέλους
MichalisS
Honorary Member
Δημοσιεύσεις: 2372
Εγγραφή: 03 Ιαν 2005 23:50

Random image

Δημοσίευση από MichalisS » 28 Απρ 2007 12:17

Εγώ δεν ξέρω που είναι το λάθος και ο κώδικας μου φαίνεται μια χαρά...
Αλλά η κατάσταση με τους browsers είναι γελοία! :P

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Random image

Δημοσίευση από cpulse » 28 Απρ 2007 12:40

Νομίζω κατάλαβα που είναι το πρόβλημα. Ο κώδικας χωράει πολύ optimization.. αλλά κι εγώ νομίζω δεν έχει λάθη. Αλλού είναι.

Βάζοντας ένα php script μέσα σε CSS, ζητάς από τον layout manager να τρέξει το script, αλλά ο layout manager πιστεύει οτι θα πάρει εικόνα. To script όμως στο τέλος κάνει redirect σε εικόνα. O layout manager φαντάζομαι οτι δεν έχει προγραμματιστεί για να αντέχει τέτοια πράγματα. Άρα έχεις δύο λύσεις. Η μία, αντί για redirect να κάνεις output την εικόνα μέσα από το script.. πχ με την imagejpeg() για jpeg εικόνες. Αλλά αυτό αργεί. Η δεύτερη λύση, τη στιγμή που καλείς το CSS, εκεί αντί για script να βάλεις το όνομα του αρχείου. Θα στο πω χωρίς include files.. είναι λίγο άσχημο αλλά λειτουργεί.

Αντικατέστησε το

Κώδικας: Επιλογή όλων

background&#58; url&#40;'images/images/rotate.php'&#41;no-repeat;
με

Κώδικας: Επιλογή όλων

<?php

// Make this the relative path to the images, like "../img" or "random/images/".
// If the images are in the same directory, leave it blank.
$folder = '';

// Space seperated list of extensions, you probably won't have to change this.
$exts = 'jpg jpeg png gif';

$files = array&#40;&#41;; $i = -1; // Initialize some variables
if &#40;'' == $folder&#41; $folder = './';

$handle = opendir&#40;$folder&#41;;
$exts = explode&#40;' ', $exts&#41;;
while &#40;false !== &#40;$file = readdir&#40;$handle&#41;&#41;&#41; &#123;
    foreach&#40;$exts as $ext&#41; &#123; // for each extension check the extension
        if &#40;preg_match&#40;'/\.'.$ext.'$/i', $file, $test&#41;&#41; &#123; // faster than ereg, case insensitive
            $files&#91;&#93; = $file; // it's good
            ++$i;
            &#125;
        &#125;
    &#125;
closedir&#40;$handle&#41;; // We're not using it anymore
mt_srand&#40;&#40;double&#41;microtime&#40;&#41;*1000000&#41;; // seed for PHP < 4.2
$rand = mt_rand&#40;0, $i&#41;; // $i was incremented as we went along

?>

background&#58; url&#40;'<?php echo $folder.$files&#91;$rand&#93;; ?>'&#41; no-repeat;

Άβαταρ μέλους
EkLekTos
WebDev Moderator
Δημοσιεύσεις: 7421
Εγγραφή: 07 Απρ 2005 15:44
Τοποθεσία: Inside the Effects
Επικοινωνία:

Random image

Δημοσίευση από EkLekTos » 28 Απρ 2007 13:17

Ευχαριστώ για τις απαντήσεις..
cpulse να βάλω το κώδικα που μου έδωσες στο css?
* Apple Technical Support Specialist *
* Apple Sales & Product Professional Certificate since 2011 * Εικόνα
Follow me @Twitter

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Random image

Δημοσίευση από cpulse » 28 Απρ 2007 15:11

Ναι αλλά χρειάζεται και να βάλεις .php για extension.. και επειδή στο word press μπλέκεται το θέμα έκανα ένα ψαξιματάκι σε ένα local wordpress που έχω εδώ..

Ανάλογα με το theme σου, ψάξε και άνοιξε το αρχείο
/wp-content/themes/<όνομα theme>/header.php

Σε κάποιο σημείο λέει

Κώδικας: Επιλογή όλων

<style type="text/css" media="screen">
	@import url&#40; <?php bloginfo&#40;'stylesheet_url'&#41;; ?> &#41;;
</style>
Μετά από αυτό βάλε

Κώδικας: Επιλογή όλων

<link rel="stylesheet" type="text/css" href="<?php echo get_settings&#40;'siteurl'&#41;; ?>/background_css.php">
Φτιάξε ένα αρχείο με όνομα background_css.php, βάλτο στο root του word press και βάλε για περιεχόμενο

Κώδικας: Επιλογή όλων

<?php

// Make this the relative path to the images, like "../img" or "random/images/".
// If the images are in the same directory, leave it blank.
$folder = '';

// Space seperated list of extensions, you probably won't have to change this.
$exts = 'jpg jpeg png gif';

$files = array&#40;&#41;; $i = -1; // Initialize some variables
if &#40;'' == $folder&#41; $folder = './';

$handle = opendir&#40;$folder&#41;;
$exts = explode&#40;' ', $exts&#41;;
while &#40;false !== &#40;$file = readdir&#40;$handle&#41;&#41;&#41; &#123;
    foreach&#40;$exts as $ext&#41; &#123; // for each extension check the extension
        if &#40;preg_match&#40;'/\.'.$ext.'$/i', $file, $test&#41;&#41; &#123; // faster than ereg, case insensitive
            $files&#91;&#93; = $file; // it's good
            ++$i;
            &#125;
        &#125;
    &#125;
closedir&#40;$handle&#41;; // We're not using it anymore
mt_srand&#40;&#40;double&#41;microtime&#40;&#41;*1000000&#41;; // seed for PHP < 4.2
$rand = mt_rand&#40;0, $i&#41;; // $i was incremented as we went along

?>
body &#123;
  background&#58; url&#40;'<?php echo $folder.$files&#91;$rand&#93;; ?>'&#41; no-repeat;
&#125;
Αν θες τη γνώμη μου όρισε το $folder με absolute path.
Σε περίπτωση που δεν ξέρεις το absolute path του site σου αλλά οι εικόνες είναι πχ στο /backgrounds θα μπορούσες να γράψεις

Κώδικας: Επιλογή όλων

$folder = dirname&#40;__FILE__&#41; . '/backgrounds/';

Άβαταρ μέλους
EkLekTos
WebDev Moderator
Δημοσιεύσεις: 7421
Εγγραφή: 07 Απρ 2005 15:44
Τοποθεσία: Inside the Effects
Επικοινωνία:

Random image

Δημοσίευση από EkLekTos » 28 Απρ 2007 16:30

Σε ευχαριστώ cpulse, θα το δοκιμάσω τώρα.. Το site είναι local ακόμα για τις δοκιμές...
Θα το τεστάρω και θα σου πω, παρόλα αυτά thanks για τον κόπο... ;)
* Apple Technical Support Specialist *
* Apple Sales & Product Professional Certificate since 2011 * Εικόνα
Follow me @Twitter

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Random image

Δημοσίευση από skeftomilos » 28 Απρ 2007 16:48

Μπορεί να γίνει και με JavaScript.

Κώδικας: Επιλογή όλων

<script type="text/javascript">
  var BG_IMAGES = &#91;'induction.jpg', 'production.jpg', 'reduction.jpg'&#93;
  document.body.style.backgroundImage = BG_IMAGES&#91;Math.floor&#40;Math.random&#40;&#41; * BG_IMAGES.length&#41;&#93;
</script>
ή

Κώδικας: Επιλογή όλων

<script type="text/javascript">
  var BG_IMAGES = &#91;'induction.jpg', 'production.jpg', 'reduction.jpg'&#93;
  document.write&#40;'<style type="text/css">body&#123;background-image&#58;url&#40;' + BG_IMAGES&#91;Math.floor&#40;Math.random&#40;&#41; * BG_IMAGES.length&#41;&#93; + '&#41;&#125;<\/style>'&#41;
</script>
Το δεύτερο παράδειγμα είναι πιο flexible αλλά δεν κάνει για XHTML.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
EkLekTos
WebDev Moderator
Δημοσιεύσεις: 7421
Εγγραφή: 07 Απρ 2005 15:44
Τοποθεσία: Inside the Effects
Επικοινωνία:

Random image

Δημοσίευση από EkLekTos » 28 Απρ 2007 17:04

Δεν παίζει ...
Έβαλα στο css αυτό...

Κώδικας: Επιλογή όλων

background&#58;url&#40;'http&#58;//localhost/word/background_css.php'&#41;;
Στο header.php

Κώδικας: Επιλογή όλων

<link rel="stylesheet" type="text/css" href="<?php echo get_settings&#40;'siteurl'&#41;; ?>http&#58;//localhost/word/background_css.php">
και έκανα ένα background_css.php

Κώδικας: Επιλογή όλων

<?php

// Make this the relative path to the images, like "../img" or "random/images/".
// If the images are in the same directory, leave it blank.
$folder = '';

// Space seperated list of extensions, you probably won't have to change this.
$exts = 'jpg jpeg png gif';

$files = array&#40;&#41;; $i = -1; // Initialize some variables
if &#40;'' == $folder&#41; $folder = 'http&#58;//localhost/word/wp-content/themes/gray-gets-green-10/images/headers';

$handle = opendir&#40;$folder&#41;;
$exts = explode&#40;' ', $exts&#41;;
while &#40;false !== &#40;$file = readdir&#40;$handle&#41;&#41;&#41; &#123;
    foreach&#40;$exts as $ext&#41; &#123; // for each extension check the extension
        if &#40;preg_match&#40;'/\.'.$ext.'$/i', $file, $test&#41;&#41; &#123; // faster than ereg, case insensitive
            $files&#91;&#93; = $file; // it's good
            ++$i;
            &#125;
        &#125;
    &#125;
closedir&#40;$handle&#41;; // We're not using it anymore
mt_srand&#40;&#40;double&#41;microtime&#40;&#41;*1000000&#41;; // seed for PHP < 4.2
$rand = mt_rand&#40;0, $i&#41;; // $i was incremented as we went along

?>
body &#123;
  background&#58; url&#40;'<?php echo $folder.$files&#91;$rand&#93;; ?>'&#41; no-repeat;
&#125;
Αλλά δεν μου εμφανίζει καν την εικόνα... :(
* Apple Technical Support Specialist *
* Apple Sales & Product Professional Certificate since 2011 * Εικόνα
Follow me @Twitter

Άβαταρ μέλους
EkLekTos
WebDev Moderator
Δημοσιεύσεις: 7421
Εγγραφή: 07 Απρ 2005 15:44
Τοποθεσία: Inside the Effects
Επικοινωνία:

Random image

Δημοσίευση από EkLekTos » 28 Απρ 2007 17:10

skeftomilos έγραψε:Μπορεί να γίνει και με JavaScript.

Κώδικας: Επιλογή όλων

<script type="text/javascript">
  var BG_IMAGES = &#91;'induction.jpg', 'production.jpg', 'reduction.jpg'&#93;
  document.body.style.backgroundImage = BG_IMAGES&#91;Math.floor&#40;Math.random&#40;&#41; * BG_IMAGES.length&#41;&#93;
</script>
ή

Κώδικας: Επιλογή όλων

<script type="text/javascript">
  var BG_IMAGES = &#91;'induction.jpg', 'production.jpg', 'reduction.jpg'&#93;
  document.write&#40;'<style type="text/css">body&#123;background-image&#58;url&#40;' + BG_IMAGES&#91;Math.floor&#40;Math.random&#40;&#41; * BG_IMAGES.length&#41;&#93; + '&#41;&#125;<\/style>'&#41;
</script>
Το δεύτερο παράδειγμα είναι πιο flexible αλλά δεν κάνει για XHTML.
Ευχαριστώ skeftomilos, χρησιμοποίησα τον πρώτο κώδικα, το έβαλα στο header.php και από το css έβγάλα των κώδικα για την εικόνα, αλλά και πάλι δεν παίζει, δεν μου εμφανίζει καμία...
Έβαλα αυτό...

Κώδικας: Επιλογή όλων

<script type="text/javascript">
  var BG_IMAGES = &#91;'http&#58;//localhost/word/wp-content/themes/gray-gets-green-10/images/headers/top2.png', 'http&#58;//localhost/word/wp-content/themes/gray-gets-green-10/images/headers/top3.png', 'http&#58;//localhost/word/wp-content/themes/gray-gets-green-10/images/headers/top4.png'&#93;
  document.body.style.backgroundImage = BG_IMAGES&#91;Math.floor&#40;Math.random&#40;&#41; * BG_IMAGES.length&#41;&#93;
</script>
* Apple Technical Support Specialist *
* Apple Sales & Product Professional Certificate since 2011 * Εικόνα
Follow me @Twitter

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Random image

Δημοσίευση από cpulse » 28 Απρ 2007 20:23

Έχεις μπλέξει τώρα με τα paths
Το get_settings('siteurl') βγάζει το http://localhost/word .. αν το χρησιμοποιήσεις μη το επαναλάβεις από το .php script.

Όμως μακράν καλύτερος και ποιο απλός τρόπος είναι αυτός του Σκεφτόμυλου. Σου κόβει τον αυτοματισμό, αλλά αν δεν προσθέτεις εικόνες συνεχώς τότε καλύτερα έτσι.

Κώδικας: Επιλογή όλων

<script type="text/javascript">
  var BG_IMAGES = &#91;'top2.png', 'top3.png', 'top4.png'&#93;
  document.body.style.backgroundImage = 'http&#58;//localhost/word/wp-content/themes/gray-gets-green-10/images/headers/' + BG_IMAGES&#91;Math.floor&#40;Math.random&#40;&#41; * BG_IMAGES.length&#41;&#93;
</script>

Άβαταρ μέλους
EkLekTos
WebDev Moderator
Δημοσιεύσεις: 7421
Εγγραφή: 07 Απρ 2005 15:44
Τοποθεσία: Inside the Effects
Επικοινωνία:

Random image

Δημοσίευση από EkLekTos » 28 Απρ 2007 20:34

Αν βάλω το script του skeftomilos πρέπει να βγάλω από το css

Κώδικας: Επιλογή όλων

background&#58;url&#40;'image.jpg'&#41;;
Σωστά?
* Apple Technical Support Specialist *
* Apple Sales & Product Professional Certificate since 2011 * Εικόνα
Follow me @Twitter

Άβαταρ μέλους
EkLekTos
WebDev Moderator
Δημοσιεύσεις: 7421
Εγγραφή: 07 Απρ 2005 15:44
Τοποθεσία: Inside the Effects
Επικοινωνία:

Random image

Δημοσίευση από EkLekTos » 28 Απρ 2007 20:37

Δεν λειτουργεί και πάλι με javascript.... :(
* Apple Technical Support Specialist *
* Apple Sales & Product Professional Certificate since 2011 * Εικόνα
Follow me @Twitter

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Random image

Δημοσίευση από cpulse » 28 Απρ 2007 21:15

Ναι πρέπει να το βγάλεις, και φυσικά το php script πλέον δεν χρειάζεται πουθενά. Αυτό το javascript είναι αυτόνομο.

Αν δεν σου λειτουργεί μπορεί να βρίσκεσαι σε λάθος σημείο. Βάλε ένα alert('test'); να σιγουρέψεις οτι η σελίδα που πειράζεις είναι η σωστή.

Άβαταρ μέλους
EkLekTos
WebDev Moderator
Δημοσιεύσεις: 7421
Εγγραφή: 07 Απρ 2005 15:44
Τοποθεσία: Inside the Effects
Επικοινωνία:

Random image

Δημοσίευση από EkLekTos » 28 Απρ 2007 21:21

Δεν λειτουργεί το script...
Αυτό με το alert που είπες δεν ξέρω πως να το κάνω... Γενικά php δεν ξέρω,,, :oops:
* Apple Technical Support Specialist *
* Apple Sales & Product Professional Certificate since 2011 * Εικόνα
Follow me @Twitter

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες