i
Полезная информация
Свернуть
29.04.2024
ruensvdefrptesitzharnl

Автор - авторский...

Автор - авторский...

Кажется, элементарная задача... Ну ё-моё...

Есть две таблицы: существительных и прилагательных. Хочу в таблице прилагательных найти слова, образованные от существительных, в отдельном столбце добавить к ним индекс существительного.

Например:

Автор (слово в таблице сущ) – индекс 342

Авторский (слово в таблице прил) – в отдельном столбце добавляю к нему индекс существительного «автор»

Пытаюсь сделать код:

for ($i = 1; $i < 10; $i++)

{

 $k = proba_l ($link, 'Hero_all', 'Существительное', 'Существительное', 'Ind_Hero_all = '.$i);

echo $k; // перебор всех слов в таблице существительных

$begin = // здесь должны быть первые буквы найденного слова

proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное LIKE а%'); // вот здесь программа не видит команду: в MYSQL видит и понимает, отображает все слова на «а», в файловом менеджере не видит

// вместо а% хочу подставить переменную $begin

А дальше пойдет подстановка найденного индекса существительного

}

 

А proba_l это:

  function proba_l($link, $t, $parametr, $parametr_ind, $usl)
 {
    $sql_re = "SELECT * FROM ".$t." WHERE ".$usl.";";
    //echo $sql_re;
    $result_re = mysqli_query($link, $sql_re);
    $num_rows_re = mysqli_num_rows($result_re);
    $sqls_re = mysqli_fetch_all($result_re, MYSQLI_ASSOC);
    $x_re = rand(0, $num_rows_re-1);
    echo $sqls_re[$x_re][$parametr];
    $x_code_re = $sqls_re[$x_re][$parametr_ind];
    //echo $x_code_re;
    return $x_code_re;
 }

 

Какого хрена эта дрянь не видит команду Прилагательное LIKE а%?

А может, вообще все не так делаю...

0
Aagira Aagira 1 год назад #
Не далее как позавчера мне потребовалось взять все значения столбца из базы. Все то же самое — значения идут в массив, и скрипт их не видел. Оказалось, что надо собирать в массив не как $sqls_re = mysqli_fetch_all($result_re, MYSQLI_ASSOC), а как $sqls_re[] = mysqli_fetch_all($result_re, MYSQLI_ASSOC);
Выводить содержимое массива тоже не через echo, а другими способами, самый простой — var_dump($sqls_re). Попробуй так.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
так-так, сейчас буду разбираться… А применительно к моему коду это как? Вот так, да?
function proba_l($link, $t, $parametr, $parametr_ind, $usl)

{

$sql_re = «SELECT * FROM ».$t." WHERE ".$usl.";";

//echo $sql_re;

$result_re = mysqli_query($link, $sql_re);

$num_rows_re = mysqli_num_rows($result_re);

$sqls_re[] = mysqli_fetch_all($result_re, MYSQLI_ASSOC);

$x_re = rand(0, $num_rows_re-1);

echo $sqls_re[$x_re][$parametr];

$x_code_re = $sqls_re[$x_re][$parametr_ind];

//echo $x_code_re;

return $x_code_re;

}

У меня, кстати, рандомизация там идет, а она не нужна, а в каком месте её убрать, не знаю…
0
Aagira Aagira 1 год назад #
Да, так. Рандомизацию убрать — в смысле? Возвращаемое функцией значение выводит случайную строчку в таблице. А что ты тогда возвращать хочешь вместо нее?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
точно, здесь пока не надо убирать…
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
вот такой код выводит NULL

function proba_l($link, $t, $parametr, $parametr_ind, $usl)

{

$sql_re = «SELECT * FROM».$t." WHERE ".$usl.";";

//echo $sql_re;

$result_re = mysqli_query($link, $sql_re);

$num_rows_re = mysqli_num_rows($result_re);

$sqls_re[] = mysqli_fetch_all($result_re, MYSQLI_ASSOC);

$x_re = rand(0, $num_rows_re-1);

var_dump ($sqls_re[$x_re][$parametr]);

$x_code_re = $sqls_re[$x_re][$parametr_ind];

//echo $x_code_re;

return $x_code_re;

}

proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное LIKE а%');
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
даже если убираю a% все равно нуль
0
Aagira Aagira 1 год назад #
выведи это:
  1.  
  2. $sql_re = «SELECT * FROM».$t." WHERE ".$usl.";";
  3.  
  4. //echo $sql_re;
  5.  
  6. $result_re = mysqli_query($link, $sql_re);
  7.  
  8. $num_rows_re = mysqli_num_rows($result_re);
  9.  
  10. $sqls_re[] = mysqli_fetch_all($result_re, MYSQLI_ASSOC);


