Reviews in een database 'taggen'
-reviews: bevat uiteraard alle info van de review zelf, waaronder naam (kolom "album") en ID (kolom "ID" (PRIMARY))
-tags: bevat alle informatie van de tags, bestaat uit twee kolommen, met name de naam van de tag ("tag") en en de ID van de tag ("ID" (PRIMARY))
-reviewTag: bevat 2 kolommen: "reviewID" en "tagID" (beide PRIMARY)
In deze laatste tabel komen dan de ID van de review en de ID van de tag. Zo kan een tag aan een review worden toegewezen. Helaas gebeurt er niets (tabellen reviewTag en tags blijven leeg ,desondanks geen foutmeldingen). Dit is de code.
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
$tags = explode(";",$_POST['tags']);
$count = count($tags);
echo $_POST['tags'];
for ($i=0; $i<$count; $i++)
{
$query = mysql_query("SELECT `ID` FROM `tags` WHERE `tag` = '".$tags[$i]."'") or die(mysql_error());
while($output = mysql_fetch_row($query))
{
if (isset($query))
{
$tagID = mysql_query("SELECT `ID` FROM `tags` WHERE `tag` = '".$tags[$i]."'") or die(mysql_error());
$output = mysql_fetch_assoc($tagID);
mysql_query("INSERT INTO `reviewtag` (reviewID,tagID) VALUES ('".$_POST['ID']."','".$output['tagID']."')") or die (mysql_error());
}
else
{
mysql_query("INSERT INTO `tags` (tag) VALUES ('".$tag[$i]."')") or die (mysql_error());
$tagID = mysql_query("SELECT `ID` FROM `tags` WHERE `tag` = '".$tags[$i]."'") or die(mysql_error);
mysql_query("INSERT INTO `reviewtag` (reviewID,tagID) VALUES ('".$_POST['ID']."','".$tagID."')") or die (mysql_error());
}
}
}
echo "De review is succesvol toegevoegd.";
?>
$tags = explode(";",$_POST['tags']);
$count = count($tags);
echo $_POST['tags'];
for ($i=0; $i<$count; $i++)
{
$query = mysql_query("SELECT `ID` FROM `tags` WHERE `tag` = '".$tags[$i]."'") or die(mysql_error());
while($output = mysql_fetch_row($query))
{
if (isset($query))
{
$tagID = mysql_query("SELECT `ID` FROM `tags` WHERE `tag` = '".$tags[$i]."'") or die(mysql_error());
$output = mysql_fetch_assoc($tagID);
mysql_query("INSERT INTO `reviewtag` (reviewID,tagID) VALUES ('".$_POST['ID']."','".$output['tagID']."')") or die (mysql_error());
}
else
{
mysql_query("INSERT INTO `tags` (tag) VALUES ('".$tag[$i]."')") or die (mysql_error());
$tagID = mysql_query("SELECT `ID` FROM `tags` WHERE `tag` = '".$tags[$i]."'") or die(mysql_error);
mysql_query("INSERT INTO `reviewtag` (reviewID,tagID) VALUES ('".$_POST['ID']."','".$tagID."')") or die (mysql_error());
}
}
}
echo "De review is succesvol toegevoegd.";
?>
Waaraan het ligt weet ik niet, maar ik concludeer wel dat het probleem zich ergens in de while loop afspeelt: ik heb ter controle al geprobeerd iets te echo'en in de loop, maar dat lukte nooit. Misschien kunnen jullie daaruit iets afleiden?
Alvast bedankt!
Gewijzigd op 01/01/1970 01:00:00 door Victor-Jan Goemans
Misschien kan je beginnen met je variabelen anders te noemen.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$query = "SELECT ID FROM tags WHERE tag = '".$tags[$i]."'";
$res = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_row($res)) {
...
?>
$query = "SELECT ID FROM tags WHERE tag = '".$tags[$i]."'";
$res = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_row($res)) {
...
?>
In mysql_query() steek je een query (-string)
Het resultaat van mysql_query() geeft je een resource.
Het resultaat van mysql_fetch_row() geeft je een row.
Zo wordt het voor jezelf misschien wat duidelijker.
Wat probeer je hier te bereiken:
...
while($output = mysql_fetch_row($query))
{
if (isset($query))
...
Als $query NULL is, zie ik niet hoe je ooit binnen in de while zou kunnen komen. Ik zou verwachten dat die isset altijd true terug geeft.
Maar wederom: je maakt het je zelf moeilijk als je variabelen een naam geeft die niet de lading dekt.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay