За последние 24 часа нас посетили 203140 программистов и 2212 роботов. Сейчас ищут 1678 программистов ...

занесение данныз в базу

Тема в разделе "PHP для новичков", создана пользователем serj011, 11 ноя 2010.

  1. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Люди, дайте ПРАКТИЧЕСКИЙ совет пожалуйста.

    в форме с помощью скрипта реализовано добавление блока идентичных полей по желанию пользователя (например как тут - http://art.orabote.dn.ua/resume/)

    <input name="income[]" value="" type="text">

    как реализовать внесение данных в отдельную базу, каждый блок в отдельную сроку с id пользователя, если пользователь заполнил например три идентичных блока?
     
  2. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    foreach($_POST['income'] AS $income)
    mysql_query('insert ....
     
  3. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    СПАСИБО
     
  4. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    есть еще непонятная проблемка...
    при заполнении больше чем одного "блока" в базе дублируется одна и таже строка 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')");
     
  5. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    АХРЕНЕТЬ!

    По теме:
    Автор, читайте книжки по теории баз данных, логике хранения и сортировки данных. Вам нужно сделать отдельную таблицу, для хранения повторяющихся данных. Хранить их в отдельной таблице вместе с id записи основной таблицы, а потом забирать по id все повторяющиеся данные, склеивать их и выдавать пользователю.

    Либо можно сразу склеить и хранить как строку их. Только такой подход не совсем правилен.
     
  6. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Я хренею, зачем эта вся информация была и показуха.... у меня и есть ОТДЕЛЬНАЯ таблица для записи повторяющихся данных вместе с id записи основной таблицы. У меня был конкретный вопрос. Почему при занесении повторяющихся данных дублируються строки???
     
  7. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Изыди!

    serj011
    Потому что у вас там 4 вложенных цикла :)
     
  8. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Elkaz, Я догадываюсь об этом:)

    foreach($_POST['income'] AS $income)
    foreach($_POST['end'] AS $end)
    foreach($_POST['specialty'] AS $specialty)
    foreach($_POST['school'] AS $school)

    подскажите как правильно это написать?
     
  9. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    serj011
    Я просто наглядно показал ваше положение относительно задачи.

    Что такое таблица job_edu? Я правильно понимаю, что это образовательное учреждение, которое закончил соискатель работы? А так как этих учреждений несколько, то и записей несколько.

    PHP:
    1. <?php
    2. // здесь опустил проверки переменных типа if (isset($_POST['income']))...
    3. // кстати, что, если одно из полей пустое? будете пустоту вносить в базу? А что, если все поля пустые?
    4. // $unemployed_id - это уникальный идентификатор соискателя работы (а иначе каким образом вы собираетесь соотносить данные об учёбе и определённого соискателя?)
    5. // $start - это дата начала обучения, потому что $income переводится как "доход", а это очень сбивает с толку.
    6. $c = count($_POST['start']);
    7. for ($i = 0; $i < $c; $i++) {
    8. $result2 = mysql_query ("INSERT INTO job_edu (unemployed_id, start, end, specialty, school) VALUES($unemployed_ud, '$start[$i]', '$end[$i]', '$specialty[$i]', '$school[$i]')");
    9. }
    10.  
    Если вы используете вот это:
    HTML:
    1. <input name="start[]" value="" type="text">
    то в $_POST['start'] будет массив, который будет пронумерован от 0 и выше. Соответственно размер массивов start[], end[], specialty[] и school[] должен быть одинаков (ведь пользователь заполняет все поля для каждого учреждения).

    Итого, у вас получится по одной записи на каждое учреждение каждого пользователя (учился дядя Вася в двух школах, техникуме и ВУЗе, значит на него будет внесено 4 строки с разными id, но с одинаковыми unemployed_id, что есть внутренний id дяди Васи у вас в системе). Так что вытаскивая информацию по дяде Васе просто сделайте запрос вытащить все записи из job_edu, где unemployed_id такой же как у дяди Васи. Получите 4 строки, каждую из которых нужно будет отформатировать и выдать потенциальному работодателю в лучшем свете.

    Вот.
     
  10. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Все вы правильно понимаете, это конечно только первые шаги в коде, будет и проверка на пустые поля и уникальный идентификатор соискателя работы и др.:)

    у меня на этой стадии вопрос то совсем в другом, у меня заносятся данные, только при добавлении более одного учебного заведения дублируются... 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')");
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    PHP:
    1. <?
    2. for ($=0; $i < count($_POST['income']); ++$i) {
    3.   $total .= "Номер $i имеет доход {$_POST['income'][$i]}, конец длинной {$_POST['end'][$i]} см, работает {$_POST['specialty'][$i]}, и при этом даже не закончил {$_POST['school'][$i]} школу.<br>\n";
    4. }
    5. echo $total;
     
  12. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    serj011
    я думаю вам просто стоит перечитать мой ответ. Возможно несколько раз. Я там ответил почему у вас несколько записей и почему так должно быть. И даже как этим пользоваться... нужно лишь прочитать.
     
  13. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Johnatan, спасибо за помошь, не до конца понял суть кода, но сделал:)

    просто сбил с толку совет с foreach($_POST['income'] AS $income), это в каких то других случаях применятся?