За последние 24 часа нас посетили 17546 программистов и 1719 роботов. Сейчас ищут 1794 программиста ...

Подскажите как лучше реализовать

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

  1. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    упаковка - точно так же:
    id - номер записи
    id смены, id человека
    дальше я так понимаю идут номера - это поля типа INT с которыми вы уже знакомы =)

    ну и так далее. Как называть поля - ваше личное дело. Называйте как-нить близко по смыслу какимнить английским словом.

    Последние четыре ведомости можно объединить в одну:
    id записи,
    тип операции - первичная/вторичная. Тоже наверное INT,
    цех - INT
    id смены, id мастера,
    числовые поля.
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Дальше вам нужно придумать как это все будет управляться и использовать, и можно программить или идти к программистам. По готовому техзаданию это будет недорого. Т.к. вам же красивости интерфейса и всякие такие штуки не нужны, думается.

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

    какие-то еще поля нужны? Ну там тип должности, статусы работников? Мастер, старший мастер, "рядовой", ответственный, ляляля... Думайте. Вперед. =) немножко осталось!
     
  3. zarapyan

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

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    Спасибо огромное, за столь подробное описание действий, опираясь на Ваши инструкции создал 18 таблиц, сейчас думаю нужно их отобразить графически что бы нагляднее самому понимать что да как. Еще один вопрос, если у меня в таблице имеется допустим УПАКОВКА и выгрузка со складов, и следующий столбец в таблице с описанием что в это складов включено, можно создать отдельную таблицу, в которую внести описание просто ID- записи и нумерацию складов(второй строкой соответственно)?
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Если я правильно понял, надо действовать как со сменами - отдельная таблица:
    id
    id товара
    номер склада
    количество

    второй строкой не надо вносить.

    соответственно напрашивается таблица с типами товаров.
     
  5. zarapyan

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

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    нет там не типы товара, а количество, отпущенное именно выбранного склада.
    вот пример структуры таблицы Упаковка:

    id int(10) UNSIGNED Нет None auto_increment
    id_smena int(10) UNSIGNED Нет None
    id_masters int(10) UNSIGNED Нет None
    packaging_of int(10) UNSIGNED Нет None
    id_sklad int(10) UNSIGNED Нет None


    и соответственно к ней другая таблица

    id int(10) UNSIGNED Нет None auto_increment
    num_skl int(10) UNSIGNED Нет None

    Так верно?
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    id_masters - это множественное число?

    Упаковка(номер смены, мастер, упаковка всего, упаковки и выгрузки и склада, номера складов от 1 до 11,)

    packaging_of - это у вас все вместе и упаковка всего и упаковки и выгрузки? Я думаю, вы хотели бы чтобы тут было три поля =)

    Двас - вы хотите вести лог отпущенного со склада товара? у вас всегда один и тот же товар? или что там у вас.
    id int(10) UNSIGNED Нет None auto_increment
    num_skl int(10) UNSIGNED Нет None
    в этой таблице у вас только номер склада сохраняется и все. =) Для таких таблиц рекомендую таки-добавить те параметры, которые вы хотите сохранять - ну там, колличество... Дату и время - обязательно. А то потом концов не найдешь. База данных лишнего не сохраняет. Все надо говорить ей =)

    потом.
    int(10) UNSIGNED Нет None
    Это не то что вы хотите =) Вы хотите INT UNSIGNED NOT NULL видимо.
    десяточку в инт не надо писать, если не хотите ее использовать по прямому назначению:

    http://phpclub.ru/mysql/doc/column-types.html
     
  7. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    http://dev.mysql.com/downloads/workbench/5.2.html
     
  8. zarapyan

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

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    нет, так таблица называется masters.

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

    Десятка встает по-умолчанию, думал поставить единицу, или этого будет мало?
     
  9. zarapyan

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

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Нет. Тогда просто не трогайте.
     
  11. zarapyan

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

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    и еще такой вопрос, таблицы между собой нужно связывать? в phpmyadmin есть такая функция
    Внутренние связи1 FOREIGN KEY (INNODB)(либо on delete, либо on update) [/b]
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вы бы лучше сделали бы пока один журнал с человечками на один цех.
     
  13. zarapyan

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

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    Они есть эти журналы

    masters
    id int(1) UNSIGNED Нет None auto_increment
    name varchar(255) utf8_general_ci Нет None
    surname varchar(255) utf8_general_ci Нет None
    post varchar(255) utf8_general_ci Нет None

    и
    smena
    id int(10) UNSIGNED Нет None auto_increment
    id dispatcher int(11) Нет None

    [/i]
     
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я имею в виду целиком. с рабочими страничками на сервере, чтобы добавлялись записи и так далее. вам будет над чем поразмыслить в процессе.
     
  15. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    post varchar(255) - а это кто?
     
  16. zarapyan

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

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    хм... это уже интереснее... только не знаю как.. если не трудно киньте ссылку что можно почитать на эту тему....
     
  17. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    =)

    задавайте вопросы, либо нанимайте программиста. "что-то почитать" можно только по определенному вопросу.
     
  18. zarapyan

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

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    понял, буду формулировать вопросы.... очень хочется самому разобраться как и что делать...
     
  19. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну для начала надо определиться с записью в БД. Потом с выборкой.

    но самое простое с чего стоит начать ДО базы - это страничка такого типа:

    PHP:
    1.  
    2. <form method='post'>
    3.   <input name='test' type='text'><br>
    4.   <textarea name='lalala'> Ляляля жужужу </textarea>
    5. </form>
    6. <?php
    7. if ( isset($_POST['test']) ) {
    8.   echo 'test = ' . $_POST['test'];
    9. } else {
    10.   echo 'нету test';
    11. }
    12. echo "<br>\n";
    13. if ( isset($_POST['lalala']) ) {
    14.   echo 'lalala = ' . $_POST['lalala'];
    15. } else {
    16.   echo 'нету lalala';
    17. }
    18.  
    Если тут у вас нет вопросов - формируйте форму добавления человечков и страницу списка всех работников с их параметрами и должностями и привилегиям и чем там еще.
     
  20. zarapyan

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

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    получилось следующее:
    HTML:
    1.  
    2. <FORM ACTION="file.php" METHOD=POST>
    3. <input name="name" type="text" />Имя<br />
    4.  <input name="surname" type="text" />Фамилия<br />
    5.  <input name="post" type="text" />Должность<br />
    6. <input name="Submit" type=submit value="Отправить">
    7. </FORM>
    8.  
    и
    PHP:
    1.  
    2. <?php
    3.    if ( isset($_POST['name']) ) {
    4.     echo 'name = ' . $_POST['name'];
    5.  } else {
    6.     echo 'нету name';
    7.   }
    8.   echo "<br>\n";
    9.   if ( isset($_POST['surname']) ) {
    10.     echo 'surname = ' . $_POST['surname'];
    11.   } else {
    12.     echo 'нету surname';
    13.   }
    14.   echo "<br>\n";
    15.   if ( isset($_POST['post']) ) {
    16.     echo 'post = ' . $_POST['post'];
    17.   } else {
    18.     echo 'нету post';
    19.   }
    20. ?>
    21.  
     
  21. zarapyan

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

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    Проверил - работает, то есть выводит внесенные данные на отдельный лист
     
  22. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    zarapyan
    Я уже писал
    Возьмите произвольную табличку и сделайте форму которая будет получать данные от пользователя и затем добавлять данные в эту таблицу.
    Отдельно сделать страничку, на которой можно будет увидеть данные из таблицы.
    И последним пунктом изменить первую форму так, чтобы можно было редактировать существующие записи.
     
  23. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    mysql_real_escape_string($_POST['name']) - чтобы вносить в базу данных. желательно обрезать строку до этого момента до нужной длинны, чтобы в базу не лезло всякое лишнее, например пробелы.
    примерно так:
    $_POST['name'] = (string)substr(trim($_POST['name']), 0, 255);

    коннектитесь к БД
    PHP:
    1.  
    2. <?php
    3. $db = new mysqli('127.0.0.1', 'login', 'password', 'DATABASE');
    4.   //debug('Облом!');
    5.   printf("Подключение к серверу MySQL невозможно. Код ошибки: %s\n", mysqli_connect_error());
    6.   exit;
    7. }
    8. ?>
    9.  
    и дальше работаете с этим уже. я люблю формировать куери отдельно заранее. но это не обязательно.

    PHP:
    1.  
    2. <?php
    3. $QUERY = "INSERT INTO masters (`name`,`surname`,`post`)
    4.         VALUES ('".mysql_real_escape_string($_POST['name'])."',
    5.           '".mysql_real_escape_string($_POST['surname'])."',
    6.           '".mysql_real_escape_string($_POST['post'])."')";
    7.  
    8.       if ($result = $db->query($QUERY)) {
    9.         //создана запись о человеке
    10.          echo "добавлен человечек {$_POST['name']} {$_POST['surname']}  -  {$_POST['post']}.<br>\n"
    11.       } else {
    12.         //не прокатило. тут можно сделать запись в лог, и известить юзера о том, что запись не была добавлена.
    13.         echo 'облом, чел!';
    14.       }
    15.  
    селект - выборку списка работников сами осилите? =)
     
  24. zarapyan

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

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    спасибо, буду пробовать
     
  25. zarapyan

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

    С нами с:
    16 апр 2010
    Сообщения:
    52
    Симпатии:
    0
    Попробовал, но что то ошибка выходит
    PHP:
    1.  
    2. <?php class iPDO extends PDO
    3. {
    4.     public function __construct($file = 'db_confige.ini')
    5.     {
    6.         if (!$settings = parse_ini_file($file, TRUE)) throw new exception('Unable to open ' . $file . '.');
    7.        
    8.         try
    9.         {
    10.             $dns = $settings['database']['driver'] .
    11.             ':host=' . $settings['database']['host'] .
    12.             ((!empty($settings['database']['port'])) ? (';port=' . $settings['database']['port']) : '') .
    13.             ';dbname=' . $settings['database']['schema'];
    14.            
    15.             parent::__construct($dns, $settings['database']['username'], $settings['database']['password']);
    16.         }
    17.         catch (Exception $e)
    18.         {          
    19.             echo "Произошла ошибка при связи с базой данных<br>";
    20.             echo "There was an error while connecting to database<br>";
    21.         }
    22.     }
    23. }
    24. //SHOW TABLES FROM map
    25.  
    26.  $QUERY = "INSERT INTO masters (`name`,`surname`,`post`)
    27.          VALUES ('".mysql_real_escape_string($_POST['name'])."',
    28.            '".mysql_real_escape_string($_POST['surname'])."',
    29.            '".mysql_real_escape_string($_POST['post'])."')";
    30.  
    31.         if ($result = $db->query($QUERY)) {
    32.          //создана запись о человеке
    33.           echo "добавлен человечек {$_POST['name']} {$_POST['surname']}  -  {$_POST['post']}.<br>\n"
    34.         } else {
    35.           //не прокатило. тут можно сделать запись в лог, и известить юзера о том, что запись не была добавлена.
    36.           echo 'облом, чел!'; ?>
    37.         }
    38.  
    И ошибка
    Parse error: parse error, expecting `','' or `';'' in C:\WebServer\public\Newjourn\file.php on line 34