JavaScript &

1 Cevap php

Ben bir CSV dosyası, 2 sütun Adı & var Görüntü,

Ben bir otomatik tamamlama arama alanına isimlerin listesini okumak ve görüntülemek için Javascript / PHP kullanıyorum.

/ / -> Bu

Kullanıcı bir arama gerçekleştirdiğinde, onlar metin alanına bir şeyler yazın, otomatik tamamlama kodu ardından, maçı kontrol ederken Sorgu, onlar ara, yükleme simgesi birkaç saniye için gösterilen tıklayın orada eşleşen mevcut tüm Adları ile aşağı düşer sonuç (ana # searchbox altında, sonucu göstermek için eylem aşağı slayt kullanmak için gidiyordu) jQuery kullanarak kullanıcıya gösterilir

Ben dizi değeri maç ve ad değeri için ilgili görüntüyü geri getirmek için arama dan bilgi almak bir sorun yaşıyorum .. ben gereken tüm bu adla prosedürlerdir ilgili görüntüyü geri getirmek için arama alanı için değer .. . ve sonuç div kullanıcıya görüntü ve başlığını göstermek ...

Aşağıdaki gibi kod şimdiye kadar ..

Csv dosyasını okumak ve dizi oluşturmak / / php

<?php
$maxlinelength = 1000;
$fh = fopen('tartans.csv', 'r');
$firstline = fgetcsv($fh, $maxlinelength);
$cols = count($firstline);

$row = 0;
$inventory = array();

    while ( ($nextline = fgetcsv($fh, $maxlinelength)) !== FALSE )
    {
        for ( $i = 0; $i < $cols; ++$i )
                    {
       $inventory[$firstline[$i]][$row] = $nextline[$i];
    }
    ++$row;
}
fclose($fh);
?>

/ / Javascript & php;

Include the Names in the Auto complete script this generates the list of names from the csv, separated by commas, then using the javascript split() function it loads all the names for the auto complete to function..

<script type="text/javascript">
$(document).ready(function(){
   var data = '<?php foreach( $inventory['NAME'] as $key => $value){
                          echo $value.",";
                 }?>'.split(",");
   $("#s").autocomplete(data);
})
</script>

/ / Form gönderme işlemek ve sonuçları döndürmek için jquery

<script type="text/javascript">
$(document).ready(function() {  

    $('#loader').hide();
    $('#tartanResults').hide();

    $('#submit').click(function() {
    $.ajax({
        url: '/select_tartan.php', // current page
        beforeSend: function() { 
                   $('#loader').show(); 
                },
                complete: function() { 
           $('#loader').hide();
           $('#tartanResults').show();
        }
    });
        return false;
   });// submit
});// doc ready
</srcipt>

şimdi bu, dizide yüklenen belirli Adı eşleşen anahtar değerini döndürmek, ve görüntü ile maç çalışıyorum im sorun yaşıyorsanız were

Print_r ($ envanter) kullanılarak aşağıdaki gibi bir dizidir; / / Olsa onun çok daha büyük,

Array
(
    [NAME] => Array
        (
            [0] => Abercrombie Ancient
            [1] => Abercrombie Modern
            [2] => Aberdeen Tartan Modern
            [3] => Agnew Ancient
            [4] => Allison Ancient
            [5] => Anderson Ancient
            [6] => Anderson Modern
            [7] => Anderson Weathered
            [8] => Angus Ancient
            [9] => Angus Modern
)

    [IMAGE] => Array
        (
            [0] => images/rare/abc_ar.jpg
            [1] => images/rare/abc_mr.jpg
            [2] => images/rare/abd_mr.jpg
            [3] => images/rare/agw_ar.jpg
            [4] => images/rare/all_ar.jpg
            [5] => images/rare/and_ar.jpg
            [6] => images/rare/and_mr.jpg
            [7] => images/rare/and_wr.jpg
            [8] => images/rare/ang_ar.jpg
            [9] => images/rare/ang_mr.jpg
    )
)

Çok beğenmek ve Resim: i göstermek için gereken tüm döndü Name is

<?php 
   echo $inventory['NAME'][8];
   echo $inventory['IMAGE'][8];