за пределы функции и добавь строчку var_dump($sqls_re);

что получится?
0
Aagira Aagira 1 год назад #
ах да, укажи где-нибудь $t, чтобы прога знала к чему обращаться.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Сейчас учитель посоветовал, заработало:

for ($i = 1; $i < 10; $i++)
{
$k = proba_l ($link, 'Hero_all', 'Существительное', 'Существительное', 'Ind_Hero_all = '.$i);
echo $k;
$begin = // здесь должны быть первые буквы найденного слова
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', '`Прилагательное` LIKE «а%»');
0
Aagira Aagira 1 год назад #
это цикл перебора массива обычный! сам-то массив заполнился?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
как понять, что он заполнился?
0
Aagira Aagira 1 год назад #
var_dump
0
Aagira Aagira 1 год назад #
Кстати, у тебя в этом коде должны работать только 10 строк. В таблице их явно больше.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Да, пробую хотя бы на 10 а не на 3433
осталось понять, как вместо а% поставить переменную…
0
Aagira Aagira 1 год назад #
Надо ставить там длину массива. Но как рассчитать длину массива, если массив создается внутри цикла же, причем столько раз, сколько указано? Все 3433 раз программа будет лезть в базу и пересоздавать этот массив. Надо вне цикла его создавать, затем и нужна другая функция.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
осталось потрошить дальше, вместо «а%» поставить переменную, которая будет обозначать начало слова, найденного в таблице существительных… Тут смущает, что $begin вроде как должна с цифрами работать, а у меня буквы

то есть это явно неверный вариант:

$begin = 'а';
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', '`Прилагательное` LIKE "$begin%"');
0
Aagira Aagira 1 год назад #
Можно взять функцию substr и определить каким-то образом число первых букв.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
но с этой функцией вроде бы конкретика…
$rest = substr(«abcdef», 0, -1);
А у меня вместо abcdef найденное слово…
0
Aagira Aagira 1 год назад #
Поэтому и говорю, что надо как-то определить количество символов. ch_sad
Вообще, что именно ты в $begin запихнуть хотела?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Похоже, в $begin надо полностью поставить найденное существительное.
чтоб программа в прилагательных искала слово, которое начинается с найденного существительного:
автор — АВТОРский
аббат — АББАТский
То есть никакого $begin не надо, а просто $k

for ($i = 1; $i < 10; $i++)
{
$k = proba_l ($link, 'Hero_all', ' ', 'Существительное', 'Ind_Hero_all = '.$i);
echo $k;
echo ' ';
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', '`Прилагательное` LIKE «а%»');
// вместо а% $k
echo "";
}
0
Aagira Aagira 1 год назад #
Ну и как? Работает?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Так как же вместо а% поставить $k и возможно ли это?
0
Aagira Aagira 1 год назад #
ну, поставь $k%
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Не видит. что-то с синтаксисом или глубже
0
Aagira Aagira 1 год назад #
а что сработало перед этим?
0
Aagira Aagira 1 год назад #
Чот я совсем в твоих функциях запуталась, если честно. Почему у тебя везде одна и та же проба_л? Напиши другую, а пробу_л оставь для подключения к базе.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Зачем надо другую?
0
Aagira Aagira 1 год назад #
Да просто ты все в одну функцию запихиваешь, и потом сложно разобраться. И подключение, и кучу действий.

function proba_l($link, $t, $parametr, $parametr_ind, $usl)

($link, 'Hero_all', ' ', 'Существительное', 'Ind_Hero_all = '.$i);

это я копирую для себя, чтобы видеть, что где.

echo $k; — что выводит?

0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Такой вариант тоже не видит…

for ($i = 1; $i < 10; $i++)
{
$k = proba_l ($link, 'Hero_all', ' ', 'Существительное', 'Ind_Hero_all = '.$i);
echo $k;
echo ' ';
$j = 'а';
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное = '.$j);
// вместо а% $k
echo "
";
}
0
Aagira Aagira 1 год назад #
'Прилагательное = '.$j — это же условие для SQL — запроса!
То есть, в $sql_re = «SELECT * FROM ».$t." WHERE ".$usl.";"; у тебя получится $sql_re = «SELECT * FROM «Prilagatelnye» WHERE «Прилагательное = '.$j»;»;
Попробуй вне функции сделать проверку:
  1.  
  2.  
  3. $sql_re = “SELECT * FROM Prilagatelnye WHERE "Прилагательное = '.$j';";
  4. echo $sql_re;
  5.  

Что получится?

Стоп! А кавычки-елочки у тебя только тут выходят, надеюсь?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
елочки только здесь
0
Aagira Aagira 1 год назад #
Ой, я тоже не заметила, что у тебя прилагательное при выборке из базы будет просто буквой а. Надо вернуть туда условие LIKE %
0
Aagira Aagira 1 год назад #
Поправила, убрала лишние кавычки. Посмотри просто по желаемому условию вне функции, что оно ищет в базе.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Работает:

$j = 'а';
$sql_re = «SELECT * FROM 'Prilagatelnye' WHERE 'Прилагательное = '.$j»;
echo $sql_re;

SELECT * FROM 'Prilagatelnye' WHERE 'Прилагательное = '.а
0
Aagira Aagira 1 год назад #
Так. А что не работает тогда?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
вот это:

$j = 'а';
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное = '.$j);

а это работает:

$j = 'а';
$sql_re = «SELECT * FROM 'Prilagatelnye' WHERE 'Прилагательное = '.$j»;
echo $sql_re;
0
Aagira Aagira 1 год назад #
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное = '.$j);

а что в этой функции сейчас?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
в смысле, что в функции?

function proba_l($link, $t, $parametr, $parametr_ind, $usl)
{
$sql_re = «SELECT * FROM ».$t." WHERE ".$usl.";";
//echo $sql_re;
$result_re = mysqli_query($link, $sql_re);
$num_rows_re = mysqli_num_rows($result_re);
$sqls_re = mysqli_fetch_all($result_re, MYSQLI_ASSOC);
$x_re = rand(0, $num_rows_re-1);
echo $sqls_re[$x_re][$parametr];
$x_code_re = $sqls_re[$x_re][$parametr_ind];
//echo $x_code_re;
return $x_code_re;
}
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
и это работает:

$j = 1;
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Index_pril = 1');
0
Aagira Aagira 1 год назад #
а так? proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное = а');
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
нет, это не будет работать, нет прилагательного а
0
Aagira Aagira 1 год назад #
а как оно его тогда находит там, где работает?
0
Aagira Aagira 1 год назад #
или так:
  1.  
  2. $j = '\’а\’';
  3. proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное = '.$j);
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
тоже не работает
0
Aagira Aagira 1 год назад #
$j = 1;
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Index_pril = 1');


Так, стоп! Ты в аргумент внесла конкретное значение, а не переменную. А вот так работает?

  1. $j = 1;
  2. proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Index_pril = '.$j);

0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Так работает
0
Aagira Aagira 1 год назад #
Вот эти аргументы: $parametr, $parametr_ind — точно должны быть 'Прилагательное', 'Прилагательное'?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
точно, иначе не работает
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Промежуточный итог:

это работает:

$j = 'а';
$sql_re = «SELECT * FROM 'Prilagatelnye' WHERE 'Прилагательное = '.$j»;
echo $sql_re;

А это нет:

$j = 'а';
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное = '.$j);

чего не хватет второму варианту, чтобы заработать…
0
Aagira Aagira 1 год назад #
Советую в комментариях вставлять коды в теги кода, они вызываются этой кнопкой:

Изображение

Тогда синтаксис будет отображаться, как у тебя в скриптах, и возможно, ошибка выявится.
0
Aagira Aagira 1 год назад #
А так не работает?
  1.  
  2. $j = 'а%';
  3. proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное = '.$j);
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
так не работает
0
Aagira Aagira 1 год назад #
Там и там а русская? Проверь, а то бывает всякое.
0
Aagira Aagira 1 год назад #
Может быть вообще из-за того, что столбец назван кириллицей, и вне функции он нормально воспринимается, а внутри происходит какой-нибудь пересчет кодировок? Попробуй переименовать его на латиницу.

Можно проверить, вызвав эхом $usl.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Не, столбец на латинице не помог
0
Aagira Aagira 1 год назад #
А как отображается $usl?

echo $usl; — что показывает?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
ничего не показывает. А нужно написать просто echo $usl; или еще что-то?
0
Aagira Aagira 1 год назад #
Если функция все эти echo выводит в процессе, то ничего не надо. Или для проверки работы написать так:

  1. echo ‘проверяем этот код:. $usl;


строчки «проверяем этот код:» должны появиться в любом случае.

если функция не выводит их в процессе, т.е. сообщения о проверяемом коде в результате нет, то можно вывести через return.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
строчки появляются.
0
Aagira Aagira 1 год назад #
с пустым результатом? хм. а с работающим вариантом как будет отображаться?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
SELECT * FROM 'Prilagatelnye' WHERE 'Прилагательное = '.11111 (это я 11111 поставила вместо фразы про проверяем код )
0
Aagira Aagira 1 год назад #
погоди, в каком смысле вместо фразы? можно весь код проверки?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
$j = 'а';
$sql_re = «SELECT * FROM 'Prilagatelnye' WHERE 'Прилагательное = '.$j»;
echo $sql_re;
echo '111111'. $usl;
0
Aagira Aagira 1 год назад #
А вот это что покажет сейчас?
  1. $j = 1;
  2. proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Index_pril = '.$j);
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
работает, выдает прилагательное
0
Aagira Aagira 1 год назад #
Так, погоди. Оно же должно выдавать то, где единица как индекс.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Выдает прилагательное под номером 1 в таблице
0
Aagira Aagira 1 год назад #
Маш, мне надо видеть, как пишется условие.
0
Aagira Aagira 1 год назад #
echo $sql_re;
echo '111111'. $usl;

что пишет при тех работающих данных?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
абрамский111111
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Но я точно написала как ты сказала:

А вот это что покажет сейчас?
$j = 1;
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Index_pril = '.$j);
0
Aagira Aagira 1 год назад #
Но мне надо видеть, что отображается в переменной $usl в этом случае.

Почему она срабатывает на число и не видит строку?
Почему тот же запрос работает вне функции? Не поменять ли переменную для проверки? Например, вбить «аббат».
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Не понимаю вопроса
0
Aagira Aagira 1 год назад #
echo $sql_re; — что выводит?
0
Aagira Aagira 1 год назад #
А, вижу, абрамский. А echo $usl должно выводить все условие, как оно задано. выдает его? Можно посмотреть?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
$j = 1;
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Index_pril = '.$j);
echo $sql_re;

Выводит — абрамский
0
Aagira Aagira 1 год назад #
  1. $j = 1;
  2. proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Index_pril = '.$j);
  3. echo $sql_re;
  4. echo+.$usl.+ блаблабла‘;


Что вывело?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
абрамский0
0
Aagira Aagira 1 год назад #
Интеррэсно! А вне функции если?
Почему оно не видит блаблаблу? Может, из-за не тех кавычек? Если прямые туда поставить, или прямые двойные, то что?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
да, кавычки были не те
теперь так:

абрамский + + блаблабла
0
Aagira Aagira 1 год назад #
спасибо. а теперь поменять в этой строке $usl на $j и проверить в обоих вариантах?

  1. $j = 1;
  2. proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Index_pril = '.$j);
  3. echo $sql_re;
  4. echo+.$j.+ блаблабла‘;


  1. $j = ‘а’;
  2. proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное = '.$j);
  3. echo $sql_re;
  4. echo+.$j.+ блаблабла‘;


кавычки замени опять.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
теперь так:

абрамский + 1 + блаблабла
0
Aagira Aagira 1 год назад #
а во втором варианте? см. добавленное в сообщение выше.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
второй вариант:

абрамский + 1 + блаблабла
0
Aagira Aagira 1 год назад #
Значит, оно строку вывело!
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
вывело… и что нам с этим дальше делать?
0
Aagira Aagira 1 год назад #
И еще: что будет, если в обоих вариантах поменять $j на '1' ?
  1. $j = '1';
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
меняю джи на 1,
в первом варианте:
абрамский + 1 + блаблабла

во втором варианте:
+ 1 + блаблабла
0
Aagira Aagira 1 год назад #
ага, а если в прилагательные, в любую ячейку добавить цифру 1, то что выйдет во втором варианте?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
второй вариант:
+ а + блаблабла
0
Aagira Aagira 1 год назад #
Так. Значит, оно принимает значение. Вообще интэрррэснее все становится.
0
Aagira Aagira 1 год назад #
во втором варианте при ЭТОЙ проверке (где в ячейке прилагательного есть цифра 1) джи должно равняться единице в прямых кавычках.

  1. $j = '1';
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
да. все так

$j = '1';
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Index_pril = '.$j);
echo $sql_re;
echo ' + '.$j. ' + блаблабла';

выводит

+ а + блаблабла
0
Aagira Aagira 1 год назад #
Маш. Не индекс прилагательного, а прилагательное. Внимательнее посмотри на условие.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
$j = '1';
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное = '.$j);
echo $sql_re;
echo ' + '.$j. ' + блаблабла';

результат

+ 1 + блаблабла
0
Aagira Aagira 1 год назад #
Есть мысль одна. Поменять сейчас в $j = '1'; одинарные кавычки на двойные.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
то же самое: + 1 + блаблабла
0
Aagira Aagira 1 год назад #
а в тексте строки единица точно присутствует? например, абрамский1, либо 1абрамский?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
в строке таблицы с смысле?
1 столбец — индекс
2 столбец слово — абрамский
0
Aagira Aagira 1 год назад #
2 столбец слово — абрамский

Добавить туда цифру 1. Иначе, что мы сейчас проверяем, справшивается? ch_lol ch_lol ch_lol
Мне надо увидеть, как оно отреагирует на цифру в тексте.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
реагирует, отображает
0
Aagira Aagira 1 год назад #
по-ка-жи.
все покажи. и запрос, и результат.
и что в строке таблицы.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
запрос

$j = 1;
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Index_pril = '.$j);
echo $sql_re;
echo ‘ + ‘.$j. ‘ + блаблабла‘;

результат

абрамский1 + 1 + блаблабла

строка таблицы:

Изображение

(извини пожалуйста, мне надо ложиться, иначе завтра на смену не встану. Большое спасибо за помощь, если будет возможность завтра продолжить, хорошо, если нет, и ладно… устроила я кипиш, а теперь сама же ретируюсь… но иначе завтра просто смену не выдержу...)
0
Aagira Aagira 1 год назад #
Ладно, на завтра в том же самом запросе и таблице поменяй 1 на, скажем, L. Посмотрим, как оно ловит латиницу.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
последнее: ловит:
абрамскийr + 1 + блаблабла
0
Aagira Aagira 1 год назад #
ничего не понимаю, что ты сейчас задала.
0
Aagira Aagira 1 год назад #
$j = 1;

Где кавычки?!
0
Aagira Aagira 1 год назад #
  1. $j = '1';
  2. proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное = '.$j);
  3. echo $sql_re;
  4. echo ' + '.$j. ' + блаблабла';


Вот это вот.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
ну вот:

+ 1 + блаблабла
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
куда вбить?
0
Aagira Aagira 1 год назад #
в $j

$j = ’аббат’;
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
$j = 'аббат';
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное = '.$j);
echo $sql_re;

ничего не пишет
0
Aagira Aagira 1 год назад #
Если бы это не пхп был, я бы, конечно, грешила на неопределенный тип переменной, но это же пхп!
0
Aagira Aagira 1 год назад #
Все-таки, мысли такие: а) почему у тебя там в условии на поиск в столбце прилагательных стоит « = а», а не « LIKE а%»? б) в любом случае, раз ты ищешь первые буквы слова, то перед поиском по таблице переменную $begin необходимо будет готовить заранее, чтобы при случайном совпадении искомого слова с какой-нибудь частью другого слова в таблице то, другое слово не выходило.
Для этого можно попробовать посчитать буквы в существительном (например, «автор») с помощью strlen(), загнать это значение в переменную и поставить в substr как второй аргумент (первый будет указывать на начало слова).
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
В смысле? Вместо:

