Люди, дайте ПРАКТИЧЕСКИЙ совет пожалуйста. в форме с помощью скрипта реализовано добавление блока идентичных полей по желанию пользователя (например как тут - http://art.orabote.dn.ua/resume/) <input name="income[]" value="" type="text"> как реализовать внесение данных в отдельную базу, каждый блок в отдельную сроку с id пользователя, если пользователь заполнил например три идентичных блока?
есть еще непонятная проблемка... при заполнении больше чем одного "блока" в базе дублируется одна и таже строка 8 раз под разными id 107 01.08.2009 01.10.2002 Программист ДГМА 106 01.08.2009 01.10.2002 Программист Ж/д техникум 105 01.08.2009 01.10.2002 Инженер-физик ДГМА 104 01.08.2009 01.10.2002 Инженер-физик Ж/д техникум 103 01.08.2009 01.08.2009 Программист ДГМА 101 01.08.2009 01.08.2009 Инженер-физик ДГМА 102 01.08.2009 01.08.2009 Программист Ж/д техникум 100 01.08.2009 01.08.2009 Инженер-физик Ж/д техникум 99 01.10.2002 01.10.2002 Программист ДГМА .................................................................... вот мой код include ("../block/bd.php"); if (isset($_POST['income'])) { $income = $_POST['income'];} if (isset($_POST['end'])) { $end = $_POST['end'];} if (isset($_POST['specialty'])) { $specialty = $_POST['specialty'];} if (isset($_POST['school'])) { $school = $_POST['school'];} foreach($_POST['income'] AS $income) foreach($_POST['end'] AS $end) foreach($_POST['specialty'] AS $specialty) foreach($_POST['school'] AS $school) $result2 = mysql_query ("INSERT INTO job_edu (income,end,specialty,school) VALUES('$income','$end','$specialty','$school')");
АХРЕНЕТЬ! По теме: Автор, читайте книжки по теории баз данных, логике хранения и сортировки данных. Вам нужно сделать отдельную таблицу, для хранения повторяющихся данных. Хранить их в отдельной таблице вместе с id записи основной таблицы, а потом забирать по id все повторяющиеся данные, склеивать их и выдавать пользователю. Либо можно сразу склеить и хранить как строку их. Только такой подход не совсем правилен.
Я хренею, зачем эта вся информация была и показуха.... у меня и есть ОТДЕЛЬНАЯ таблица для записи повторяющихся данных вместе с id записи основной таблицы. У меня был конкретный вопрос. Почему при занесении повторяющихся данных дублируються строки???
Elkaz, Я догадываюсь об этом foreach($_POST['income'] AS $income) foreach($_POST['end'] AS $end) foreach($_POST['specialty'] AS $specialty) foreach($_POST['school'] AS $school) подскажите как правильно это написать?
serj011 Я просто наглядно показал ваше положение относительно задачи. Что такое таблица job_edu? Я правильно понимаю, что это образовательное учреждение, которое закончил соискатель работы? А так как этих учреждений несколько, то и записей несколько. PHP: <?php // здесь опустил проверки переменных типа if (isset($_POST['income']))... // кстати, что, если одно из полей пустое? будете пустоту вносить в базу? А что, если все поля пустые? // $unemployed_id - это уникальный идентификатор соискателя работы (а иначе каким образом вы собираетесь соотносить данные об учёбе и определённого соискателя?) // $start - это дата начала обучения, потому что $income переводится как "доход", а это очень сбивает с толку. $c = count($_POST['start']); for ($i = 0; $i < $c; $i++) { $result2 = mysql_query ("INSERT INTO job_edu (unemployed_id, start, end, specialty, school) VALUES($unemployed_ud, '$start[$i]', '$end[$i]', '$specialty[$i]', '$school[$i]')"); } Если вы используете вот это: HTML: <input name="start[]" value="" type="text"> то в $_POST['start'] будет массив, который будет пронумерован от 0 и выше. Соответственно размер массивов start[], end[], specialty[] и school[] должен быть одинаков (ведь пользователь заполняет все поля для каждого учреждения). Итого, у вас получится по одной записи на каждое учреждение каждого пользователя (учился дядя Вася в двух школах, техникуме и ВУЗе, значит на него будет внесено 4 строки с разными id, но с одинаковыми unemployed_id, что есть внутренний id дяди Васи у вас в системе). Так что вытаскивая информацию по дяде Васе просто сделайте запрос вытащить все записи из job_edu, где unemployed_id такой же как у дяди Васи. Получите 4 строки, каждую из которых нужно будет отформатировать и выдать потенциальному работодателю в лучшем свете. Вот.
Все вы правильно понимаете, это конечно только первые шаги в коде, будет и проверка на пустые поля и уникальный идентификатор соискателя работы и др. у меня на этой стадии вопрос то совсем в другом, у меня заносятся данные, только при добавлении более одного учебного заведения дублируются... Elkaz написал скорее всего верно, что у меня там 4 вложенных цикла, как мне правильно подкорректировать свой код? Elkaz, вот без обид, одного не понимаю, если вы прочитали сообщение и знаете в чем ошибка, неужели так тяжело написать как исправить????????? или просто нужно засветиться в посте, типа я тут самый-самый все знаю ну ничего никому не скажу if (isset($_POST['income'])) { $income = $_POST['income'];} if (isset($_POST['end'])) { $end = $_POST['end'];} if (isset($_POST['specialty'])) { $specialty = $_POST['specialty'];} if (isset($_POST['school'])) { $school = $_POST['school'];} foreach($_POST['income'] AS $income) foreach($_POST['end'] AS $end) foreach($_POST['specialty'] AS $specialty) foreach($_POST['school'] AS $school) $result2 = mysql_query ("INSERT INTO job_edu (income,end,specialty,school) VALUES('$income','$end','$specialty','$school')");
PHP: <? for ($=0; $i < count($_POST['income']); ++$i) { $total .= "Номер $i имеет доход {$_POST['income'][$i]}, конец длинной {$_POST['end'][$i]} см, работает {$_POST['specialty'][$i]}, и при этом даже не закончил {$_POST['school'][$i]} школу.<br>\n"; } echo $total;
serj011 я думаю вам просто стоит перечитать мой ответ. Возможно несколько раз. Я там ответил почему у вас несколько записей и почему так должно быть. И даже как этим пользоваться... нужно лишь прочитать.
Johnatan, спасибо за помошь, не до конца понял суть кода, но сделал просто сбил с толку совет с foreach($_POST['income'] AS $income), это в каких то других случаях применятся?