[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разбитие переменой на несколько
Joliat
Доброго времени суток всем.

У меня есть таблица, в одной из ячеек которой записаны имена людей через запятую. вот так Vasya, Petya, Kolya и т.д.
Мне нужно как-то сделать запрос, чтобы можно было взять каждое имя в отдельности для формирования ссылок для каждого имени, например:
<a href="<?php $_SERVER['REQUEST_URI'].'Vasya' ?>">Vasya</a>
<a
href="<?php $_SERVER['REQUEST_URI'].'Petya' ?>">Petya</a>
...
<a href="<?php $_SERVER['REQUEST_URI'].'Kolya' ?>">Kolya</a>


Так же интересует функция, которая может проверить содержимое ячейки на совпадение с переменной. Т.е. загоняем в переменную чье-то имя $mane='Vasya'; а после ячейку в БП (например, такую:Vasya, Petya, Kolya) проверяем на наличие этого имени и при совпадении одного из имен проводим некую операцию.



Спустя 40 минут, 19 секунд (17.12.2011 - 02:05) redreem написал(а):
рады за вас smile.gif ща vital про булочки напишет еще smile.gif

Спустя 6 минут, 47 секунд (17.12.2011 - 02:12) Joliat написал(а):
redreem, Вы случайно не потерялись? Вы сейчас вообще о чем?

Спустя 34 секунды (17.12.2011 - 02:13) Игорь_Vasinsky написал(а):
виталик по делу напишет, про булки инпост добавит.

ТС.. нужно ознакомится с примитивными функциями работы с БД+php, попыток не видно

а Виталик вроде в баню пошёл... за последний хлебулочный фабрикат)))

Спустя 1 минута, 59 секунд (17.12.2011 - 02:15) Игорь_Vasinsky написал(а):
Цитата
<a href="<?php $_SERVER['REQUEST_URI'].'Vasya' ?>">Vasya</a>

это наверно html5 такой GET параметр стал поддерживать.. надо обновить апач...

Спустя 2 минуты, 23 секунды (17.12.2011 - 02:17) Joliat написал(а):
Игорь_Vasinsky, я понимаю, что пятница и все такое, но русским языком объяснить можно?
Если б знал как называются эти функции, чего бы я сюда тогда писал?
Пришел за советом, а Вы мне говорите, что я должен знать ответ перед тем как задать вопрос!

Спустя 5 минут, 56 секунд (17.12.2011 - 02:23) Игорь_Vasinsky написал(а):
ну во-первых о передачи данных в URL

первый параметр передаётся через ? последующие через &
name = value

index.php?action=view&id=5

Во вторых - БД - эти имена.. много имён..разделены через ","

для этого explode()

будет массив..

foreach - поможет (долго искал букву "ж", думал нету..а нашёл)

и вот вотом цикле - собирать url


уф... с трудом...... пятница...

Спустя 3 минуты, 27 секунд (17.12.2011 - 02:26) Joliat написал(а):
Вот нашел кусок кода касающийся первого вопроса:
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

Но как сделать мой вывод без цикла?
<a href="<?php $_SERVER['REQUEST_URI'].'Vasya' ?>">Vasya</a>
<a
href="<?php $_SERVER['REQUEST_URI'].'Petya' ?>">Petya</a>
...
<a href="<?php $_SERVER['REQUEST_URI'].'Kolya' ?>">Kolya</a>

Спустя 5 минут, 8 секунд (17.12.2011 - 02:31) Игорь_Vasinsky написал(а):
уф.

1. подключиться к БД mysql_connect()
2. выбрать БД mysql_select_db()
3. запрос на получние данных из БД SELECT * FROM table
4. получить ответ из БД в виде ассоц. массива mysql_fetch_assoc()
5. из строки, которая вернула БД - собрать массив explode(",", ????)
6. сс помощью цикла foreach обработать каждый элемент массива - формируя URL с GET (см 1й пост)

Спустя 2 минуты, 34 секунды (17.12.2011 - 02:34) Joliat написал(а):
Вот нашел еще кусок:
<?php
$menu_string = "Новости~О нас~Продукция~Услуги~Контакты";
$menu = explode("~",$menu_string);
for ($i=0; $i < count($menu); $i++) {
echo "<a href=index-",$i+1,".php>",$menu[$i],"</a><br>";
};
?>

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

Второй и последний (на данный момент)- Сравнение переменной с другой на наличие совпадений.

