2015-09-22 2 views
-1

Прежде всего, я в настоящее время пытаюсь изучить php, и я решил создать базовое приложение для управления обслуживанием, чтобы лучше понять все, что я вижу в учебниках, и я ударил блокпост. Я пытался заставить это работать после различных обучающих онлайн, но у меня пока не было успеха, поэтому я подумал, что попрошу о помощи здесь. Я очень надеюсь, что ты сможешь мне помочь.Как написать sql-запрос в php, чтобы получить этот результат?

Что я хотел бы знать, как написать php & mysql для записи данных из первых 3 таблиц в нужную таблицу ниже?

Clients 
------------------------------ 
client_id | client_name 
------------------------------ 
    1  | client_1 
------------------------------ 
    2  | client_2 
------------------------------ 
    3  | client_3 


Equipments 
------------------------------ 
eq_id  | eq_name 
------------------------------ 
    1  | pc 
------------------------------ 
    2  | laptop 
------------------------------ 
    3  | printer 


Operations 
------------------------------------------------ 
op_id  | op_desc 
------------------------------------------------  
    1  | dust cleaning 
------------------------------------------------  
    2  | changing processor cooling paste 
------------------------------------------------  
    3  | cpu replacement 
------------------------------------------------  
    4  | display replacement 
------------------------------------------------  
    5  | dvd-rom replacement 
------------------------------------------------  
    6  | ram replacement 
------------------------------------------------  
    7  | cartrige replacement 



Desired_table 
------------------------------------- 
id | client_id | eq_id | op_id | 
------------------------------------- 
    1 | 1  | 1 | 1 | 
------------------------------------- 
    2 | 1  | 1 | 2 | 
------------------------------------- 
    3 | 1  | 1 | 3 | 
------------------------------------- 
    4 | 1  | 1 | 5 | 
------------------------------------- 
    5 | 1  | 2 | 1 | 
------------------------------------- 
    6 | 1  | 2 | 2 | 
------------------------------------- 
    7 | 1  | 2 | 4 | 
------------------------------------- 
    8 | 2  | 1 | 1 | 
------------------------------------- 
    9 | 2  | 1 | 2 | 
------------------------------------- 
    10| 2  | 1 | 3 | 
------------------------------------- 
    11| 2  | 1 | 5 | 
------------------------------------- 
    12| 2  | 3 | 1 | 
------------------------------------- 
    13| 2  | 3 | 7 | 

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

Надеется, что это не получает помечается как слишком широкая тема :)

+0

Это выглядит как домашнее задание вопрос для меня .. ..have вы пытались что-нибудь? – MaggsWeb

+0

# Каладан, вы можете достичь этого с помощью AJAX. –

+0

@MaggsWeb :) Это не домашнее задание. Я бывший бухгалтер, пытающийся узнать что-то новое. У меня был небольшой опыт работы с PHP по созданию тем WP, и я хотел укрепить свои знания. Следовательно, «попытка узнать php» в моем посте. И да, я пытался заставить его работать в течение последних 3-4 дней, и это очень расстраивает. Из-за этого я не могу даже сосредоточиться на своей другой работе. – Kaladan

ответ

0

Используя код из BitBucket это должно сделать это:

$page = $db->prepare(" 
    INSERT INTO new_table_name (column_name1, column_name2, column_name3) 
    VALUES (:col1, :col2, :col3) 
"); 

$page->bindparam(':col1', $value1); 
$page->bindparam(':col2', $value2); 
$page->bindparam(':col3', $value3); 
$page->execute(); 
if($page->rowcount() > 0){ 
    echo "Inserted a new row"; 
} 

Вот пример, замените «new_table_name» к введите имя новой таблицы и измените имена столбцов.

После этого simiply измените $ value1, 2 и 3 на переменные, которые содержат значение, которое вы хотите вставить, и вам хорошо идти.

Если вы хотите узнать, была ли вставка успешной, просто проверьте ее с помощью $ page-> rowcount(). Если rowcount больше 0, это было успешно.

И только для уточнения это называется подготовленным заявлением, если вы еще этого не знаете. Что делает этот код:

  • Подготовить сообщает серверу, что вы планируете делать. Это добавляет очень сильную защиту от слоя, так как базовые sql injection близки к невозможным.

  • После этого вы привязываете переменные к заданным параметрам (возможен другой синтаксис, я просто предпочитаю этот). Код берет котировки, поэтому просто поставьте там параметр.

  • Выполнить фактический запрос

И только для хорошей меры, вы можете добавить 2 дополнительные параметры bindparam. В третьем вы можете определить тип переменной, PDO :: PARAM_STR и PDO :: PARAM_INT заблокировать любую другую переменную off. Четвертый позволяет установить максимальную длину, если переменная больше, она будет заблокирована.

Это будет выглядеть следующим образом:

$page->bindparam(':col1', $value1, PDO::PARAM_STR, 100); 
//block anything which isn't a string or longer than 100 characters 
+0

Я дам ваш ответ выстрелом. Если я смогу это сделать, я буду отмечать его как наиболее полезный – Kaladan

+0

@ Kaladan вот официальная документация, если вам нужна дополнительная помощь, я забыл добавить ее в ответ. [Ссылка] (http://php.net/manual/en/pdo.prepared-statements.php) – Crecket

Смежные вопросы