0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 31
1

Строки не отображаются если столбец содержит буквы!

19.05.2020, 19:11. Показов 361. Ответов 4

Author24 — интернет-сервис помощи студентам
Добрый день.

Подскажите пожалуйста, почему не выводятся строки из таблицы, если во втором столбце (в моем случае это "arteisv") вначале содержатся буквы?

Если буквы стоят после цифр, то строчка отображается!

Если указаны просто цифры (100010001000), эта строчка выводится на страницу
Если указаны вначале буквы с цифрами (ABC123456), то строка не отображается

Код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
    if (isset($_GET['search'])){
        $searchWords = explode(" ", $_GET['search']);
        $conn = mysqli_connect('localhost', 'root', '', 'eisvbd');
        
        $queryString = "SELECT arteisv, artzavod, nametovar, brend, namezavod, cena, geografia, contacty FROM eistable WHERE nametovar OR arteisv AND geografia LIKE '%' AND artzavod LIKE '%'";
 
        foreach ($searchWords as $word)
        {
            $queryString .= " AND (nametovar LIKE '%$word%' OR arteisv LIKE '%$word%' OR geografia LIKE '%$word%' OR artzavod LIKE '%$word%') ";
        }
 
        $result = mysqli_query($conn,$queryString);
        if(mysqli_num_rows($result)>5)
        {
            $pages = mysqli_num_rows($result)/5;
            if(is_float($pages))
                $pages = ceil($pages);
        }
            
        if ($result !== false){
            $array = [];
            if($_GET['page']>1)
            {
                $from = ($_GET['page'] - 1) * 5;
                $queryString .= " LIMIT $from, 5";
            }
            else
            {
                $queryString .= " LIMIT 5";
            }
            $result = mysqli_query($conn,$queryString);
            while ($row = mysqli_fetch_array($result)){
            $array[] = $row; 
            }
        }
        $url = explode('&', $_SERVER['REQUEST_URI'])[0];
    }
 
?>
 
<form action = "<?php $_PHP_SELF ?>" method="GET">
    <input type="text" name="search">
    <button type="submit">search</button>
</form>
 
 <style>
    .tableHeader{
        font-weight: bold;
    }
    table{
        border-collapse: collapse;
    }
    td, th{
        border: 1px solid black;
        text-align: center;
    }
</style>
 
 <!-- вывод массива с результатами, если он существует -->
 <?php if($array) { ?>
<table style="border:1px solid black;">
    <tr class="tableHeader">
       
       <th>Артикул EISV</th>            
       <th>Артикул завода, представителя</th>          
       <th>Наименование товара, ГОСТ, ТУ, чертеж, ОСТ, РД, ИСО</th>    
       <th>Марка, бренд</th> 
       <th>Поставщик</th> 
       <th>Цена</th> 
       <th>Город</th> 
       <th>Контакты</th> 
        
     </tr>
       <?php foreach($array as $value) { ?>
    <tr>
        <td><?=$value["arteisv"]?></td>
        <td><?=$value["artzavod"]?></td>
        <td><?=$value["nametovar"]?></td>
        <td><?=$value["brend"]?></td>
        <td><?=$value["namezavod"]?></td>
        <td><?=$value["cena"]?></td>
        <td><?=$value["geografia"]?></td>
        <td><?=$value["contacty"]?></td>
        
    </tr>
       <?php } ?>
</table><br>
 <!-- иначе сообщение -->
<?php } else echo 'Ничего не найдено!';
//вывод страниц-ссылок для переходов, если результатов больше 10, 
if($pages) {
    for($i=1;$i<=$pages;$i++) { ?>
    <a href="<?echo $url.'&page='.$i;?>">[<?=$i?>]</a>
        
<?php } } ?>
Миниатюры
Строки не отображаются если столбец содержит буквы!   Строки не отображаются если столбец содержит буквы!   Строки не отображаются если столбец содержит буквы!  

0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2020, 19:11
Ответы с готовыми решениями:

Если строка содержит больше пяти латинских "a",заменить все латинские и русские буквы строки следующими по алфавиту символами.
Написать программу,которая читает с клавиатуры строку символов,преобразует ее и выводит результат...

Слова которые состоят только из цифр преобразуются в сумму цифр этих слов и если слово содержит буквы и цифры то буквы в них заменяются на «*».
Вводится предложение в этом предложении слова которые состоят только из цифр преобразуются в сумму...

