ПОЖАЛУЙСТА ПОМОГИТЕ! Изменить PHP

Тема в разделе "PHP", создана пользователем vave, 13 май 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    382
    Симпатии:
    15
    Всем привет!
    я скачал галерею AutoBoss, по функциям она самая подходящая из всех перепробованных галерей, если кто знает подобную и лучше прошу скинуть название!

    Суть в том что я не могу изменить код что бы скрипт работал так как нужно, проблема заключается в открытии картинок, в общем..
    вот скрин:[​IMG]
    нужно сделать что бы при тыкании на большую картинку открывалась огромная, картинка оригинального размера, но это я сделал, проблема в том, при нажатии "View full Size" открывается с первой картинки, тоесть slideshow.php?id=2 и там уже кликаешь < Назад Вперёд >
    и дело в том что это не ID картинки, это лиж ID созданного наименования с картинками!
    Нужно сделать так, что бы при нажатии на большую картинку или "View full Size" открывалась та картинка которая на данный момент в окошке, тоесть средних размеров, и на её кликание открывалась такая-же огромная картинка, а не первая добавленная, надеюсь объяснил более менее понятно, если что спрашивайте!
    вот код:

    PHP:
        <?php
                
    if($row[images]) {
                    
                    if(
    $row[images] > 1) echo "";
                    
                    echo 
    "<img class='none' name='large' src='images/$image_set[0]' alt=''/>";
                    
                     echo 
    "</a><p style='text-align:center;margin:5px 0;padding:0;'><a href=\"javascript:new_window('slideshow.php?id=$_GET[id]', '900', '700');\">View full size</p>";
                    
                    
    // if there is more than one image, display the others as thumbnails
                    
    if($row[images] > 1) {
                        
                        echo 
    "<table border='0' cellpadding='0' cellspacing='0'>";
                        echo 
    "<tr>";
                        
                        
    $n 1;
                        foreach(
    $image_set as $image) {
                        
                            echo 
    "<td style='padding-top:10px;' width='130' valign='top'>";
                            echo 
    "<a href=\"javascript:swap('large', '$image');\"><img class='none' src='thumbs/$image' alt=''/></a>";
                            echo 
    "</td>";
                            
                            if(!(
    $n 3) && $n count($image_set)) echo "</tr><tr>";
                            
    $n++;
                        }
                        
                        echo 
    "</tr>";
                        echo 
    "</table>";
                        
                                    }
                    
                } else {
                
                    echo 
    "<img src='common/no-photo-large.jpg' alt=''/>";
                    
                }
                
    ?>
            </font>
            </td>
            
            <td width='20'><div style='width:20px;'></div></td>
            
            <td width='270' valign='top'>
                <table class='info' width='270' border='0' cellpadding='0' cellspacing='0' id="table40">
                    <?php
                    
                    
    // general information
                    
    echo "<tr><td class='title' colspan='2' style='background-color: #5b4f4f'>";
                    if(
    $row[model]) echo $row[model]." ";
                    echo 
    "$row[make]</td></tr>";
                    if(
    $row[cond]) echo "<tr><td>ID:</td><td>$row[cond]</td></tr>";
                    if(
    $row[engine]) echo "<tr><td>Year:</td><td>$row[model_year]</td></tr>";
                    
                    echo 
    "</td></tr>";
                    


                    if(
    $row[engine]) echo "<tr><td>Paint:</td><td>$row[engine]</td></tr>";


                    
                    if(
    $row[ebay_url]) echo "";
                    elseif(
    $row[exterior])    echo "<tr><b><td><b>Price:</b></td><td><b>".($row[exterior])."</b></td></tr>";
                    elseif(
    $row[price_alt]) echo "<tr><td>Price:</td><td>$row[price_alt]</td></tr>";
                    else echo 
    "<tr><td>Price:</td><td>Call for Price</td></tr>";
                    if(
    $row[sale]) echo "<tr><td>Sale Price:</td><td><span class='success'>".$conf[currency].number_format($row[sale])."</span></td></tr>";
                    
                    
    // dealership information
                    
    if($conf[show_dealer]) {
                        
                        echo 
    "<tr><td colspan='2'><hr/></td></tr>";
                        
            echo 
    "<tr><td colspan='3'>".nl2br($row[description])."</td></tr>";
                        
                        if(
    $location[address]) {
                            echo 
    "<tr>";
                            echo 
    "<td class='label'>Address:</td>";
                            echo 
    "<td>";
                            echo 
    $location[address]."<br/>";
                            if(
    $location[address2]) echo $location[address2]."<br/>";
                            if(
    $location[city]) echo $location[city];
                            if(
    $location[city] && $location[state]) echo ", ";
                            if(
    $location[state]) echo $location[state];
                            if(
    $location[city] || $location[state]) echo "<br/>";
                            if(
    $location[zip]) echo $location[zip]."<br/>";
                            if(
    $location[country]) echo $location[country];
                            echo 
    "</td>";
                            echo 
    "</tr>";
                        }
                    }
                    
                    
    // salesperson information
                    
    if($user[contact]) {
                        
                
                    }
                    

                    
    ?>
    думаю я правильный кусок кода выбрал, если нужно я могу выложить весь скрипт, хотя он есть на форуме.
    Кто поможет буду очень признателен!!!:thenks:
     
  2. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    покажи функцию javascript swap(). Примерная схема действий такая: там происходит замена большой картинки на одну из маленьких. Вот там и надо бы заменить id в slideshow.php?id=... на новый. Например, в javascript завести переменную CurId, инициализировать ее значением $_GET[id], в swap() менять на новое значение, а ссылку на гигантсткую картинку сделать так:

    Код:
    javascript:new_window('slideshow.php?id='+CurId, '900', '700');
     
  3. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    382
    Симпатии:
    15
  4. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    Стало понятнее, уточняю алгоритм.
    Параметр id=$_GET[id], передаваемый в slideshow.php, сохраняем. Это не номер картинки, которую надо показать в отдельном окне, а группа картинок. Из этой группы картинок сначала показывается всегда первая. В окне можно перейти на следующую/предыдущую или показать в цикле, ведь передана группа картинок. Чтобы slideshow.php показывал не первую, а текущую картинку, надо дополнительно передать в скрипт название этой картинки:

    Код:
    javascript:new_window('slideshow.php?id=$_GET[id]'+'&begpic='+document[target].src, '900', '700');
    Мы ввели новый параметр begpic, но скрипт slideshow.php еще не понимает этот параметр. Теперь надо смотреть этот скрипт и добавлять в него эту функциональность.
     
  5. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    382
    Симпатии:
    15
    Вот код slideshow.php

    PHP:
    <script type='text/javascript'>

    var photos  = new Array(<?php echo "'".implode("','"$image_set)."'"?>);
    var start   = 0; // array index of first slide
    var end     = <?php echo $row[images]-1?>; // array index of last slide
    var current = start;
    var doplay  = true; // do not play show automatically

    // skip to first slide
    function first() {
        current = 0;
        change();
    }

    // advance to next slide
    function previous() {
        current -= 1;
        if(current < start) current = end; // skip to last slide
        change();
    }

    // go back to previous slide
    function next() {
        current += 1;
        if(current > end) current = start; // skip to first slide
        change();
    }

    // skip to last slide
    function last() {
        current = end;
        change();
    }

    // change slide according to value of current
    function change() {
        document.photo.src = 'enlarge/' + photos[current];
    }

    // play automatic slideshow
    function play() {
        if(doplay == true) {
            next();
            setTimeout(play, 2500); // call play() in 2.5 seconds
        }
    }

    // pause slideshow
    function pause() {
        doplay = false;
    }

    </script>
    </head>

    <body>

    <div id='container'>
        
        <?php require 'modules/module-slideshow.php'?>
    как сюда вставить эту функцию?:thenks:
     
  6. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    патч для AutoBoss version 3
    название: slideshow с текущей картинки
    версия патча: 1.0


    1. Сохранить копии всех файлов, которые должны быть модифицированы:
    /show.php
    /modules/module-show.php
    /modules/module-initialize.php
    /modules/module-slideshow.php
    /slideshow.php

    2. в /show.php
    после функции swap добавляем переменную picnum и функцию swap2 :

    Код:
    function swap(target, fname) {
            document[target].src = "images/" + fname;
    }
    [B]var picnum = 0;
    function swap2(target, fname, num) {
            document[target].src = "images/" + fname;
            picnum = num;
    }[/B]

    3. в /modules/module-show.php

    3.1. строку:

    Код:
    if($row[images] > 1) echo "<a href=\"javascript:new_window('slideshow.php?id=$_GET[id]', '700', '550');\">";
    меняем на строку:

    Код:
    [B]if($row[images] > 1) echo "<a href=\"javascript:new_window('slideshow.php?id=$_GET[id]'+'&picnum='+picnum, '700', '550');\">";[/B]
    3.2. строку:

    Код:
    echo "<a href=\"javascript:swap('large', '$image');\"><img class='none' src='thumbs/$image' alt=''/></a>";
    меняем на строку:

    Код:
    [B]echo "<a href=\"javascript:swap2('large', '$image'," . strval($n-1) . ");\"><img class='none' src='thumbs/$image' alt=''/></a>";[/B]

    4. в /modules/module-initialize.php

    после строки:

    Код:
    if($_POST[submit]) $_GET[id] = $_POST[id];
    вставляем строку:

    Код:
    [B]if($_POST[submit]) $picnum = $_POST[picnum]; else $picnum = $_GET[picnum];[/B]

    5. в /modules/module-slideshow.php

    строку:

    Код:
    <img name='photo' src='enlarge/<?php echo $image_set[0]; ?>' alt=''/>
    заменить на:

    Код:
    [B]<img name='photo' src='enlarge/<?php echo $image_set[$picnum]; ?>' alt=''/>[/B]

    6. в /slideshow.php

    строку:

    Код:
    var current = start;
    заменить на:

    Код:
    [B]var current = <?php echo intval($picnum); ?>;[/B]
     
    vave нравится это.
Статус темы:
Закрыта.