Tag-systeem - tags koppelen aan een artikel & in de database steken
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?
$tags = explode(";",$_POST['tags']);
$count = count($tags);
for ($i=0; $i<=$count; $i++)
{
$check = mysql_query("SELECT `tag` FROM `tags` WHERE `tag` = '".$tags[$i]."'") or die(mysql_error);
echo $tags[$i];
while($output = mysql_fetch_assoc($check))
{
$tel = mysql_real_escape_string(mysql_num_rows($check));
if ($tel > 0)
{
$articles = $output['articles'] . ";" . $_POST['ID'];
mysql_query("UPDATE `tags` SET articles='".$articles."' WHERE `tag` = '".mysql_real_escape_string($_POST['tags'])."'") or die(mysql_error);
}
else
{
$id = mysql_query("SELECT `ID` FROM `album` WHERE `album` = '".mysql_real_escape_string($_POST['album'])."' AND `band` = '".mysql_real_escape_string($_POST['album'])."' AND `auteur` = '".mysql_real_escape_string($_POST['auteur'])."'") or die(mysql_error);
while ($output = mysql_fetch_assoc($id))
{
$idoutput = $output['ID'];
echo $idoutput;
$tags = explode(";",$_POST['tags']);
$count = count($tags);
for ($i=0; $i<=$count; $i++)
{
mysql_query("INSERT INTO `tags` (tag,type,articles) VALUES ('".mysql_real_escape_string($tags[$i])."','".$type."','".$idoutput."')") or die(mysql_error());
}
}
}
?>
$tags = explode(";",$_POST['tags']);
$count = count($tags);
for ($i=0; $i<=$count; $i++)
{
$check = mysql_query("SELECT `tag` FROM `tags` WHERE `tag` = '".$tags[$i]."'") or die(mysql_error);
echo $tags[$i];
while($output = mysql_fetch_assoc($check))
{
$tel = mysql_real_escape_string(mysql_num_rows($check));
if ($tel > 0)
{
$articles = $output['articles'] . ";" . $_POST['ID'];
mysql_query("UPDATE `tags` SET articles='".$articles."' WHERE `tag` = '".mysql_real_escape_string($_POST['tags'])."'") or die(mysql_error);
}
else
{
$id = mysql_query("SELECT `ID` FROM `album` WHERE `album` = '".mysql_real_escape_string($_POST['album'])."' AND `band` = '".mysql_real_escape_string($_POST['album'])."' AND `auteur` = '".mysql_real_escape_string($_POST['auteur'])."'") or die(mysql_error);
while ($output = mysql_fetch_assoc($id))
{
$idoutput = $output['ID'];
echo $idoutput;
$tags = explode(";",$_POST['tags']);
$count = count($tags);
for ($i=0; $i<=$count; $i++)
{
mysql_query("INSERT INTO `tags` (tag,type,articles) VALUES ('".mysql_real_escape_string($tags[$i])."','".$type."','".$idoutput."')") or die(mysql_error());
}
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Victor-Jan Goemans
1. Gebruik eens een keer een komma. Het is nu 1 grote lap tekst, en niet iedereen zoekt daar aan te beginnen met lezen. Wat dus minder hulp voor jou betekend.
2. Zet even php tags om je code heen. Dan krijg je color coding, wat een stuk gemakkelijker leest.
edit: Antwoorden op jou vraag
1. Je wilt hier $output['articles'] kolom articles op halen, terwijl je in je sql hier SELECT `tag` FROM `tags` alleen maar tag toestaat om op te halen.
2. Verder zet je in de variable $articles het volgende (er even vanuit gaande dat er in $output['articles'] de naam en $_POST['id'] het tagid zitten).
Dan krijg je dit: tagnaam;1tagnaam;2tagnaam3, terwijl je in je bovenstaande post dit wil: tagnaam1;tagnaam2;tagnaam3;
Je moet dus dit: $articles = $output['articles'] . ";" . $_POST['ID'];
vervangen door: $articles = $output['articles'] . $_POST['ID'] . ";";
3. Je gebruikt bij de insert wel de $_POST['tags'] var, en bij de update helemaal niet. Dan gebruik je weer de $output[''articles']. Foutje?
4. Verder hoeft mysql_real_escape_string niet om mysql_num_rows aangezien deze data al veilig is. (Dit doordat dit getal door het database wordt genereerd).
Nou ja, ik hoop dat het iets duidelijker is nu! :)
Gewijzigd op 01/01/1970 01:00:00 door Davy Jansen
Even over dat eerste:
1. Bedoel je misschien alinea's? Het is inderdaad een hele hoop tekst onder mekaar, maar komma's staan er toch wel in.
2. Done, zal er aan denken in het vervolg.
On topic:
1. Juist, bedankt!
2. Nope, in $output['articles'] zitten alleen ID's.
3. Bij de UPDATE gebruik ik niet de $output['articles'], maar de var $articles ($articles = $output['articles'] . ";" . $_POST['ID'];). Ik wil de gegevens namelijk niet overschrijven, maar ik wil de nieuwe gegevens erbij voegen. $output['articles'] zijn de oude gegevens, met een ";" tussen worden de nieuwe er achtergevoegd.
4. Klopt.
Erg bedankt, ik zal even kijken of het nu werkt. :)
Edit: toch nog niet helemaal. Hier is een screenshot van phpMyAdmin.
1. Tussen elke tag wordt een lege tag ge-insert?
2. De UPDATE werkt blijkbaar niet, als de tag al in de database staat moet in de row van die tag het veld 'articles' veranderd worden van bv. 1 naar 1;2. In plaats van een nieuwe row te starten met dezelfde tag.
P.S.: de records in de database zijn allemaal tests, de namen etc. slaan dus meestal op niets.
Gewijzigd op 01/01/1970 01:00:00 door Victor-Jan Goemans