Omdat dit voor verschillende zaken handiger was heb ik mijn tagmethode omgegooid naar de volgende: in plaats van een tabel "reviews" en een tabel "tags" die zowel de tags en bijbehorende review bevatte, heb ik nu 3 tabellen:

-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.

<?
					$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!
Om eerlijk te zijn, ik snap niets van je code.

Misschien kan je beginnen met je variabelen anders te noemen.

<?php
$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.


Reageren