login  Naam:   Wachtwoord: 
Registreer je!
 Forum

duplicate gegevens (Opgelost)

Offline BaddyZ - 09/04/2009 12:55
Avatar van BaddyZNieuw 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:

  1. $tagString = strtolower(trim($_POST['tag']));
  2. $tags = explode(",",$tagString);
  3. $uniqueTags = array_unique($tags);
  4.  
  5. foreach($uniqueTags as $tag){
  6. $query = $this->db->query('SELECT * FROM tag WHERE tag_name = "'.$tag.'"');
  7. $queryResult = $query->result_array();
  8.  
  9. if($query->num_rows()==0){
  10.  
  11. if(empty($tag)){
  12. //do nothing
  13. }
  14. else{
  15. $tagInsert = array(
  16. 'tag_name' => $tag,
  17. 'tag_count' => '1'
  18. );
  19. $this->db->insert('tag', $tagInsert);
  20. $tagID = $this->db->insert_id();
  21. }
  22.  
  23.  
  24. }
  25.  
  26. else{
  27. foreach($queryResult as $tagIDTijdelijk){
  28. $tagID = $tagIDTijdelijk['tag_id'];
  29. }
  30. $this->db->query('UPDATE tag SET tag_count = tag_count + 1 WHERE tag_name = "'.trim($tag).'"');
  31.  
  32. }
  33.  
  34. if(empty($tag)){
  35. //do nothing
  36. }
  37. else{
  38. $tagInsert = array(
  39. 'item_id' => $itemid,
  40. 'tag_id' => $tagID
  41. );
  42. $this->db->insert('item_tag', $tagInsert);
  43. }
  44.  
  45.  
  46. }


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 

2 antwoorden

Gesponsorde links
Offline Koen - 09/04/2009 13:13
Avatar van Koen PHP expert Probleem 1:
Je loopt door de array met tags en dan kijk je of de tag al dan niet leeg is, indien dit niet het geval is, voegt hij die waarde toe aan een nieuwe array 
  1. $aUnique = array();
  2. foreach($uniqueTags as $iKey => $sValue)
  3. {
  4. $sValue = trim($sValue);
  5. if(!empty($sValue)
  6. {
  7. $aUnique[] = $sValue;
  8. }
  9. }


Ik snap je tweede probleem niet helemaal..?
Offline BaddyZ - 09/04/2009 13:30 (laatste wijziging 09/04/2009 13:43)
Avatar van BaddyZ Nieuw lid Kheb
  1. $tag = trim($tag);
  2.  
  3. if($query->num_rows()==0){
  4.  
  5. if($tag = ''){
  6.  
  7. gebruikt en de code werkt:)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.297s