901

Re: Выпадающий список

) всегото, а я уже функцию приплел strtoupper

902 (изменено: павелsimon, 2013-03-14 15:13:28)

Re: Выпадающий список

подскажите какие еще есть варианты нахождения одного слова в строке нужно именно в етой конструкции

$a = array();
$result = mysql_query("SELECT text FROM poisk",$db);
while ($myrow = mysql_fetch_array($result)) {
$a[] = $myrow['text'];
}

$result2 = mysql_query("SELECT * FROM baza",$db);
while ($myrow2 = mysql_fetch_array($result2)) {
  
      
if (in_array("".$myrow2["iskomoe"]."", $a)) {            
print"есть повтор <font color='#ff0000'><b>".$myrow2["iskomoe"]." +++++ ".$myrow2["true"]."</b></font><br> ";

        } else {
print"нету повтора ".$myrow2["iskomoe"]." <br> ";

        }
      }

потому как

foreach($a as $value) {
  if (preg_match('/' . preg_quote($myrow2["text"], '/') . '/', $value)) {
    // Найдено.
  }
}

не коректно работает

903

Re: Выпадающий список

павелsimon сказал:

не коректно работает

Как работает и как надо?

904

Re: Выпадающий список

вариант с

foreach($a as $value) {
  if (preg_match('/' . preg_quote($myrow2["text"], '/') . '/', $value)) {
    // Найдено.
  }
}

работает следующим образом сравниваются две колонки
1. Слова:  яблоко, груша, свекла
2. Слова: яблоко 1, свекла 1, груша 1

код обработчика

$a = array();
$result = mysql_query("SELECT text FROM poisk",$db);
while ($myrow = mysql_fetch_array($result)) {
$a[] = $myrow['text'];
}

$result2 = mysql_query("SELECT iskomoe FROM baza",$db);
$myrow2 = mysql_fetch_array($result2);
  
  do{    
       foreach($a as $value) {
  if (preg_match('/' . preg_quote($myrow2["iskomoe"], '/') . '/', $value)) {
    print"строка  ".$myrow2["iskomoe"]."------- совпадает $value <br>";
  }
  
}
}
while($myrow2 = mysql_fetch_array($result2));

результат вывода
строка яблоко------- совпадает яблоко 1
строка груша------- совпадает груша1
строка свекла------- совпадает свекла 1
строка ------- совпадает яблоко 1
строка ------- совпадает свекла 1
строка ------- совпадает груша1

905

Re: Выпадающий список

Да во второй колонке значительно больше слов но те что повторяются только 3

906

Re: Выпадающий список

Как я понял, последние 3 строки выводят не верные данные, тогда проверяйте, чтобы переменная $myrow2["iskomoe"] не была пустой.

if ($myrow2["iskomoe"] && preg_match('/' . preg_quote($myrow2["iskomoe"], '/') . '/', $value)) {

907

Re: Выпадающий список

спасибо получилось, теперь пожалуйста можна поподробнее растолкуйте что значит строка if ($myrow2["iskomoe"] && preg_match('/' . preg_quote($myrow2["iskomoe"], '/') . '/', $value)) особенно часть $myrow2["iskomoe"] && preg_match

908

Re: Выпадающий список

Если переменная $myrow2["iskomoe"] отдает булево значение истины (true) и (&&) регулярное выражение находит вхождение $myrow2["iskomoe"] в строке $value, то условие выполняется.

909 (изменено: павелsimon, 2013-03-15 10:35:54)

Re: Выпадающий список

Последние 3 строки выводят не неверные данные а дубликаты, здесь нужно чтоб выводились два столбика в одном все значения которые проверяются, во втором если есть совпадения то нужно чтоб на против выводилось то что совпало а если не совпало то выводилась пустая строка

910

Re: Выпадающий список

У вас изначально так и выводилось.

911

Re: Выпадающий список

нет изначально тоже двоится код

$a = array();
$result = mysql_query("SELECT text FROM poisk",$db);
while ($myrow = mysql_fetch_array($result)) {
$a[] = $myrow['text'];
}

$result2 = mysql_query("SELECT * FROM baza",$db);
$myrow2 = mysql_fetch_array($result2);
  
    do{    
        foreach($a as $value) {
            if (preg_match('/' . preg_quote($myrow2["iskomoe"], '/') . '/', $value)) 
            {
                print"совпадает ".$myrow2["iskomoe"]."---- $value<br>";
            } 
                            }
      }
while($myrow2 = mysql_fetch_array($result2));

столбик poisk содержит: яблоко2323, груша2323, неизвестно
столбик baza содержит: яблоко, груша, свекла, помидор...


в резултате вывод
совпадает яблоко---- яблоко2323
совпадает груша---- груша2323
совпадает ---- яблоко2323
совпадает ---- груша2323
совпадает ---- неизвестно

912 (изменено: павелsimon, 2013-03-15 11:01:03)

Re: Выпадающий список

а нужно
совпадает яблоко2323---- яблоко
совпадает груша2323---- груша
совпадает неизвестно -----

913

Re: Выпадающий список

Проверьте значение переменной $myrow2["iskomoe"].

914

Re: Выпадающий список

спасибо, нашел проблему в базе была пустая строка изза етого были дубликаты, теперь попробую разобратся с выводом всей колонки найденых и не найденых

915

Re: Выпадающий список

не пойму ведь правила на пустые значения нет

do{    
        foreach($a as $value) {
            if (preg_match('/' . preg_quote($myrow2["iskomoe"], '/') . '/', $value)) 
            {
                print"совпадает ".$myrow2["id"]."+++".$myrow2["iskomoe"]."---- $value<br>";
            } 
            
                            }
      }
while($myrow2 = mysql_fetch_array($result2));

теперь в результате только те колонки которые совпали, невидно тех которые не совпали
колонка база: яблоко, груша, свекла
колонка поиск: яблоко123, груша12312, неизвестно

в результане вывод
совпадает 26869+++яблоко---- яблоко123
совпадает 26871+++свекла---- свекла12312

не вывелось строка неизвестно

916

Re: Выпадающий список

Не вывелась, потому что условие проверки не выполнено. Если надо вывести несовпадающие результаты, то добавьте условие else.

917 (изменено: павелsimon, 2013-03-15 17:56:28)

Re: Выпадающий список

Чтото определенно не так вот код

$a = array();
$result = mysql_query("SELECT text FROM poisk",$db);
while ($myrow = mysql_fetch_array($result)) {
$a[] = $myrow['text'];
}

$result2 = mysql_query("SELECT * FROM baza",$db);
while ($myrow2 = mysql_fetch_array($result2)) {
  
      
if (in_array("".$myrow2["iskomoe"]."", $a)) {            
print"есть повтор <font color='#ff0000'><b>".$myrow2["iskomoe"]." +++++ ".$myrow2["true"]."</b></font><br> ";

        } else {
print"нету повтора ".$myrow2["iskomoe"]." <br> ";

        }
      }

в котором сверка происходит по точному совпадению результат вывода
нету повтора яблоко
нету повтора груша
есть повтор свекла


а вот код

$a = array();
$result = mysql_query("SELECT text FROM poisk",$db);
while ($myrow = mysql_fetch_array($result)) {
$a[] = $myrow['text'];
}

$result2 = mysql_query("SELECT * FROM baza",$db);
$myrow2 = mysql_fetch_array($result2);
  
    do{    
        foreach($a as $value) {
            if (preg_match('/' . preg_quote($myrow2["iskomoe"], '/') . '/', $value)) 
            {
                print"совпадает ".$myrow2["id"]."+++".$myrow2["iskomoe"]."---- $value<br>";
            } 
            else {print"совпадает ".$myrow2["id"]."+++".$myrow2["iskomoe"]."---- $value<br>";}
                            }
      }
while($myrow2 = mysql_fetch_array($result2));

в результате выводит
совпадает 30195+++яблоко---- яблоко111
совпадает 30195+++яблоко---- свекла
совпадает 30195+++яблоко---- неизвестно1
совпадает 30195+++яблоко---- неизвестно2
совпадает 30195+++яблоко---- неизвестно3
совпадает 30195+++яблоко---- неизвестно4
совпадает 30195+++яблоко---- неизвестно5
совпадает 30196+++груша---- яблоко111
совпадает 30196+++груша---- свекла
совпадает 30196+++груша---- неизвестно1
совпадает 30196+++груша---- неизвестно2
совпадает 30196+++груша---- неизвестно3
совпадает 30196+++груша---- неизвестно4
совпадает 30196+++груша---- неизвестно5
совпадает 30197+++свекла---- яблоко111
совпадает 30197+++свекла---- свекла
совпадает 30197+++свекла---- неизвестно1
совпадает 30197+++свекла---- неизвестно2
совпадает 30197+++свекла---- неизвестно3
совпадает 30197+++свекла---- неизвестно4
совпадает 30197+++свекла---- неизвестно5

Я совсем запутался ета белиберда получается при добавлении условия else без него
результат вывода
совпадает 30195+++яблоко---- яблоко111
совпадает 30197+++свекла---- свекла


номера 30197 ето id елементов в базе вывел чтоб посмотреть что дублируется

918

Re: Выпадающий список

получается что сначала выводится весь проход сопоставления по строке яблоко, потом весь проход по строке груша и тд, как зжать результат?

919

Re: Выпадающий список

if (preg_match('/' . preg_quote($myrow2["iskomoe"], '/') . '/', $value)) {
// Найдено
} else {
// Не найдено
}

920

Re: Выпадающий список

Доброй ночи подскажите что занчит ошибка

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 35 bytes) in X:\home\192.168.1.100\www\my\pasword\kombi2.php on line 38