$j = 'а';
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное = '.$j);
echo $sql_re;

сделать

$j LIKE 'а%';
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное = '.$j);
echo $sql_re;

Так без проблем, к этому и идем, только сначала хоть бы просто с 'а' получилось!
0
Aagira Aagira 1 год назад #
  1. $j = 'а%';
  2. proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное LIKE '.$j);
  3. echo $sql_re;

Вот так, хотя бы
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
$j = 'а%';
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное LIKE '.$j);
echo $sql_re;

И ничего не выдает
0
Aagira Aagira 1 год назад #
А не может причиной быть то, что строк выбирается много, а не одна конкретная?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
да нет, если не функция, а просто выборка, то выбирались много строк без проблем — выбери любую строку в начале которой буква а
0
Aagira Aagira 1 год назад #
Понятно. Ну ты попробовала символ на латинице вставить в искомую ячейку, и выбирать по нему?
Я все в недоумении, почему вне функции работает, а внутри — нет?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
вот я тоже в недоумении… может, в функцию что-нибудь впихнуть, но тогда получится функция встроена в цикл, цикл в функцию, какая-то лента мебиуса, ухватившая за хвост саму себя… или какие-нибудь $global куда-нибудь подставить…
0
Aagira Aagira 1 год назад #
Ты про латиницу скажи. Вчера ты проверила, но что именно?

