Nieuw lid |
|
Hallo,
Ik heb een cms in codeigniter(MVC) gebouwd. In het cms heb ik een formulier waarbij er een input is waar tags worden ingevuld. Die tags komen na het submitten van het formulier in de database terecht. Voorbeeldje:
Invoer:
Rpg, ,adventure, mmorpg
Veronderstel dat in de database al de volgende gegevens staan:
tag_id___|__tag_name__|tag_count
1_______|__ action____|2
2_______|__ strategy__| 1
3_______|__mmorpg___|3
Nu moeten rpg en adventure in de database toegevoegd worden
Hiervoor heb ik het volgende stukje code geschreven:
$tagString = strtolower(trim($_POST['tag']));
$tags = explode(",",$tagString);
$uniqueTags = array_unique($tags);
foreach($uniqueTags as $tag){
$query = $this->db->query('SELECT * FROM tag WHERE tag_name = "'.$tag.'"');
$queryResult = $query->result_array();
if($query->num_rows()==0){
if(empty($tag)){
//do nothing
}
else{
$tagInsert = array(
'tag_name' => $tag,
'tag_count' => '1'
);
$this->db->insert('tag', $tagInsert);
$tagID = $this->db->insert_id();
}
}
else{
foreach($queryResult as $tagIDTijdelijk){
$tagID = $tagIDTijdelijk['tag_id'];
}
$this->db->query('UPDATE tag SET tag_count = tag_count + 1 WHERE tag_name = "'.trim($tag).'"');
}
if(empty($tag)){
//do nothing
}
else{
$tagInsert = array(
'item_id' => $itemid,
'tag_id' => $tagID
);
$this->db->insert('item_tag', $tagInsert);
}
}
foreach($uniqueTags as $tag){ $query = $this->db->query('SELECT * FROM tag WHERE tag_name = "'.$tag.'"'); $queryResult = $query->result_array(); if($query->num_rows()==0){ //do nothing } else{ 'tag_name' => $tag, 'tag_count' => '1' ); $this->db->insert('tag', $tagInsert); $tagID = $this->db->insert_id(); } } else{ foreach($queryResult as $tagIDTijdelijk){ $tagID = $tagIDTijdelijk['tag_id']; } $this->db->query('UPDATE tag SET tag_count = tag_count + 1 WHERE tag_name = "'.trim($tag).'"'); } //do nothing } else{ 'item_id' => $itemid, 'tag_id' => $tagID ); $this->db->insert('item_tag', $tagInsert); } }
Het laatste stukje code is om items aan tags te koppelen
Er zijn 2 problemen:
het witte stukje bij de invoer wordt in de database toegevoegd(ik heb hiervoor empty geprobeerd te gebruiken maar dat werkt niet)
En de tag mmorpg komt er nogmaals in(hiervoor heb ik $query->num_rows()==0 gebruikt om ervoor te zorgen dat hij dubbele waardes niet nog eens toevoegd).
kan iemand me helpen
|