Если j-ый столбец матрицы содержит только простые числа в вектор записать номер столбца, в противном случае 0.
Здравствуйте. Полностью задача выглядит так: Дана матрица А размером N×M, состоящая из...

Из строки удалить среднюю букву , если длина строки нечетная , если четная - удалить две средние буквы
Из строки удалить среднюю букву , если длина строки нечетная , если четная - удалить две средние...

4
Невнимательный
2572 / 956 / 314
Регистрация: 08.02.2013
Сообщений: 5,676
Записей в блоге: 2
19.05.2020, 20:16 2
Цитата Сообщение от VladimirEIS Посмотреть сообщение
WHERE nametovar OR arteisv
SQL
1
2
3
4
SELECT 0 OR 'ABC111'; -- 0
SELECT 0 OR '111';    -- 1
SELECT 0 OR 'ABC111' AND 1 AND 1; -- 0
SELECT 0 OR '111' AND 1 AND 1;    -- 1
0
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 31
19.05.2020, 21:49  [ТС] 3
Подскажите пожалуйста как это исправить?
0
Невнимательный
2572 / 956 / 314
Регистрация: 08.02.2013
Сообщений: 5,676
Записей в блоге: 2
20.05.2020, 01:27 4
Цитата Сообщение от VladimirEIS Посмотреть сообщение
как это исправить
можно было бы сказать просто
.... FROM eistable WHERE MATCH (nametovar, arteisv, geografia, artzavod ) AGAINST ('word1 word2 word3')
Но у Вас там другие поля перечислены в FULLTEXT INDEX

И я не знаю что за логика тут у вас .... для чего предполагалось использовать эти
WHERE nametovar OR arteisv AND geografia LIKE '%' AND artzavod LIKE '%'

так-то проверки нааверное нужны arteisv != '' или IS NOT NULL arteisv
но учитывая что
PHP
1
2
3
4
5
6
7
mysql> SELECT 1 OR 0 AND 0 AND 0;
+--------------------+
| 1 OR 0 AND 0 AND 0 |
+--------------------+
|                  1 |
+--------------------+
1 row in set (0.00 sec)
... Или '1ABC' вместо 1
Вы как будто хотели сделать если что-то есть в nametovar то больше искать ничего не нужно

Добавлено через 6 минут
и
Код
+-------------+
| '' LIKE '%' |
+-------------+
|           1 |
+-------------+
0
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 31
20.05.2020, 10:05  [ТС] 5
x_lab,

Спасибо за подсказку!

Теперь все работает.

Сделал такие изменения в коде:

PHP
1
2
3
4
5
6
        $queryString = "SELECT arteisv, artzavod, nametovar, brend, namezavod, cena, geografia, contacty FROM eistable WHERE nametovar LIKE '%' OR arteisv LIKE '%' AND geografia LIKE '%' AND artzavod LIKE '%'";
 
        foreach ($searchWords as $word)
        {
            $queryString .= " AND (nametovar LIKE '%$word%' OR arteisv LIKE '%$word%' OR geografia LIKE '%$word%' OR artzavod LIKE '%$word%') ";
        }
0
20.05.2020, 10:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2020, 10:05
Помогаю со студенческими работами здесь

Сравнить две строки и если в них есть разные буквы, то записать эти буквы в третью строку
Дали задачку: Ввести 2 строки символов и зарезервировать место под третью строку. Сравнить первые...

Если строка матрицы содержит 0, удалить строку (строки)
Здравствуйте! Помогите пожалуйста с задачкой: дан двумерный массив, если строка содержит 0, удалить...

Работа со стракой. Если строка содержит - удалить текст из строки
Добрый день. string s = &quot;Привет как дела?&quot;; if (s.StartsWith(&quot;Привет&quot;)) { ;//удалить из строки...

Из заданной строки удалить первое слово, если строка содержит заданное количество слов
Из заданной строки удалить первое слово, если строка содержит заданное количество слов. Для...

Как вызвать конкретную функцию из командной строки матлаба если .m файл содержит несколько функций
Здравствуйте! Подскажите пожалуйста как вызвать конкретную функцию из командной строки матлаба...

Из строки удалить среднюю букву, если длина строки нечетная, иначе - удалить две средние буквы
Из строки удалить среднюю букву, если длина строки нечетная, иначе - удалить две средние буквы.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru