Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Организовать логику кода
 
 автор: wtf bro   (28.11.2013 в 18:48)   письмо автору
 
 

Мне не удаётся организовать логику кода, прошу вашей помощи

Хочу сделать одну переменную как контейнер, то есть она будет принимать несколько разных значений которые я буду заносить в БД, пускай это будет LOGIN и NAME. По условию мы LOGIN принимаем на нашу переменную data первым и заносим его в БД в колонку login. Так же заносим и ip клиента из переменной IP, он будет идти как primary key. Дальше если этот IP есть, то тогда переменная data приняла не LOGIN, а NAME и его следует занести в колонку name. По условию login, name и данный IP должны быть в одной строке.

Если схематично, то работа скрипта должна выглядеть так:

- заносим login из переменной data и IP из переменной ip в БД (это просто, эта часть кода есть)
$check1 = @ mysql_query ( "INSERT INTO `id` ( IP, login ) VALUES( $ip, $data)");


- если IP есть в БД, то переменная data приняла name (а не login как в первый раз)

Я знаю и понимаю что это глупо, проще и рациональней сделать сессию и две переменных

Как такое реализовать?

  Ответить  
 
 автор: confirm   (28.11.2013 в 19:18)   письмо автору
 
   для: wtf bro   (28.11.2013 в 18:48)
 

Рассказано, что не понять что к чему
IP не всегда есть, и по нему первичный ключ.... И что значит По условию login, name и данный IP должны быть в одной строке.?

А вообще то, кто вам мешает получать то что есть пересечениями массивов? Допустим у вас имена полей формы имеют какие вам вздумается значения, допустим "log' и 'nam'. Есть массив описывающий имена полей сопоставленный ключами с полями формы. Тогда:

<?
$fields 
= array('ip'=>'user_ip''nam'=>'user_name''log'=>'user_login');
if(isset(
$ip)) $_POST + + array('ip'=>$ip);
$fields implode(','array_intersect_key($ields$_POST));
$values '"'.implode('","'array_map('mysql_real_escape_string'$_POST)).'"';
$sql 'INSERT INTO tbl ('.$fields.') VALUES ('.$values.')'


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

  Ответить  
 
 автор: wtf bro   (28.11.2013 в 22:59)   письмо автору
 
   для: confirm   (28.11.2013 в 19:18)
 

Я извиняюсь что описал суть вопроса как колхоз, а фраза "По условию login, name и данный IP должны быть в одной строке", означает что в БД данные от одного пользователя должны быть такого вида: IP|name|login . Я просто не могу на профессиональном уровне объяснить это красиво и правильно

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

  Ответить  
 
 автор: confirm   (28.11.2013 в 23:30)   письмо автору
 
   для: wtf bro   (28.11.2013 в 22:59)
 

>в БД данные от одного пользователя должны быть такого вида: IP|name|login

Это еще хуже, чем объяснение. Выбросите эту идею сразу в помойку и храните каждое из этого в отдельном поле таблицы.

А я разве вам говорил, что приведенный мной пример показывает прием POST данных из многочисленных форм? Вы даже, если бы захотели, не смогли бы получить в массиве POST одновременно данные из нескольких форм.

  Ответить  
 
 автор: Sfinks   (28.11.2013 в 23:43)   письмо автору
 
   для: confirm   (28.11.2013 в 19:18)
 

[OFFTOP]
> $_POST + + array('ip'=>$ip);
А что это значит? Я первый раз такую конструкцию вижу.....

  Ответить  
 
 автор: confirm   (28.11.2013 в 23:56)   письмо автору
 
   для: Sfinks   (28.11.2013 в 23:43)
 

Да вот сам первый раз увидел :) Лишний плюс не заметил.

  Ответить  
 
 автор: Sfinks   (29.11.2013 в 00:04)   письмо автору
 
   для: confirm   (28.11.2013 в 23:56)
 

Тьфу! Я думал что-то новое =)

  Ответить  
 
 автор: Sfinks   (28.11.2013 в 23:47)   письмо автору
 
   для: wtf bro   (28.11.2013 в 18:48)
 

INSERT INTO `id` ( IP, login ) VALUES( $ip, $data)
ON DUPLICATE KEY UPDATE name = VALUES(login)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования