Я пытаюсь вставить несколько значений в мою базу данных, значения из сценария jQuery, которые генерируют теги при щелчке по пробелу.
Я попытался поместить имя в тег, но он только вставляет в базу данных, последний тег, я хочу вставить все теги.
Здесь мой код
<script type='text/javascript'>
$(window).load(function(){
function closer(){
$('#close').live('click', function() {
$(this).parent().remove();
});
}
$('#tags').keypress(function(e) {
if(e.which == 32) {
var tx = $('#tags').val();
if (tx) {
$(this).val('').parent().before('<li class="tags"><span><input type="hidden" value="'+tx+'" name="tags">'+tx+'</input></span><a style="cursor:pointer;" id="close">[x]</a></li>');
closer();
}
}
});
});
</script>
<?php
include(PATH_MODULE . '/joboffers/view/joboffers_view.php');
//add job offer function
function addjo(){
connect();
addjoview();
//check if the button was clicked
if (isset($_POST['add_jo'])){
if ($_POST['job_category']) {
$job_category = mysql_real_escape_string($_POST['job_category']);
$check1 = 0;
} else {
$check1 = 1;
}
if ($_POST['description']) {
$description = mysql_real_escape_string($_POST['description']);
$check2 = 0;
} else {
$check2 = 1;
}
if ($_POST['job_name']) {
$job_name = mysql_real_escape_string($_POST['job_name']);
$check3 = 0;
} else {
$check3 = 1;
}
if ($_POST['hiring_manager']) {
$hiring_manager = mysql_real_escape_string($_POST['hiring_manager']);
$check4 = 0;
} else {
$check4 = 1;
}
if ($_POST['tags']) {
$tags = mysql_real_escape_string($_POST['tags']);
$check5 = 0;
} else {
$check5 = 1;
}
if ($_POST['localization']) {
$localization = mysql_real_escape_string($_POST['localization']);
$check6 = 0;
} else {
$check6 = 1;
}
if ($_POST['attributes']) {
$attributes = mysql_real_escape_string($_POST['attributes']);
$check7 = 0;
} else {
$check7 = 1;
}
if ($_POST['contract_type']) {
$contract_type = mysql_real_escape_string($_POST['contract_type']);
$check8 = 0;
} else {
$check8 = 1;
}
if ($_POST['professional_exp']) {
$professional_exp = mysql_real_escape_string($_POST['professional_exp']);
$check9 = 0;
} else {
$check9 = 1;
}
//verify if all fields are right
if ($check1 == 0 && $check2 == 0 && $check3 == 0 && $check4 == 0 && $check5 == 0 && $check6 == 0 && $check7 == 0 && $check8 == 0 && $check9 == 0){
$query =("INSERT INTO job_offers (job_category, description, job_name, hiring_manager, tags, localization, attributes, contract_type, profissional_experience) VALUES ('" . $job_category . "','" . $description . "','" . $job_name . "','" . $hiring_manager . "','" . $tags . "', '" . $localization . "', '" . $attributes . "', '" . $contract_type . "', '" . $professional_exp . "')");
db_query($query, '+');
echo "Congratulations! You have been successfully registered in our system.";
} else {
echo "Ops, something went wrong!";
}
}
}
?>
HTML
<form method="POST">
<br>
<label>Job category</label>
<input type="text" name="job_category" maxlength="100" >
<br><br>
<label>Description</label>
<textarea cols="22" rows="3" name="description"></textarea>
<br><br>
<label>Job name</label>
<input type="text" name="job_name" maxlength="130" >
<br><br>
<label>Hiring manager</label>
<input type="text" name="hiring_manager" maxlength="130" >
<br><br>
<label>Tags</label>
<div id="wrapbox">
<div id="box">
<input type="text" id="tags" class="tagstype" maxlength="230">
</div>
</div>
<br><br>
<label>Localization</label>
<input type="text" name="localization" maxlength="130" >
<br><br>
<label>Attributes</label>
<input type="text" name="attributes" maxlength="130" >
<br><br>
<label>Contract type</label>
<input type="text" name="contract type" maxlength="130" >
<br><br>
<label>Professional experience</label>
<input type="text" name="professional_exp" maxlength="130" >
<br><br>
<input name="add_jo" type="submit" />
</form>
Попробуйте изменить это
<input type="hidden" value="'+tx+'" name="tags">
к этому
<input type="hidden" value="'+tx+'" name="tags[]">
Затем, в вашем PHP-коде, сделайте что-то вроде этого
if ($_POST['tags']) {
$tags = mysql_real_escape_string(implode(",", $_POST['tags']));
$check5 = 0;
} else {
$check5 = 1;
}
Это добавит список тэгов, разделенных запятыми, в поле ваших tags
в вашей таблице. Если вы предпочитаете разделять пространство, просто используйте implode(" ", $_POST['tags'])
.
При этом я предлагаю реструктурировать вашу базу данных, чтобы у вас не было столбец tags
в таблице job_offers
. Вместо этого у вас будет таблица job_offer_tags
которая будет иметь id
столбцов, job_id
и tag
, и вы вводите только отдельные теги в столбец tag
.