2014-09-08 2 views
-4

Мой код создает таблицу в базе данных на основе имени и дате, предоставленной пользователем (представьте, что все значения не повторяются), она создаст базу данных только для первого «пользователя», (Имя вы можете выбрать из раскрывающегося списка), но нет других? может опубликовать другой код sql, но не думаю, что это проблема.Дело, являющееся болью

switch ($Name) { 
    case "Ben": 
     ct($Name, $Date); 
     break; 
    case "Tom": 
     ct($Name, $Date); 
     break; 
    case "Tom": 
     ct($Name, $Date); 
     break; 
    case "Ben": 
     ct($Name, $Date); 
     break; 
    case "Tom": 
     ct($Name, $Date); 
     break; 
    case "Ben": 
     ct($Name, $Date); 
     break; 
    case "Tom": 
     ct($Name, $Date); 
     break; 
    case "Ben": 
     ct($Name, $Date); 
    } 
} 

?> 


<!-- Allows User to who they are --> 
<p>You are: </p><form action="" method="post"> 
<select name="name" id="name"> 
    <option value="RoryRedfearn">Rory Redfearn</option> 
    <option value="ChrisParner">Chris Parner</option> 
    <option value="JamesBarnes">James Barnes</option> 
</select> 

Функция:

function ct($Name, $Date) { 

//Takes inputed data and stores it in variables 
$Car = isset($_POST['car']) ? trim($_POST['car']) :''; 
$Night = isset($_POST['yes']) ? trim($_POST['yes']) :''; 
$Siteid = isset($_POST['siteid']) ? trim($_POST['siteid']) :''; 
$LHA = isset($_POST['stepExample1']) ? trim($_POST['stepExample1']) :''; 
$AAS = isset($_POST['stepExample2']) ? trim($_POST['stepExample2']) :''; 
$LS = isset($_POST['stepExample3']) ? trim($_POST['stepExample3']) :''; 

//Database information 
$dbhost = "localhost"; 
$dbname = "people"; 
$dbusername = "root"; 
$dbpassword = ""; 

//connects to our database 
$link = new PDO("mysql:host=$dbhost;dbname=$dbname","$dbusername","$dbpassword"); 
    $table = "" .$Name. " ". $Date . ""; 

$sql = "CREATE TABLE IF NOT EXISTS `".$table."` (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
Name VARCHAR(20) NOT NULL, 
Car VARCHAR(20) NOT NULL, 
Night VARCHAR(20) NOT NULL, 
Date VARCHAR(20) NOT NULL, 
Siteid VARCHAR(20) NOT NULL, 
LHA VARCHAR(20) NOT NULL, 
AAS VARCHAR(20) NOT NULL, 
LS VARCHAR(20) NOT NULL)"; 

$sq = $link->query($sql); 
//Prepares inputed data for insertion 
$statement = $link->prepare("INSERT INTO $table(Name, Car, Night, Date, Siteid, LHA, AAS, LS) 
VALUES(:Name, :Car, :Night, :Date, :Siteid, :LHA, :AAS, :LS)"); 
try { 
    $statement->execute(array(
    "Name" => $Name, 
    "Car" => $Car, 
    "Night" => $Night, 
    "Date" => $Date, 
    "Siteid" => $Siteid, 
    "LHA" => $LHA, 
    "AAS" => $AAS, 
    "LS" => $LS, 
)); 
} catch(PDOException $e) { 
    echo "Exception caught: $e"; 
} 

} 
+0

Что ваш вопрос? Все это немного расплывчато. – Daan

+0

Мой код создает таблицу в базе данных, основанную на имени и дате, предоставленной пользователем (воображение повторяется все значения arnt), оно создаст базу данных только для первого «пользователя» (имя, которое вы можете выбрать из капли вниз), но нет других? может опубликовать другой код sql, но не думаю, что это проблема. – Dan

+0

и где Бен в вашем выпадающем списке? –

ответ

2

Почему switch если есть еще повторен тот же самый код?

if (in_array($Name, ['Ben', 'Tom']) { 
    ct($Name, $Date); 
} 

Структура базы данных (делать как и все остальные):

[user] 
id | Name | Surname 
    1  Ben  Afflec 
    2  Tom  Gandolfini 

[data] 
    id | UserID | Car | Night | Date 
    1  1  Yes  Yes No 
    2  2  No  Yes No 

Тогда запрос будет легче поддерживать

SELECT Car FROM data WHERE userID IN (1, 2); 
+0

Хорошая идея, спасибо, но все же не ответ, проблемы с созданием таблиц на основе переменной $ name и $ date. – Dan

+1

@Danturnip Итак, если у вас есть 'Ben' как' $ Name', чем вы создаете таблицу с именем «Ben» и с ее данными. Но лучше подумайте, потому что создание новой таблицы для каждого пользователя - плохая идея. Лучше сохранить 'пользователей' в одну и ту же таблицу и' user_data' в другие, добавив 'user_id' в' user_data' таблицу – Justinas

+0

Благодарим вас за предложение, это хорошая идея. Но тогда в таблице у меня будет много повторяющихся полей, например LHA, каждый пользователь должен заполнить это в каждый день 5/6 раз в неделю. Я не получаю много времени для работы над этим проектом, который вы видите, поэтому у меня не так много времени, чтобы настроить/завести голову, связывая все данные. – Dan