2013-05-25 2 views
0

хороший день все, я новый ученик и пытаюсь создать ассоциативный массив для заданий, в которые пользователь вводит идентификатор, название и описание, но это не правильно, можете ли вы помочь мне в этом?ассоциативный массив с веб-формой

Я также хочу искать работу по его названию или описанию и вернуть идентификатор задания,

Большое спасибо

<html> 
<body> 
This form is for storing array of jobs with ID and description for each 
<form method = "post" > 
input job iD <input id="jobid"> 
input jobname <input id="jobname"> 
Write a description <input id="jobdesc"> 
<input type="submit" value="click to store input" > 
</form> 

</body> 
</html> 

<?php 
$jobs_array = array(); 
$jobs_array[] = array ($_POST['jobid'] ,$_POST['jobname'], $_POST['jobdesc']); 
?> 
+0

Я не совсем уверен, что вы имеете в виду - можете ли вы расширить то, что вы ожидаете увидеть? – Farkie

+0

Нет ничего плохого в вашем php, кроме того, что вы создаете сумасшедший многомерный массив, и вы, вероятно, не хотите, большая часть вашей проблемы лежит в вашей разметке формы. – Nick

+0

oh ok ,, а как насчет того, если я хочу добавить несколько заданий? – sisimh

ответ

0

Оптимальной разметке немного к

<html> 
<body> 
    <p>This form is for storing array of jobs with ID and description for each </p> 
    <form action = "<?php echo $_SERVER['PHP_SELF']; ?>" method = "post" > 
     <p><label for = "jobid">input job iD</label> <input type = "text" name = "jobid" id="jobid"></p> 
     <p><label for = "jobname">input jobname</label><input type = "text" name = "jobname" id="jobname"></p> 
     <p><label for = "jobdesc">Write a description</label><input type = "text" name = "jobdesc" id="jobdesc"> 
     <input type="submit" value="click to store input" > 
    </form> 

</body> 
</html> 

<?php 
    $jobs_array = array ($_POST['jobid'] ,$_POST['jobname'], $_POST['jobdesc']); 
?> 

вы можете получить доступ к jobid с $jobs_array[0] сейчас, и так далее.

+0

спасибо за ваш комментарий, ну, я думаю, что часть html в порядке, но php - это то, что не работает ,, правильно ? , пожалуйста, также посоветуйте мне причину, по которой добавлен $ _SERVER ['PHP_SELF']? – sisimh

+0

@RawanNj '$ _SERVER ['PHP_SELF']' просто вычеркивает текущую страницу для использования в качестве страницы отправки для обработки PHP, если вы используете то, что у меня есть, это обязательно должно работать, просто используйте 'echo $ jobs_array [0] 'и т. д., чтобы получить то, что вам нужно от массива. Входы html необходимо, чтобы атрибут name в orber отправлялся правильно – Nick

+0

спасибо, что $ _SERVER ['PHP_SELF'] полезен ... , но как я могу добавить несколько заданий? вот почему я думал, что это должно быть многомерным. Что ты думаешь? – sisimh

0

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

В вашем коде, как показано ниже, вы назначаете значение массиву без ключа, поэтому оно не является ассоциативным. Кроме того, вы добавляете массив в массив, делая его многомерным, что неуместно в этой ситуации.

$jobs_array[] = array ($_POST['jobid'] ,$_POST['jobname'], $_POST['jobdesc']); 

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

$jobs_array = array("job_id" => $_POST['jobid'], "job_name" => $_POST['jobname'], "job_description" => $_POST['jobdesc']); 

Кроме того, причина, почему $ _POST переменные не установлены, потому что вы используете id, а не name. id относится к таблице стилей, тогда как name относится к тому, как можно получить доступ к данным в этом поле.

Для второй части вашего вопроса вам нужно использовать базу данных для хранения заданий, а оттуда вы можете запускать запросы, посредством которых вы можете выполнять поиск по строкам по своему id и возвращать массив Результаты.

+0

Спасибо большое за объяснение да, правые две концепции немного смешались теперь, что означает ассоциативный массив, спасибо @max_ ,,, но могу ли я ввести несколько заданий таким образом? вот почему я пытался сделать его многонациональным, но не уверен, как – sisimh

+0

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

1

Вам не нужно разделять ценности, как

$_POST['jobid'] ,$_POST['jobname'], $_POST['jobdesc'] 

и вложить их в массив. Потому что они изначально сформированы именно так. Когда пользователь отправляет сообщение с несколькими значениями, все эти значения хранятся в супер глобальном массиве $_POST, поэтому вместо разделения и последующего прикрепления их внутри массива просто зависит только от этого, потому что у него есть все, что вам нужно внутри.

$all_arrays = $_POST;

+0

спасибо за ур комментарий ,,, но как это? – sisimh

+0

Я имею в виду, что глобальный '$ _POST' уже содержит внутри него всю необходимую информацию.позже вы можете даже сказать '$ p = $ _POST' и echo out' $ p ['jobname'] 'или' $ p ['jobid'] 'Итак, нет необходимости вставлять все массивы внутри одного большого массива – samayo

+0

cool Я понимаю теперь спасибо – sisimh