Ленту мебиуса в коде точно не надо, и глобальных переменных тоже.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Я вчера выкладывала с латиницей результат:

абрамскийr + 1 + блаблабла
0
Aagira Aagira 1 год назад #
но ты не ответила на вопрос, как запрос выглядел
судя по всему, искало по цифре 1
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
запрос

$j = 1;
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Index_pril = '.$j);
echo $sql_re;
echo ‘ + ‘.$j. ‘ + блаблабла‘;

результат

абрамскийr + 1 + блаблабла
0
Aagira Aagira 1 год назад #
Ну правильно, ищет по единице и индексу. Этот запрос срабатывает без проблем, мы же это знаем. Вопрос стоял, будет ли искать по латинской букве в запросе к ячейке прилагательных!

  1. $j = 'r';
  2. proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', , 'Прилагательное = '.$j);
  3. echo $sql_re;
  4. echo+.$j.+ блаблабла‘;


Вот что нужно найти. И проверить перед этим, есть ли в таблице абрамскийr вместо простого абрамского.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
$j = 'r';
$sql_re = «SELECT * FROM 'Prilagatelnye' WHERE 'Прилагательное = '.$j»;
echo $sql_re;

выводит

SELECT * FROM 'Прилагательные' WHERE 'Прилагательные = '.r
0
Aagira Aagira 1 год назад #
Да, так и должно! А в функции?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
В какой, в этой, что ли?

