Reviews in een database 'taggen'

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Victor-Jan Goemans

Victor-Jan Goemans

29/01/2010 18:30:00
Quote Anchor link
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.
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
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.";
?>


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
 
PHP hulp

PHP hulp

25/12/2024 15:45:53
 
Emmanuel Delay

Emmanuel Delay

31/01/2010 14:10:00
Quote Anchor link
Om eerlijk te zijn, ik snap niets van je code.

Misschien kan je beginnen met je variabelen anders te noemen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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)) {
      ...

?>


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
 



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.