Woorden met komma scheiden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Olivier

Olivier

04/02/2010 23:15:00
Quote Anchor link
Beste

Graag wens ik een script tag script te maken.
Het systeem is zoals dat van Wordpress en zovele andere websites.
Je schrijft een artikel.. En in een invoerveld vul je de bijhorende tags, gescheiden door een komma, in.

bvb:
phphulp, php boeken, php scripts, php tutorials

Nu, wat zoek ik.
- Een php functie zodat ik de tags apart heb (dus om ze te onderscheiden a.d.h.v. de komma)
- Om vervolgens iedere tag apart in een mysql tabel op te slaan

Dus met als resultaat:
id:1 tag:phphulp
id:2 tag:php boeken
id:3 tag:php scripts
id:4 tag:php tutorials

Kan iemand mij de stap in de goeie richting geven?
Of als er ergens een kant-en-klaar script als voorbeeld te bekijken is, mij hier dan op te wijzen?

Alvast bedank

Mvg
Olivier
 
PHP hulp

PHP hulp

03/10/2022 16:25:22
 
- Jim  -

- Jim -

04/02/2010 23:20:00
Quote Anchor link
Maak eens een opzet, dan kunnen we er op schieten...
http://nl3.php.net/manual/en/
 
Wim E

Wim E

04/02/2010 23:30:00
Quote Anchor link
verder geef je aan dat je het via mysql wil laten doen. Maak daarvoor even een goede database structuur. Het lijkt misschien klein maar kan op een gegeven moment complex worden.

Je kunt bijvoorbeeld voor kiezen om bij artikel (artikelnummer) een (tag_id) en (omschrijving) te maken.
Zorg dat je dan bijv bij het invoeren van die tags zelf al komma's gebruikt. Deze kun je dan exploden op komma's en ieder woord in db proppen:)
 
Kevin de Jong

Kevin de Jong

04/02/2010 23:34:00
Quote Anchor link
Misschien aan de hand van dit stukje kun je instellen dat hij (ipv de * in dit geval) de kommas gebruikt om ze te scheiden

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$ColorsInsert
= '*'.implode('*',$_POST['colors']).'*';
$Query = "INSERT INTO colors VALUES ($ColorsInsert)";
?>

then if you want to search for any colors just SELECT with the LIKE operator:
<?php
$Query
= "SELECT * FROM colors WHERE colors LIKE '%*red*%'";
?>

or if your want several colors;
<?php
$LookingForColors
= array('red','green','yellow');
$WhereClause = "colors LIKE '%*".implode("*%' OR LIKE '%*",$LookingForColors).'*%'";
$Query = "
SELECT * FROM colors WHERE $WhereClause";
?>


[/CODE]
Gewijzigd op 01/01/1970 01:00:00 door Kevin de Jong
 
Olivier

Olivier

04/02/2010 23:42:00
Quote Anchor link
Hoi Jim, Wim & Kevin

Eerst en vooral, om ze op te slaan in de database lijkt de beste manier mij om ze eerst afzonderlijk op te slaan in een array. Daarvoor kwam ik terecht op preg_split.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$str
= 'php hulp, php tutorials, php boeken';
$chars = preg_split('/,/', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
print_r($chars);
?>


Dan kom ik met het volgende resultaat:
Array ( [0] => Array ( [0] => php hulp [1] => 0 ) [1] => Array ( [0] => php tutorials [1] => 9 ) [2] => Array ( [0] => php boeken [1] => 24 ) )

En nu met een foreach, ... (zoek ik nog uit) zal ik de verschillende arrays uitlezen, en afzonderlijk toevoegen aan de database.

Wim

Wat ik van plan is is het volgende:
tabel tags:
tags_id, tags_tag
(zorgen dat iedere tag maar éénmaal voorkomt in de database)

tabel artikeltag
artikeltag_id, artikel_id, tags_id
M.a.w.: Het id van het artikel, met het id van de tag die er bijhoort.
Dus als een artikel 5 tags heeft, dan zijn dat vijf records in de tabel artikeltag.

Alvast bedankt.


Mvg
Olivier
Gewijzigd op 01/01/1970 01:00:00 door Olivier
 
Olivier

Olivier

05/02/2010 00:12:00
Quote Anchor link
Kevin, ik ben even verder gegaan op het jouwe.
En heb zo de fucntie explode gebruikt ipv implode.

Volgens mij heb ik het.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$save_string
= "php boeken, php hulp, php tutorials";
$array = explode(",", $save_string);
print_r($array);
?>


Hetgeen resulteert in:
Array ( [0] => php boeken [1] => php hulp [2] => php tutorials )


En om elke array apart te krijgen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach($array as $tag)
{

echo $tag;
}

?>

I.p.v. de tag te echo'en slaan we hem hier dus op in een database.

Alvast bedankt voor jullie hulp, ik kan verder nu.
Gelieve er mij op te wijzen mocht er een betere manier bestaan.

Mvg
Olivier
 
Wim E

Wim E

05/02/2010 00:14:00
Quote Anchor link
Je hebt sowieso nog een koppeltabel nodig hoor:)
Anders kun je niet meerdere tags aan 1 artikel koppelen...

Dat is wat ik bedoel met normaliseren ;-)
 
Olivier

Olivier

05/02/2010 00:16:00
Quote Anchor link
Hoi Wim

Ik denk dat ik het antwoord daarop hier wel in zal vinden?
http://www.phphulp.nl/php/print/3/426/0/tutorial/

Mvg
Olivier
 
Wim E

Wim E

05/02/2010 00:18:00
Quote Anchor link
hehe idd ;-)
Indien je daarover vragen hebt, stel ze gerust :-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.