$j = 'а%';
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное LIKE '.$j);
echo $sql_re;
0
Aagira Aagira 1 год назад #
Маш! Вникни в смысл того, что мы делаем! eyes

Вот здесь я код дала, можешь его проверить?
dabudetsolnce.website/blogs/1560-avtor-avtorskii.html#comment_60243
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
$j = 'r';
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное',, 'Прилагательное = '.$j);
echo $sql_re;
echo ‘ + ‘.$j. ‘ + блаблабла‘;

дает

+ r + блаблабла
0
Aagira Aagira 1 год назад #
значит, по буквам не ищет. а выше — вот тут:
dabudetsolnce.website/blogs/1560-avtor-avtorskii.html#comment_60219
ты, к сожалению, не взяла единицу в кавычки, так что, эксперимент был напрасен. надо было именно в кавычках искать. естественно, чтобы в таблице было абрамский1 при этом.

ой, а ты там вообще по индексу искала, я на сонную голову не заметила. блииин!
0
Aagira Aagira 1 год назад #
Можешь мне показать структуру таблицы? На вкладке «структура».
0
Aagira Aagira 1 год назад #
Вроде норм все. Кириллицу принимать должно.
А, минутку…
0
Aagira Aagira 1 год назад #
Попробуй-ка поменять тип ячейки Прилагательное с varchar(23) (почему 23 вообще?) на TEXT или MEDIUMTEXT.
Только забэкапь таблицу перед этим!
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
и что дальше?
0
Aagira Aagira 1 год назад #
Поменяла?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
поменяла, что дальше
0
Aagira Aagira 1 год назад #
функция не работает?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Какая из множества перебранных нами функций?
0
Aagira Aagira 1 год назад #
ох, ну которую мы проверяем же. поиск на букву а.

и про латиницу ответь выше, пож.
dabudetsolnce.website/blogs/1560-avtor-avtorskii.html#comment_60247

вообще, проверяй сама всякий раз то, с чем маемся, без моей подсказки, хорошо? иначе дело затянется на неделю((
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Какая именно функция? Мы этих функций уже штук двадцать перебрираем
0
Aagira Aagira 1 год назад #
какая функция, тебе нужно, чтобы заработала?
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
вот эта нужна:

$j = 'r';
proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное = '.$j);

только вместо r там существительное должно быть

И при изменении таблицы варчар на медиумтекст ничего не работает все равно не отображается ничего
0
Aagira Aagira 1 год назад #
dabudetsolnce.website/blogs/1560-avtor-avtorskii.html#comment_60244

Так, а я профукала момент! Если действительно запрос так отобразился, то вернись к тому моменту, пожалуйста, где он такой вышел! Как это получилось? Это интересно, правда. Потому что если он в таком виде в программе выводится, то неудивительно, то ничего не работает.

Можно для сравнения то же самое вывести с работающим запросом по индексу?
0
Aagira Aagira 1 год назад #
так попробуй:

  1. $j = 'а';
  2. proba_l ($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', , '\'Прилагательное = \'.$j');
  3. echo $sql_re;
  4. echo+.$j.+ блаблабла‘;


upd: тоже не сработает, путаница в кавычках.
Aagira Aagira 1 год назад #
Комментарий удален
0
Aagira Aagira 1 год назад #
Маш, давай определимся с тем, чего мы хотим добиться. Три цели в одном эксперименте:

а) Функция ищет в ячейке прилагательных, а не в индексах. То, что она по индексам правильно работает — мы поняли. Поэтому лишние попытки из-за невнимательности и ошибки очень досадны и приводят к неверным выводам в итоге. Итак, все проверки идут по условию 'Прилагательное = '.$j.

б) Мы ищем по определенному символу, который вводится в переменную $j. Поэтому если я скажу: «Давай проверим букву L, то это будет означать, что $j = 'L', а в ячейке с несчастным абрамским (всем Абрамским сейчас икается) должна присутствовать буква L на момент проверки. Потому что мы ищем эту букву в ячейке, и шерстить ячейки, если ее там нет — это лишняя трата времени и нервов.

