Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> bardzo prosty skrypt losowania obrazka, małe połączenie JS i PHP
cybertix
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 28.08.2007

Ostrzeżenie: (0%)
-----


Witam

pisze sobie skrypt który wyświetla losowy obrazek


cała strona wygląda tak

Kod
<html>
<head>
    <title> Losowy obrazek </title>
    <script type="text/javascript">
        
        var images = new Array();
        
        <?php
            
            $dir = 'img/';
            $array = Array();
            
            if($dh = opendir($dir))
            {
                $i=0;
                
                while(($pozycja = readdir($dh)) != FALSE)
                    if(!is_dir($pozycja))
                    {
                        echo "images[$i] = $pozycja;\n        ";
                        $array[$i++] = $pozycja;
                    }
                
                closedir($dh);
            }
            echo "\n";

        ?>
        
        function other()
        {
            document.getElementById("img").setAttribute("src", images[Math.floor(Math.random()*images.length)]);
        }
        
    </script>
</head>

<body>

        <input type="button" onClick="other();" value="Losuj inny" />
        <br /><br />
        <?php echo '<img src="'.$dir.$array[rand(0, sizeof($array))].'" id="img" />' ?>
    
</body>
</html>



i chodzi o to że nie wywołuje mi tej funkcji other po kliknięciu w button'a
w firebug'u po kliknięciu występuje błąd other is not defined


co zrobić żeby jak to mój nauczyciel mówi fungowało (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) , żeby ta funkcja była 'widoczna' ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Wykrywacz
post
Post #2





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


A nie wstawia ci w miejscu readdir($dh) zamiast false wartości ""?

Zobacz w manualu

Cytat
Ostrzeżenie

Ta funkcja może zwrócić logiczne FALSE, ale także zwykłą wartość rozpoznawaną jako FALSE, na przykład 0 lub "". Więcej informacji w rozdziale dotyczącym typów logicznych. Użyj operatora === aby sprawdzić wartość i typ zwracany przez tę funkcję.


A druga sprawa czy w ten sposób przez przypadek nie sprawdzasz jeżeli niema ścieżki to echouj?

  1. <?php
  2. if(!is_dir($pozycja))
  3.                    {
  4.                        echo "images[$i] = $pozycja;\n        ";
  5.                        $array[$i++] = $pozycja;
  6.                    }*/
  7. ?>

Ja bym to zroił przez

  1. <?php
  2. if (isset(is_dir($pozycja))){
  3. ....
  4. }
  5. ?>


Wydaje mi się żę to chyba tu może być błąd bo masz wartości a ifem wyświetlasz echo jeżeli by ich nie było (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) (ale to tak szybko przed śniadaniem więc mogę kłamać ;P)

edit. a nawet ja bym zrobił jeszcze inaczej
  1. <?php
  2. if (is_dir($pozacja) == TRUE){
  3. ...
  4. }
  5. ?>


Ten post edytował Wykrywacz 9.01.2009, 12:24:39
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 05:21