За последние 24 часа нас посетили 17417 программистов и 1711 роботов. Сейчас ищет 1561 программист ...

повторяются значения в select

Тема в разделе "Сделайте за меня", создана пользователем hust0, 24 апр 2016.

  1. hust0

    hust0 Активный пользователь

    С нами с:
    6 июл 2013
    Сообщения:
    321
    Симпатии:
    8
    белый лист :)
     
  2. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Ну проведи отладку, создается ли массив, записываются ли в него данные
     
  3. hust0

    hust0 Активный пользователь

    С нами с:
    6 июл 2013
    Сообщения:
    321
    Симпатии:
    8
    из-за
    PHP:
    1. $data = [];
    не работает скрипт
     
  4. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Понятно. Ты, небось, что еще и на денвере сидишь?
    Замени на
    $data = array();
     
  5. hust0

    hust0 Активный пользователь

    С нами с:
    6 июл 2013
    Сообщения:
    321
    Симпатии:
    8
    Думаете я не заменил на array? :) но выводит только одно значение.....
    --- Добавлено ---
    ну вы меня совсем за дурака держите :p это я тоже поправил, но не могу понять почему одно значение выводит...
     
  6. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    PHP:
    1. $f = fopen("https://site.com/file.csv", "r");
    2. print '<select class="classic" style="width:160px;" name="city" id="myselect">';
    3. $data = [];
    4.  
    5. for($i=0; $datssa=fgetcsv($f,1000,";"); $i++) {
    6. $ifIDa = $datssa[1];
    7.   if (preg_match("/".preg_quote($ido)."/i",$ifIDa)) {
    8.       $data[] = $datssa;
    9.   }
    10. }
    11.  
    12. foreach ($data as $row) {
    13.      print '<option value=' . $row[2] . ' tirzniecibascena=' . $row[14] . ' cena=' . $row[12] . '>' . $row[3] . '</option>';
    14. }
    15. print '</select>';
     
    #31 mr.akv, 24 апр 2016
    Последнее редактирование модератором: 24 апр 2016
  7. hust0

    hust0 Активный пользователь

    С нами с:
    6 июл 2013
    Сообщения:
    321
    Симпатии:
    8
    ладно спасибо большое за помощь, буду разбираться )
     
  8. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    А, забыл, перед foreach строку
    $data = array_unique($data);
     
  9. hust0

    hust0 Активный пользователь

    С нами с:
    6 июл 2013
    Сообщения:
    321
    Симпатии:
    8
    Все равно не работает, ну ладно... я сейчас переберу весь код, может вовсе и ошибка в другом, потом подставлю ваш код. Если интересно, потом здесь отпишусь ;)
    --- Добавлено ---
    а можно как сто сделать break пред. if
    а то получается brake все if завершает
    К примеру
    PHP:
    1. if ($lalal){
    2. код
    3. break;
    4. }
    5.  
    6. if($dada){
    7. код
    8. }
     
  10. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    PHP:
    1. $f = fopen("https://www.example.com/stock/EUR-lat-21.csv", "r");
    2. print '<select class="classic" style="width:160px;" name="city" id="myselect">';
    3. $data = [];
    4.  
    5. for($i=0; $datssa=fgetcsv($f,1000,";"); $i++) {
    6. $ifIDa = $datssa[1];
    7.   if (preg_match("/".preg_quote($ido)."/i",$ifIDa)) {
    8.       $data[] = $datssa;
    9.   }
    10. }
    11. function unique_multidim_array($array, $key) {
    12.     $temp_array = array();
    13.     $i = 0;
    14.     $key_array = array();
    15.  
    16.     foreach($array as $val) {
    17.         if (!in_array($val[$key], $key_array)) {
    18.             $key_array[$i] = $val[$key];
    19.             $temp_array[$i] = $val;
    20.         }
    21.         $i++;
    22.     }
    23.     return $temp_array;
    24. }
    25.  
    26. $data = unique_multidim_array($data, 3);
    27.  
    28. foreach ($data as $row) {
    29.      print '<option value=' . $row[2] . ' tirzniecibascena=' . $row[14] . ' cena=' . $row[12] . '>' . $row[3] . '</option>';
    30. }
    31. print '</select>';
    Так хотел?

    И не понял твоего последнего вопроса.
    --- Добавлено ---
    А, понял. Используй не break, а continue
     
    #35 mr.akv, 24 апр 2016
    Последнее редактирование модератором: 24 апр 2016
  11. hust0

    hust0 Активный пользователь

    С нами с:
    6 июл 2013
    Сообщения:
    321
    Симпатии:
    8
    Вот код который работает, но фишка в том что там в <select> выводит остальные строчки т.е. размер 15, 15.5 (они есть в файле csv), а 16 размер по писку первый и в select почему то не показывает, хотя в описании 16-ого размера...

    PHP:
    1. <?
    2.  
    3. include("first.php");
    4.  
    5. $ido = str_replace(" ", "+", $_GET['id']);
    6.     for($i=0; $datsa=fgetcsv($f,1000,";"); $i++) {
    7. $ifID = $datsa[1];
    8.   if (preg_match("/".preg_quote($ido)."/i",$ifID)) {
    9.       ?>
    10.        <div class="infoze">
    11.     <?
    12.     echo "<img class='imgstylein' src='".$datsa[21]."'></img>";
    13.     if($datsa[22]){echo "<div class='clearzx'></div><br>
    14.    <img class='imgstylein' src='".$datsa[22]."' />";}else{}
    15.  
    16.     ?>
    17.          </div>
    18.        
    19.          <div class="infoze2">
    20.          <center>
    21.          <table class="tableinerx">
    22.          <tr>
    23.          <td style="width:200px;">Kods:</td><td><?=$datsa[1]?></td>
    24.          </tr>
    25.        
    26.          <tr>
    27.          <td style="width:200px;">Metals:</td><td><?=$datsa[5]?></td>
    28.          </tr>
    29.          <tr>
    30.          <td style="width:200px;">Prove:</td><td><?=$datsa[6]?></td>
    31.          </tr>
    32.          <?if (preg_match("/Ar akmeniem/i", $datsa[10]) and preg_match("/Zelta gredzens/i", $datsa[11])) {?>
    33.           <tr>
    34.          <td style="width:200px;">Ieliktni(s):</td><td><font color="#7f8082"><?=$datsa[4]?></font></td>
    35.          </tr>
    36.          <?}
    37.          if (preg_match("/Viriesu/i", $datsa[10]) and preg_match("/Viriesu zelta gredzens/i", $datsa[11])) {
    38.         ?>  
    39.          <tr>
    40.          <td style="width:200px;">Ieliktni(s):</td><td><font color="#7f8082"><?=$datsa[4]?></font></td>
    41.          </tr>
    42.          <?}
    43.           if (preg_match("/Laulibu/i", $datsa[10]) and preg_match("/Laulibu zelta gredzens/i", $datsa[11])) {
    44.          ?>
    45.           <tr>
    46.          <td style="width:200px;">Ieliktni(s):</td><td><font color="#7f8082"><?=$datsa[18]?></font></td>
    47.          </tr>
    48.           <?}
    49.             if (preg_match("/Bracciali kolekcija/i", $datsa[10]) and preg_match("/Zelta gredzens/i", $datsa[11])) {
    50.           ?>
    51.           <tr>
    52.          <td style="width:200px;">Ieliktni(s):</td><td><font color="#7f8082"><?=$datsa[4]?></font></td>
    53.          </tr>
    54.             <?}?>
    55.           <tr>
    56.          <td style="width:200px;">Svars: </td><td><span id="mydiv"><?=$datsa[2]?> gr.</span></td>
    57.          </tr>
    58.          <tr>
    59.          <td style="width:200px;">Razots:</td><td>
    60.            <?if (preg_match("/Bracciali kolekcija/i", $datsa[10]) and preg_match("/Zelta gredzens/i", $datsa[11])) {?>
    61.          <a style="text-decoration:none;" target="_blank" href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#IT"><font color="#6f6f6f">IT</font></a>
    62.            <?}else{?>
    63.                     <a style="text-decoration:none;" target="_blank" href="http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#TR"><font color="#6f6f6f">TR</font></a>
    64.  
    65.            <?}?>
    66.          </td>
    67.          </tr>
    68.          <tr>
    69.          <td style="width:200px;">Noliktava:</td><td> <?if ($datsa[7]< 1){echo "<font color='#ad3535'>".$datsa[7]."</font>";}else{echo "<font color='#68ab27'>".$datsa[7]."</font>";}?></td>
    70.          </tr>
    71.          </table>
    72.          <div class="clearzx "></div>
    73.          <br/>
    74.           <table class="tableinerx">
    75.          <tr>
    76.          <td style="width:200px;">Tirdzniecibas cena:</td><td><strike><h4><font color='#a9a8a8'><span id="mydiv3"><?=$datsa[14]?> €</span></font></h4></strike></td>
    77.          </tr>
    78.          <tr>
    79.          <td style="width:200px;">cena:</td><td><font color="#b22222"><h4><span id="mydiv2"><?=$datsa[12]?> €</span> </h4></font></td>
    80.          </tr>
    81.      
    82.           <tr>  
    83.          <td style="width:200px;border:none;">Izmera izvelе:</td>
    84.          <td style="border:none;">
    85.   <?}
    86.  
    87.     if (preg_match("/".preg_quote($ido)."/i",$ifID))  {
    88.      
    89.         print '<select class="classic" style="width:160px;" name="city" id="myselect">';
    90. $data = array();
    91.  
    92. for($i=0; $datssa=fgetcsv($f,1000,";"); $i++) {
    93. $ifIDa = $datssa[1];
    94.   if (preg_match("/".preg_quote($ido)."/i",$ifIDa)) {
    95.       $data[] = $datssa;
    96.   }
    97. }
    98. function unique_multidim_array($array, $key) {
    99.     $temp_array = array();
    100.     $i = 0;
    101.     $key_array = array();
    102.  
    103.     foreach($array as $val) {
    104.         if (!in_array($val[$key], $key_array)) {
    105.             $key_array[$i] = $val[$key];
    106.             $temp_array[$i] = $val;
    107.         }
    108.         $i++;
    109.     }
    110.     return $temp_array;
    111. }
    112.  
    113. $data = unique_multidim_array($data, 3);
    114.  
    115. foreach ($data as $row) {
    116.      print '<option value=' . $row[2] . ' tirzniecibascena=' . $row[14] . ' cena=' . $row[12] . '>' . $row[3] . '</option>';
    117. }
    118. print '</select>';
    119.      
    120.     }
    121.  
    122. }
    123.      
    124.      
    125.        ?>
    126.        </td>
    127.        </tr>
    128.        </table>
    129.         <script type="text/javascript">
    130.  
    131.     document.getElementById("myselect").addEventListener("change", function(){
    132.  
    133.       document.getElementById('mydiv').innerHTML = this.options [this.selectedIndex].getAttribute ("value")+" .gr";  
    134.       document.getElementById('mydiv2').innerHTML = this.options [this.selectedIndex].getAttribute ("cena")+" €";
    135.       document.getElementById('mydiv3').innerHTML = this.options [this.selectedIndex].getAttribute ("tirzniecibascena")+" €";
    136.  
    137.     });
    138.  
    139. </script>
     
  12. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Так, ладно, я пока сдаюсь. Планшет плохой инструмент для кодинга.
    Но я в тебя верю :)
     
  13. hust0

    hust0 Активный пользователь

    С нами с:
    6 июл 2013
    Сообщения:
    321
    Симпатии:
    8
    Хорошо) но если будет возможность сесть за комп. я буду рад :)
    --- Добавлено ---
    что то не получается вывести первое значение в select :/
    --- Добавлено ---
    Решил проблему таким способом.

    PHP:
    1. foreach ($data as $rowa) {
    2.  
    3. тут html код
    4.  
    5. break;
    6. }
    --- Добавлено ---
    p.s. если интересно могу выложить полный код :)
    --- Добавлено ---
    Хотел еще спросить, вот в <select> допустим выводится
    18
    16
    19

    Как можно сделать, чтобы выводилось по порядку - 16, 18, 19?
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    завардампи $data сюда плс. Есть два других способа сделать это, кроме как мучать цикл нечитаемым глазом брейком.
     
  15. hust0

    hust0 Активный пользователь

    С нами с:
    6 июл 2013
    Сообщения:
    321
    Симпатии:
    8
    Раскажи каким способом, а то заинтриговал :)
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    просто сделай вардамп и скопируй из браузера нам сюда то, что он покажет.
     
  17. hust0

    hust0 Активный пользователь

    С нами с:
    6 июл 2013
    Сообщения:
    321
    Симпатии:
    8
    PHP:
    1. array(1) { [0]=> array(25) { [0]=> string(25) "5211263(RW)/2.72//585(RW)" [1]=> string(11) "5211263(RW)" [2]=> string(4) "2.72" [3]=> string(0) "" [4]=> string(0) "" [5]=> string(23) "Sarkanais/Baltais zelts" [6]=> string(10) "585°(14K)" [7]=> string(1) "3" [8]=> string(4) "gold" [9]=> string(8) "Auskari " [10]=> string(22) "Ar "angļu" slēdzēju" [11]=> string(36) "Zelta auskari ar "angļu" slēdzēju" [12]=> string(6) "145.01" [13]=> string(2) "21" [14]=> string(6) "175.46" [15]=> string(5) "85.30" [16]=> string(1) "0" [17]=> string(5) "85.30" [18]=> string(0) "" [19]=> string(3) "1.6" [20]=> string(0) "" [21]=> string(52) "http://site.com/5211263(RW).jpg" [22]=> string(0) "" [23]=> string(0) "" [24]=> string(0) "" } }
     
  18. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @hust0, выложи форматированый вар дамп
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    <pre>
    --- Добавлено ---
    а лучше xdebug поставить
     
  20. hust0

    hust0 Активный пользователь

    С нами с:
    6 июл 2013
    Сообщения:
    321
    Симпатии:
    8
    Igordata, на примере показать можете?
    Mahmuzar, я уже выложил...
     
  21. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    блин. в соседней теме же уже разобрались вроде как это сделать. и примеры были и функции.
    что тут обсуждать?
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да в одну строку не охота читать никому. поставь xdebug
     
  23. hust0

    hust0 Активный пользователь

    С нами с:
    6 июл 2013
    Сообщения:
    321
    Симпатии:
    8
    runcore, igordata хочет улучшить :)

    PHP:
    1. array(25) {
    2.   [0]=>
    3.   string(30) "5103943_CZ(RW)/1.94/16/585(RW)"
    4.   [1]=>
    5.   string(14) "5103943_CZ(RW)"
    6.   [2]=>
    7.   string(4) "1.94"
    8.   [3]=>
    9.   string(2) "16"
    10.   [4]=>
    11.   string(8) "Cirkoni "
    12.   [5]=>
    13.   string(23) "Sarkanais/Baltais zelts"
    14.   [6]=>
    15.   string(10) "585°(14K)"
    16.   [7]=>
    17.   string(1) "2"
    18.   [8]=>
    19.   string(4) "gold"
    20.   [9]=>
    21.   string(8) "Gredzeni"
    22.   [10]=>
    23.   string(12) "Ar akmeņiem"
    24.   [11]=>
    25.   string(14) "Zelta gredzens"
    26.   [12]=>
    27.   string(6) "103.11"
    28.   [13]=>
    29.   string(2) "21"
    30.   [14]=>
    31.   string(6) "124.75"
    32.   [15]=>
    33.   string(5) "60.65"
    34.   [16]=>
    35.   string(1) "0"
    36.   [17]=>
    37.   string(5) "60.65"
    38.   [18]=>
    39.   string(0) ""
    40.   [19]=>
    41.   string(1) "0"
    42.   [20]=>
    43.   string(0) ""
    44.   [21]=>
    45.   string(55) "http://site.com/foto/rest/5103943_CZ(RW).jpg"
    46.   [22]=>
    47.   string(57) "http://site.com/foto/2foto/a5103943_CZ(RW).jpg"
    48.   [23]=>
    49.   string(0) ""
    50.   [24]=>
    51.   string(0) ""
    52. }
     
    #48 hust0, 27 апр 2016
    Последнее редактирование модератором: 27 апр 2016
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    улучшить человека
    --- Добавлено ---
    А нафига тебе вообще скрывать ссылки?
     
  25. hust0

    hust0 Активный пользователь

    С нами с:
    6 июл 2013
    Сообщения:
    321
    Симпатии:
    8
    так моя воля хочет