в) Нам надо определить, как происходит поиск по типу строковых данных. Потому что 1 без кавычек — это ЧИСЛО, а '1' в кавычках — СТРОКА. И в данном случае тебе нужно искать не цифры, а набор символов строки. Поэтому если я говорю искать что-то загнав в кавычки, даже если это число, то кавычками не пренебрегай.

Пожалуйста, следуй этой инструкции, и давай начнем проверку сначала…
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Давай завтра я внимательно посмотрю эту инструкцию и буду/будем проверять. Основательно, с чувством, с толком, с расстановкой (это я про себя) (а то опять полцеха на себя повесила, как домой дошла, вообще непонятно)
А поскольку у меня реально с головой не очень, тут ничего не поделать, что мне нужна предельная конкретика. в функцию (текст функции) поставить то-то. Для удобства на крайняк можно номера дать функциям, это у нас фрагмент кода №1, это №2…
Ну реально у меня с головой не все хорошо, другой бы человек может быть и понял сразу.
0
Aagira Aagira 1 год назад #
я выше дала вариант сейчас. возможно, сработает.

dabudetsolnce.website/blogs/1560-avtor-avtorskii.html#comment_60263
0
Aagira Aagira 1 год назад #
Каррроче, пойду проверять все сама.
0
Aagira Aagira 1 год назад #
Дружеский совет, который твой учитель должен был дать изначально.
Поставь в начало скрипта вот такую строку:

  1.  
  2.  


Ошибки будут, как на ладони. У меня сейчас при значении «а» показывает:
Изображение
То есть, где-то там прописывается булевое значение вместо нужного, очевидно, false, т.е. не находит строку в базе по заданному параметру. Поскольку, я просто имитировала твой скрипт, базу данных и прочее, я не поручусь, что у меня сейчас та же самая ошибка, которая возникает в твоем скрипте, и вообще, я могла сейчас напортачить. Но, по крайней мере, поиск по индексу у меня работает тоже.

А вообще, я изменила работу с массивом, поэтому не могу сказать точно, одна и та же проблема у нас, или разные. Но если ты поставишь отображение ошибок (т.е. указаную выше строку), то сможешь сама увидеть, где что не так у тебя, скопировать сообщение об ошибке и загуглить его.
0
Aagira Aagira 1 год назад #
Вот так работает!

  1. proba_l($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное LIKE \'%'.$j.'%\'');


Изображение

Или, если угодно, по первым буквам:

  1. proba_l($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное LIKE \''.$j.'%\'');


Но все это будет выдавать ошибку, если запрос выйдет пустой (а это наверняка случится не раз), и это не есть гуд, даже если ошибка не будет видна. Поэтому в дальнейшем будет необходимо сделать какой-нибудь try-catch на подобные случаи.

И да, проблему создали таки кавычки. ch_lol
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Большое спасибо! Всё работает!

$j = 'автор';
proba_l($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное LIKE \''.$j.'%\'');

и выводит:

авторский
авторитарный
авторитетный
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
а тут что-то не то...:

for ($i = 1; $i < 10; $i++)
{
$k = proba_l ($link, 'Hero_all', 'Существительное', 'Существительное', 'Ind_Hero_all = '.$i);
echo $k;
proba_l($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное LIKE \''.$k.'%\'');
echo '';
}

абажурабажур
абазабаз
абазинабазин
абазинкаабазинка
абакаабака
аббатаббат
аббатисааббатиса
аббатствоаббатство

то есть когда просто $k = 'a'; — видит и находит, а когда $k = proba_l ($link, 'Hero_all', 'Существительное', 'Существительное', 'Ind_Hero_all = '.$i); — переменную k видит и находит, но в функции с прилагательным с ней не работает.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Вот так вообще дурдом:

