Hallo,

Op mijn website moeten bezoekers de mogelijkheid hebben om te reageren om mijn blogs. Ik ondervind problemen met het plaatsen van een reactie omdat ik werk met: ".intval($_GET['ID'])."

Structuur van de website:
Op de index pagina staan maximaal 4 previews van de blogs.
Als je de blog helemaal wilt lezen, dan moet je op een link klikken.

Omdat elke blog een ID heeft en de pagina waarop je de blog kan lezen universeel is, ben ik erachter gekomen, dankzij phphulp.nl dat ik het volgende moest gebruiken.


<a href="blog.php?ID='.$Row['ID'].'"> >> lees meer</a>


Met de onderstaande code vraag ik de juiste blog op uit de database:


# Query uitvoeren
					$Query = 
						("

						SELECT ID, Titel, Author, Date, Preview, Bericht 

						FROM blog 

						WHERE ID = '".intval($_GET['ID'])."' 

						");


In de database worden de reacties niet geordend, om toch de juiste reacties bij de juiste blog te plaatsen, zou ik een Blogid moeten gebruiken.
Bij het opvragen van de reacties onderaan de blog worden dan alleen de juiste reacties gefilterd met:


WHERE ID = '".intval($_GET['ID'])."'


Nu is mijn vraag hoe ik deze intval moet posten in mijn database... want ik gebruik het onderstaande om mijn reacties te plaatsen.


<?PHP

					/* Kijken of er iets gepost wordt. */
					if($_SERVER['REQUEST_METHOD'] == 'POST')
					{
   						 /* Kijken of er op de knop GO wordt geklikt. */
    						if(isset($_POST['Go']))
    						{
								/* Kijken of er een bericht is ingevuld. */
                                						if(isset($_POST['Naam']) && $_POST['Naam'] != '')
                                						{      
									/* Kijken of er een bericht is ingevuld. */
                                							if(isset($_POST['Datum']) && $_POST['Datum'] != '')
                                							{       
										/* Kijken of er een ID is ingevuld.  hier moet dus iets onder... maar wat?!*/
                                								
                                								{  
											/* Kijken of er een bericht is ingevuld. */
                                									if(isset($_POST['Bericht']) && $_POST['Bericht'] != '')
                                									{                                            
                                                            								/* Query uitvoeren om de gegevens in de database te plaatsen. */
                                                            								$cQuery =
                                                            									"
                                                                								INSERT INTO
                                                                    									reacties
                                                                    								(
                                                                        									Naam,
														Date,
														Blogid,
														Bericht
                                                                    								)

                                                                								VALUES
                                                                    								(
                                                                        									'".mysql_real_escape_string($_POST['Naam'])."',
                                                                        									'".mysql_real_escape_string($_POST['Datum'])."',
                                                                        									'".mysql_real_escape_string($_POST['Bericht'])."'
                                                                    								)
                                                            									";
                                                            
                                                            								/* Resultaat van de query. */
                                                            								$cResultaat = mysql_query($cQuery);
                                                            
                                                           								/* Kijken of de query is gelukt. */
                                                            								if(!$cResultaat)
                                                            								{
                                                                								/* Fout opgetreden met invoeren van gegevens. */
                                                                								echo 'Er is een fout opgetreden met het aanmaken van jouw bericht, <a href="javascript: history.go(-1)"class="link_orange">Terug</a>.';
                                                                								exit();
                                                            								}

                                                            								else
                                                            								{                                                  
                                                                								/* Bericht is succesvol aangemaakt. */
                                                                								echo '<p>Bericht succesvol aangemaakt!</p>';
                                                            								}
											}

											else
                                        								{
                                            									/* bericht is niet geldig. */
                                            									echo 'U heeft geen bericht ingevult, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
                                            									exit();
											} 
										}

								else
        									{
            										/* Geen id ingevuld. */
            										echo 'Er is geen ID ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
            										exit();
        									}
								}

        									else
        									{
            										/* Geen Datum ingevuld. */
            										echo 'U heeft geen datum ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
            										exit();
        									}
								}

        							else
        							{
            								/* Geen naam ingevuld. */
            								echo 'U heeft geen Naam ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
            								exit();
        							}
						}

					}

				?> 


Kan iemand mij helpen?
Doe eens single quotes om die $_GET in je query, maak er maar dit van: '".intval($_GET['ID'])."'
Wat gaat er precies fout? Als je query mislukt, geef dan ook de foutmelding eens weer ([php]mysql_error[/php]())?
Mr.Ark schreef op 18.01.2010 01:09
Doe eens single quotes om die $_GET in je query, maak er maar dit van: '".intval($_GET['ID'])."'


Dit heb ik gedaan, maar nog steeds kan ik geen 2de bericht in mijn database posten :S

Blanche schreef op 18.01.2010 09:44
Wat gaat er precies fout? Als je query mislukt, geef dan ook de foutmelding eens weer ([php]mysql_error[/php]())?


De foutmelding is dat hij zegt:
Er is een fout opgetreden met het aanmaken van jouw bericht.

Deze tekst is een gevolg van de code:

/* Resultaat van de query. */
$cResultaat = mysql_query($cQuery);

/* Kijken of de query is gelukt. */
if(!$cResultaat)
{
/* Fout opgetreden met invoeren van gegevens. */
echo '<p>Er is een fout opgetreden met het aanmaken van jouw bericht.</p>';


Dus de query is niet gelukt, maar waarom lukt het wel bij de eerste reactie en niet bij een tweede.?!
Stef schreef op 18.01.2010 12:06
De foutmelding is dat hij zegt:
Er is een fout opgetreden met het aanmaken van jouw bericht.
Dit zegt helemaal niets over wat er nu precies fout is gegaan. Zoals ik in mijn vorige post al zei, gebruik mysql_error() om de foutmelding van de database te achterhalen. Dan ben je waarschijnlijk al een heel stuk wijzer...
Het is niet dat ik PHP als taal ken, ik ben alleen maar aan het beginnen.
Ik heb even wat artikelen over mysql_error() gelezen en ik heb ook al wat uit zitten vogelen, alleen werkt alles wat ik probeer gewoon niet.

Ik weet niet hoe PHP zich precies gedraagt in de code die ik heb.
Ik ga er vanuit dat ik in het onderstaande stukje stukje de error moet zetten,
alleen weet ik niet hoe ik dat zou moeten doen.


<?php
/* Kijken of de query is gelukt. */
if(!$cResultaat)
{
echo '<p>Er is een fout opgetreden met het aanmaken van jouw bericht.</p>';
?>
Als je niet weet hoe functies werken, dan kennen we daar de mooie handleiding van php.net voor. De link voor mysql_error() is eerder al gegeven, dus daar kun je kijken.

In jouw geval zou je zoiets kunnen doen:
<?php
if(!$cResultaat) {
trigger_error(mysql_error());
}
?>
Zie ook: SQL beginnershandleiding.
Probleem zou vast en zeker zijn dat TS geen auto increment heeft aanstaan op z'n ID veld in de database. heb ik gelijk Topic starter?
Dat is ook mijn vermoeden, maar zonder daadwerkelijke foutmelding zal de TS dat nooit zeker weten (tenzij hij uiteraard een auto_increment op die kolom zet).
Er zit een auto increment op de ID van de reacties in de database.
Ik ga dat van Blanche proberen zodra ik weer thuis ben en bij mijn bestanden kan... =]

Als je nu eens rustig begint met de blog dus neit meteen het bericht enzo echoen maar alleen de link om te testen

Doe dan zoiets:

Edit:
Had met mysqli gemaakt is nu gewoon mysql voor je ;)

<?php
// Database connectie maken
include('config.php');

// Alles uit de database halen
$sql = mysql_query('SELECT
						id,
						titel,
						auteur,
						datum,
						preview,
						bericht
					FROM
						blog
					ORDER BY
						id');
								
// Als de query is gelukt
if($sql)
{
	// Als er blogs zijn
	if(mysql_num_rows($sql) > 0)
	{
		// Alle blogs loopen
		while($rec = mysql_fetch_assoc($sql))
		{
			// Link naar de reacties
			echo '<a href="reacties.php?id='.$rec['id'].'">Lees blog helemaal plus zijn reacties</a>';
		}
	}
	// Anders
	else
	{
		// Geen blogs
		echo 'Er zijn momenteel nog geen blogs.';
	}
}
// Anders
else
{
	// MySql error
	echo 'Er is een fout opgetreden met de query: <br />';
	echo mysql_error();
}
?>


En dan op reacties.php


<?php
// Database connectie maken
include('config.php');

/*
---- De blog
*/

// Alles uit de database halen
$sql = mysql_query('SELECT
						id,
						titel,
						auteur,
						datum,
						bericht
					FROM
						blog
					WHERE
						id = "'.intval($_GET['id']).'"
					');
								
// Als de query is gelukt
if($sql)
{
	// Als er blogs zijn
	if(mysql_num_rows($sql) > 0)
	{
		// Alle blogs loopen
		while($rec = mysql_fetch_assoc($sql))
		{
			// Link naar de reacties
			echo 'Hier komt die blog <br />';
		}
	}
	else
	{
		echo 'Er zijn momenteel nog geen blogs.';
	}
}
else
{
	echo 'Er is een fout opgetreden met de blog query: <br />';
	echo mysql_error();
}

/*
---- De reacties
*/

// Alles uit de database halen
$sql = mysql_query('SELECT
						id,
						blog_id,
						auteur,
						datum,
						bericht
					FROM
						reacties
					WHERE
						blog_id = "'.intval($_GET['id']).'"
					');
								
// Als de query is gelukt
if($sql)
{
	// Als er blogs zijn
	if(mysql_num_rows($sql) > 0)
	{
		// Alle blogs loopen
		while($rec = mysql_fetch_assoc($sql))
		{
			echo 'Zorg dan dat hier de reacties komen.';
		}
	}
	else
	{
		echo 'Er zijn momenteel nog geen reacties op deze blog.';
	}
}
else
{
	echo 'Er is een fout opgetreden met de reactie query: <br />';
	echo mysql_error();
}
?>

Reageren