Спустя 24 секунды (17.12.2011 - 02:34) redreem написал(а):
$c = '';
foreach ($pieces as $k => $v) {
$c .= '<a href="'.$_SERVER['REQUEST_URI'].$v.'>"'.$v.'</a>';
}
echo $c;

Спустя 6 минут, 30 секунд (17.12.2011 - 02:41) Игорь_Vasinsky написал(а):
а что содержит REQUEST_URI стесняюсь спросит?

а по поводу
Цитата
равнение переменной с другой на наличие совпадений.


какоё с какой, на конкретном примере.

Спустя 2 минуты, 6 секунд (17.12.2011 - 02:43) Joliat написал(а):
второй вопрос как я понимаю решается по средствам "strpos"?

Спустя 1 минута, 47 секунд (17.12.2011 - 02:45) Joliat написал(а):
Игорь_Vasinsky, конкретный пример приводил в самом первом сообщении:

Цитата
Так же интересует функция, которая может проверить содержимое ячейки на совпадение с переменной. Т.е. загоняем в переменную чье-то имя $mane='Vasya'; а после ячейку в БП (например, такую:Vasya, Petya, Kolya) проверяем на наличие этого имени и при совпадении одного из имен проводим некую операцию.

Спустя 1 минута, 31 секунда (17.12.2011 - 02:46) Игорь_Vasinsky написал(а):
не факт, эта функцияя ищет лишь совпадение, если речь идёт о сравнении то ==


да тут речь идет об идентичности - а это ==

Спустя 8 секунд (17.12.2011 - 02:46) inpost написал(а):
<?php $_SERVER['REQUEST_URI'].'Kolya' ?>
ГДЕ ВЫВОД? Где функция вывода?
А наличие обычным условием. if($var == 'Kolya') {echo ' class="checked"';}

Спустя 5 минут, 2 секунды (17.12.2011 - 02:51) Joliat написал(а):
inpost, с этим вопросом, можно сказать, уже разобрались. Сейчас о совпадении и спать.))

Спустя 13 минут, 40 секунд (17.12.2011 - 03:05) Игорь_Vasinsky написал(а):
я же написаал - ==

if($var == $var2)
echo "Попался! двойничёк...";

Спустя 15 часов, 24 минуты, 45 секунд (17.12.2011 - 18:30) Joliat написал(а):
С первым вопросом разобрался и уже воплотил в код, который радует и работает, только есть один ньюанс:

код такой:

$oneuser = explode(", ",$owneruser);
for ($i=0; $i < count($oneuser); $i++) {
echo "<a href=http://название сайта/?user_",$oneuser[$i],">",$oneuser[$i],"</a>, "; };

Идет перечень имен через запятую и в конце списка опять стоит запятая. Как ее заменить на точку? я подозреваю, что можно через substr, но куда его тут вставить?

Теперь второй вопрос.
Есть таблица вида (упрощенно):

id | user_name
-------------------------
02 | Vasya, Kolya
05 | Petya, Pasha
09 | Vasya


Как извлечь все id, где встречается имя Vasya?

Спустя 37 минут, 44 секунды (17.12.2011 - 19:08) inpost написал(а):
Joliat
Через массив:
$array[] = "<a>...</a>";
implode(',',$array);

Спустя 2 минуты, 1 секунда (17.12.2011 - 19:10) inpost написал(а):
Вопрос второй - нарушение основных правил работы mysql, которое гласит, что связку надо делать между таблицами, и каждая запись должна быть, а не объединять.
id id_part user_name
1 02 Vasya
2 02 Kolya
3 05 Petya
4 05 Pasha

Спустя 20 минут, 55 секунд (17.12.2011 - 19:31) Joliat написал(а):
я пользуюсь, тем что есть - движек WP.
так что? это не реально? по-моему, по такому принципу должен работать поиск по контенту. или я не прав?
какую функцию нужно использовать в моих целях?

Спустя 6 минут, 48 секунд (17.12.2011 - 19:37) killer8080 написал(а):
Цитата (Joliat @ 17.12.2011 - 17:30)
Идет перечень имен через запятую и в конце списка опять стоит запятая. Как ее заменить на точку?

$str = rtrim($str, ', ').'.';

Спустя 22 минуты, 56 секунд (17.12.2011 - 20:00) inpost написал(а):
Joliat
Вопрос первый с уточнением:
$array = array();
while()
$array[] = "<a>...</a>";

$line = implode(',',$array).'.';


Вопрос второй:
Ну значит криво у тебя, нарушено главное правило целостности СУБД. Почитай про 6 основных правил, чтобы понимать о чём я говорю.

Спустя 6 минут, 37 секунд (17.12.2011 - 20:07) Joliat написал(а):
Первый вопрос решен собственным методом:
		for ($i=0; $i < count($oneuser)-1; $i++) {
echo "<a href=http://название сайта.ru/?user_",$oneuser[$i],">",$oneuser[$i],"</a>, ";
};
if (count($oneuser)-1 == $i) {
echo "<a href=http://название сайта.ru/?user_",$oneuser[$i],">",$oneuser[$i],"</a>.";
}


Разве на второй никто не знает ответ? Тут же все гуру PHP! Вы хоть натолкните на мысль, если знаете ответ.

Спустя 2 минуты, 43 секунды (17.12.2011 - 20:10) Joliat написал(а):
Цитата
Ну значит криво у тебя, нарушено главное правило целостности СУБД. Почитай про 6 основных правил, чтобы понимать о чём я говорю.

Вся жизнь кривая, но с этим же не мирятся, а что-то делают!

Скажите как происходит поиск фразы в ячейке с контентом и мне этого должно хватить. Т.к. тут схожие процессы. Я сейчас о втором вопросе!

Спустя 3 минуты, 9 секунд (17.12.2011 - 20:13) inpost написал(а):
В нормальной форме вот так:
SELECT DISTINCT(`id_part`) FROM `table` WHERE `name` = 'Vasya'

А если криво, то ответ очевиден, всё переделать и сделать нормально!

Update: запросик подправил, чтобы уникальных не было, добавил DISTINCT

Спустя 12 минут, 41 секунда (17.12.2011 - 20:25) killer8080 написал(а):
Цитата (Joliat @ 17.12.2011 - 17:30)
Теперь второй вопрос.
Есть таблица вида (упрощенно):

id | user_name
-------------------------
02 | Vasya, Kolya
05 | Petya, Pasha
09 | Vasya

Как извлечь все id, где встречается имя Vasya?

SELECT `id` FROM `table_name` WHERE `user_name` LIKE '%Vasya%'

Спустя 6 минут, 39 секунд (17.12.2011 - 20:32) inpost написал(а):
killer8080
А как же научить человека?! smile.gif Вот будет использовать, так и не выберется из грязи всяких там wordpressov в профессиональное программирование...

Joliat
Вот для прочтения и изучения:
http://ru.wikipedia.org/wiki/%D0%9D%D0%BE%...%80%D0%BC%D0%B0

http://www.google.ru/#sclient=psy-ab&hl=ru...iw=1920&bih=987

P.S. Это даже не "правильная", а просто "нормальная" форма smile.gif

Спустя 2 минуты, 53 секунды (17.12.2011 - 20:35) killer8080 написал(а):
Цитата (inpost @ 17.12.2011 - 19:32)
killer8080
А как же научить человека?!Вот будет использовать, так и не выберется из грязи всяких там wordpressov в профессиональное программирование...

Ты ему предлагаешь wordpress переписать biggrin.gif

Спустя 5 минут, 49 секунд (17.12.2011 - 20:41) inpost написал(а):
killer8080
Я думаю, это какой-то скаченный модуль, который бесплатно выложил Поповский угодник! Типо дополнение, а не ядро самого вордпресса!

Спустя 1 час, 20 минут, 10 секунд (17.12.2011 - 22:01) Joliat написал(а):
inpost, это не чьи-то, а мои собственные доработки, которые, на мой взгляд и потребности, необходимо внести.
killer8080, LIKE - это именно, то что мне было нужно!

Спасибо всем за помощь!

Спустя 2 минуты, 39 секунд (17.12.2011 - 22:04) killer8080 написал(а):
Цитата (Joliat @ 17.12.2011 - 21:01)
inpost, это не чьи-то, а мои собственные доработки, которых, на мой взгляд и потребности, необходимо внести.

ну тогда советую прислушаться к рекомендациям inpost-а, и почитать о нормализации БД.

Спустя 5 минут, 22 секунды (17.12.2011 - 22:09) Joliat написал(а):
В этом определенном случае, я считаю, что правильно поступаю. А вообще, я согласен с Вами.

Я формирую единичные запросы, не нарушая структуры БД WP.

Спустя 5 часов, 50 минут, 24 секунды (18.12.2011 - 03:59) inpost написал(а):
Joliat
Ничего, поработаешь пару лет, уйдет гордыня, научишься правильно программировать smile.gif
Некоторые сразу учатся, некоторым надо много времени smile.gif


_____________
О-о-о-о-о-очень начинающий...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.