for ($i = 1; $i < 10; $i++)
{
$k = proba_l ($link, 'Hero_all', 'Существительное', ' ', 'Ind_Hero_all = '.$i);
echo $k;
proba_l($link, 'Prilagatelnye', 'Прилагательное', 'Прилагательное', 'Прилагательное LIKE \''.$k.'%\'');
echo '';
}

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

пихает прилагательные какие попало…

И почему-то восьмая строка вообще не соответствует заданию… может, в этом весь подвох?
0
Aagira Aagira 1 год назад #
Маш, покажи мне сейчас, что там в функции?
И кинь мне, пожалуйста, в скайп обе таблицы. Я должна сама попробовать.
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
Я так не понимаю. Мне опять же нужна конкретика — в какой функции? Если проба л, так она в тексте самого топика.
0
Aagira Aagira 1 год назад #
так, мы пробу л меняли, вроде бы, тоже. в общем, я полагаю, там рандомайзер регаирует на ошибку. ты поставила строчку error_reporting(E_ALL); в начало программы?
0
Aagira Aagira 1 год назад #
аббатисазагнанный
обнесенный
аббатствоунаследованный

И почему-то восьмая строка вообще не соответствует заданию… может, в этом весь подвох?


Восьмой строки (точнее, индекса 8) в таблице существительных нет:

Изображение

Потому оно и не находит ничего. А вот рандомайзер криво работает, наверняка, по причине того, что он в обоих случаях используется. И в поиске существительных, и в поиске прилагательных. Конечно, надо раскидать все эти детали по разным функциям. Лучше вызывать рандомайзер в тех случаях, когда это необходимо.

0
Aagira Aagira 1 год назад #
Я, как дура, мучаюсь с этим кодом, думаю, в чем проблема, а в таблицы не поглядела. Маш, ты чего? Где там вообще такие прилагательные, соответствующие таблице существительных?

Изображение

Изображение

Конечно, оно ничего не найдет, если этого нет!

Ну а кроме того, $k = proba_l ($link, 'Hero_all', 'Существительное', 'Существительное', 'Ind_Hero_all = '.$i); не выводит строку как таковую. То есть, ты видишь слово, а программа видит какой-то непонятный объект, который еще и надо переводить в строку для поиска другим методом. У меня, по крайней мере, это сейчас так.

UPD: теперь видит функцию как строку, странно.
0
Aagira Aagira 1 год назад #
Фух, я весь твой код переписала тыщу раз. Сделала по-своему. Функции той, пробе-л кирдык. Раскидала ее на кучу других функций. Все работает, но как я буду объяснять, что и как работает — этого не представляю. eyes Проще будет роман дописать…
0
Aagira Aagira 1 год назад #
Вот такие фокусы выдает laugh

Изображение
0
Aagira Aagira 1 год назад #
Вот из твоих таблиц. Долго ищет, но находит:

Изображение
0
Мария Фомальгаут Мария Фомальгаут 1 год назад #
э-э-э-э… спасибо за код, конечно… но мой код тоже работает… Если как ты совершенно правильно заметила добавить больше значений для $j, как хорошо, что ты нашла…

for ($i = 1; $i < 100; $i++)
{
$k = proba_l ($link, 'Hero_all', 'Существительное', 'Существительное', 'Ind_Hero_all = '.$i);
$w = proba_l($link, 'Prilagatelnye', 'Прилагательное', ' ', 'Прилагательное LIKE \''.$k.'%\'');
echo $w;
echo '
';
}

Так что большое спасибо за наводку, что в первых десяти строках пар-то и нету… Вот очевидный косяк был, а я не вижу…
0
Aagira Aagira 1 год назад #
Блин, я в скайпе накидала всего!
0
lifekilled lifekilled 1 год назад #
Иногда если код не переписать, то и баг не найти. Называется «рефакторинг», нормальное явление. Так все и делается обычно

Похожие темы:

Сначала казалось, что все так просто: написали программку, кинули клич, мол, ставьте себе на комп, к...
Для начала выкладываю простой вопрос. Имеется текст, из которого я хочу достать все слова с большой ...
Какие ошибки, неудобства и просто нелепости допускают авторы тех или иных программ. Собираем их в эт...
Думаю, на кой черт я делаю свою программу-писателя, если уже лезет из всех щелей CHAT-CPT или как ег...

Все представленные на сайте материалы принадлежат их авторам.

За содержание материалов администрация ответственности не несет.