в выполнении даного кода

function getVariants($str = '', $max = 0, $depth = 0, $row = array()) {
    $variants = array();
    for($i = 0; $i <= $max; ++$i) {
        $row[$depth] = isset($row[$depth]) ? ($row[$depth] + 1) : 0;
        if($depth < $max) {
            $res = getVariants($str, $max, $depth + 1, $row);
            foreach($res as $subrow)
                $variants[] = $subrow;
        } else {
            $subrow = '';
            foreach($row as $char)
                $subrow .= $str{$char};
            $variants[] = $subrow;
        }
    }
    return($variants);
}
$str = '1234567890';
$res = getVariants($str, strlen($str) - 1);
echo('<pre>'); print_r($res); echo('</pre>');

и еще как можно ограничить выполнение скрипта физическими ресурсами, тоесть чтоб выполнение скрипта не перегружало оперативную память более чем на 50% также с процессором?

921

Re: Выпадающий список

Не знаю что значит эта ошибка. Какая строка 38? Проверьте содержимое переменных в ней прервав скрипт.

По второму вопросу, смотрите в PHP директиву memory_limit. Как ограничить нагрузку процессора - не знаю.

922

Re: Выпадающий список

здравстуйте подскажите пожалуйста алгоритм реализации всех возможных комбинаций из масива символов в строку определенной доинны.  Тоесть из масива   1,2,a,b,5,c  составить всевозможные комбинации с длинной строки 3 символа учитывая повторы самих символов тоесть
111
222
aaa - и тд

923

Re: Выпадающий список

Не подскажу. Пробуйте.

924

Re: Выпадающий список

Здравствуйте, подскажите никак не получается довести до ума поиск в масиве по частичному совпадению

код

$a = array();
$result = mysql_query("SELECT brand FROM baza",$db);
while ($myrow = mysql_fetch_array($result)) {
$a[] = $myrow['brand'];
}

$b = array();
$result = mysql_query("SELECT model FROM baza",$db);
while ($myrow = mysql_fetch_array($result)) {
$b[] = $myrow['model'];
}

$result2 = mysql_query("SELECT * FROM poisk",$db);
while ($myrow2 = mysql_fetch_array($result2)) {
  
      
if (in_array("".$myrow2["text"]."", $a)  ) {

    
print"есть повтор <font color='#ff0000'><b>".$myrow2["text"]." +++++ ".$myrow2["postav"]."</b></font><br> ";

        }
    else {
print"нету повтора ".$myrow2["text"]." <br> ";

        }
      }

в результате сравнивается строка по точному совпадению со строкой
и на выходе коректнго выводятся данные а именно весь масив который сравниваем если есть совпадения или если их нет

вы приводили код с регулярным выражением

foreach($a as $value) {
 
       
        do{
            if (preg_match('/' . preg_quote($myrow2["brand"], '/') . '/', $value)) 
            {
                print"совпадает ".$myrow2["id"]."+++".$myrow2["brand"]."---- $value<br>";
          
                           }
                           
                       
     }
     while ($myrow2 = mysql_fetch_array($result2));
     }

так как в нужно искать строку в строке

но при етом данные дублируются изза цикла foreach в функцию in_array никак нельзя вписать регулярное віражение или чтото подобное?

925

Re: Выпадающий список

Не смогу помочь. Сформулируйте задачу проще.