2014-09-08 4 views
0

У меня есть следующий код, как показано ниже.
код работает, но нижняя часть кажется крайне неэффективна для меня, так что я был интересно, если кто имеет какие-либо идеи, как я могу переписать код так, что его не требуется, чтобы создатьНеэффективный код php/javascript?

baseUrl + '<?php echo $urls[0]; ?>', 

для каждой строки?

(в $ URLs содержат только текст, как таким образом: что-то-больше (так что нет Http: и т.д.))

<?php 
    include("includes/connect.php"); 
    $sql = mysql_query("SELECT url FROM urls ORDER BY listorder ASC"); 

    $urls = array(); 

    while ($rw = mysql_fetch_array($sql)) { 
     $urls[] = $rw['url']; 
    } 
?> 

<script> 
var baseUrl = '/'; 

var mySwipe = $('#pageBody').responsiveSwipe({ 
    edition: [ 
     baseUrl, 
     baseUrl + '<?php echo $urls[0]; ?>', 
     baseUrl + '<?php echo $urls[1]; ?>', 
     baseUrl + '<?php echo $urls[2]; ?>', 
     baseUrl + '<?php echo $urls[3]; ?>', 
     baseUrl + '<?php echo $urls[4]; ?>', 
     baseUrl + '<?php echo $urls[5]; ?>', 
     baseUrl + '<?php echo $urls[6]; ?>', 
     baseUrl + '<?php echo $urls[7]; ?>', 
     baseUrl + '<?php echo $urls[8]; ?>', 
     baseUrl + '<?php echo $urls[9]; ?>', 
     baseUrl + '<?php echo $urls[10]; ?>' 
    ], 
    widthGuess: 0, 
    emulator: window.location.hash.match(/emulator/) 
}); 

$(document).ready(function(){ 
    $(document).on('click', '.next', function (e) { 
     e.preventDefault(); 
     mySwipe.gotoNext(); 
    }); 
    $(document).on('click', '.prev', function (e) { 
     e.preventDefault(); 
     mySwipe.gotoPrev(); 
    }); 
}) 
</script> 
+4

Там есть отдельный сайт для этих типов вопросов, более в http://codereview.stackexchange.com /. Вероятно, это должно быть перемещено. –

+2

использовать PDO вместо mysql_ * – user3896501

+0

Что неэффективно? Если ваш массив должен иметь baseurl, тогда он должен иметь его. вы хотите что-то вроде факторизации? – Sekai

ответ

1

Вы можете использовать json_encode после создания массива (в том числе BaseUrl) сервер с язь:

<?php 
    ... 

    $baseUrl = '/'; 

    $urls = array($baseUrl); 

    while ($rw = mysql_fetch_array($sql)) { 
     $urls[] = $baseUrl.$rw['url']; 
    } 
?> 

<script> 
var mySwipe = $('#pageBody').responsiveSwipe({ 
    edition: <?php echo json_encode($urls); ?>, 
    widthGuess: 0, 
    emulator: window.location.hash.match(/emulator/) 
}); 

... 
</script> 
+1

Это работает как шарм , thx миллион! – Joost

0

Вы можете сделать что-то подобное в вашем PHP:

$java_urls = ''; 
foreach ($urls as $url) 
{ 
$java_urls .= "'/".$url."',"; 
} 
// remove last , from the string 
if ($java_urls!='') { $java_urls = substr($java_urls, 0, -1); } 

Теперь в вашем JavaScript:

var mySwipe = $('#pageBody').responsiveSwipe({ 
    edition: [ 
     baseUrl, 
     <?php echo $java_urls;?> 
    ], 
    widthGuess: 0, 
    emulator: window.location.hash.match(/emulator/) 
}); 
+0

Возможно, вы захотите обернуть' $ url' в кавычки. – Cerbrus

+0

@Cerbrus. Вы правы. Я отредактировал ответ – andrew

0

Это:

var mySwipe = $('#pageBody').responsiveSwipe({ 
    edition: [ 
     baseUrl, 
     baseUrl + '<?php echo $urls[0]; ?>', 
     baseUrl + '<?php echo $urls[1]; ?>', 
     baseUrl + '<?php echo $urls[2]; ?>', 
     baseUrl + '<?php echo $urls[3]; ?>', 
     baseUrl + '<?php echo $urls[4]; ?>', 
     baseUrl + '<?php echo $urls[5]; ?>', 
     baseUrl + '<?php echo $urls[6]; ?>', 
     baseUrl + '<?php echo $urls[7]; ?>', 
     baseUrl + '<?php echo $urls[8]; ?>', 
     baseUrl + '<?php echo $urls[9]; ?>', 
     baseUrl + '<?php echo $urls[10]; ?>' 
    ], 

Может быть что-то вроде

var mySwipe = $('#pageBody').responsiveSwipe({ 
    edition: [ 
    <?php 
    foreach($urls as $url) { 
     echo '/'.$url.','; 
    } 
    ?> 
    ] 
})