?>

Bu i ilk düşünüldüğünden daha zor kanıtlıyor ..

herhangi bir yardım beyler çok takdir ..

Marty

Sayfa için / / Temel Html

<!-- SEARCH FORM / LOADER-->
<div id="searchbox">
<h3>FIND YOUR TARTAN <small>press enter to search.</small></h3>
<form id="tartanSearch" action="select_tartan.php" method="get">
    <div class="search">
        <input type="text" size="70" class="inputbox" alt="Search" id="s" name="search" />
        <input value="Search" id="submit" type="submit" />
    </div>
</form>
</div>
<div id="loader"><img src="images/indicator.gif" width="16" height="16" /></div>

/ / Nerede Sonuçlar yüklenir (umarım animasyon aşağı kaydırın)

<!-- RESULTS -->
<div id="tartanResults">
  <h3><!-- WERE THE NAME LOADS --></h3>
  <div class="tartan_img"><!-- WERE THE IMAGE LOADS --></div>
  <div class="tartan_text">
    <ul style="list-style:none;">
      <li>Description text here</li>
      <li>With more text here aswell</li>
      <li>We can have some here also</li>
    </ul>
  </div>
</div>

1 Cevap

Senin sorunun çok daha fazla cevaplar vardır eminim, ama bu şimdiye kadar ne yazdı dayalı basit biridir:

  1. SADECE arama sonuçlarını çıkış için yeni bir dosya oluşturun. Tabii ki işlevi sarılarak diziye yükleme CSV kodunu paylaşabilir ve her iki dosya (ana bir ve yeni bir) içermelidir
  2. Ana sayfa sonuçları (id = "tartanResults") boş ile div olmalıdır.
  3. Ajax çağrısı, bu div için arama sonuçları yükleyeceğini
  4. Sizin yeni bir eylem (akım DIV CONTANTS bir form) arama sonuçları döndürmesi gerekir

İşte bazı kod örnekleri vardır

New look of the results div on main page

<!-- RESULTS -->
<div id="tartanResults">
</div>

File with utility function (utility.php örneğin)

<?php
function loadCSVContents($fileName)
{
    $maxlinelength = 1000;
    $fh = fopen($fileName, 'r');
    $firstline = fgetcsv($fh, $maxlinelength);
    $cols = count($firstline);

    $row = 0;
    $inventory = array();

    while ( ($nextline = fgetcsv($fh, $maxlinelength)) !== FALSE )
    {
        for ( $i = 0; $i < $cols; ++$i )
           $inventory[$firstline[$i]][$row] = $nextline[$i];
        ++$row;
    }
    return $inventory;
    fclose($fh);
}
?>

File with new action (tartansearch.php örneğin)

<?php

include('utility.php');
$inventory = loadCSVContents('tartans.csv');

$search = $_POST['search'];
$resultName = '';
$resultImage = '';
if ($search)
{
    $arr_key = array_search($search, $inventory['NAME']);
    $resultName = $inventory['NAME'][$arr_key];
    $resultImage = $inventory['IMAGE'][$arr_key];
}
?>
<h3><?php echo $resultName?></h3>
<div class="tartan_img"><img src="<?php echo $resultImage?>" /></div>
<div class="tartan_text">
  <ul style="list-style:none;">
    <li>Description text here</li>
    <li>With more text here aswell</li>
    <li>We can have some here also</li>
  </ul>
</div>

AJAX call

$.ajax({
    url: '/tartansearch.php', // search page
    beforeSend: function() { 
       $('#loader').show(); 
    },
    complete: function() { 
        $('#loader').hide();
        $('#tartanResults').show();
    },
    success: function(data) {
        $('#tartanResults').html(data);
    }
});

Bu sadece bir giriş noktasıdır. Örneğin, muhtemelen aslında endeksi bulmak için array_search daha sofistike işlevini kullanmak isteyeceksiniz. Hata raporlama dikkat etmelisiniz. Tüm temel çoğu, sen (eğer mümkünse) CSV dosyası ama veritabanını kullanmanız gerekir.

Ben de bu kodu herhangi bir hata yapmamış olduğunu garanti edemez. Ama bu işe düşünüyorum.