Archief - php: mysql_query() error

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

killer bel

Legacy Member
:( ik begin me onderhand te schamen voor al mijn prob met php

met mijn script zeg ik dat als je op de één of andere manier toch op forum2.php bent gekomen zonder eerst langs forum.php te gaan dat ik terug moet gaan met een link naar forum.php

nu als ik toch op forum.php ben en zonder iets in te vullen toch op submit druk was mijn bedoeling dat je die link ook zou krijgen...maar dat is dus niet ik krijg dus gewoon een leeg vakje.

hoe doe ik nu dat als iemand bv niets invuld die link toch te zien zal krijgen?

DarkBone

Legacy Member
PHP:
if (!isset($_POST) || $_POST['naam'] == '' || $_POST['bericht'] == '')
{
     echo 'Ga terug';
}
Logisch toch? Gewoon kijken of ze leeg zijn of niet. De || is een OR.

killer bel

Legacy Member
eerlijk gezegd voor mij is het niet logisch.

alles behalve isset en || (kan je de volledige naam geven?) snap ik alles wel

kan je mss een beetje uitleg geven wat isset doet?

DarkBone

Legacy Member
isset controleert of een variabele bestaat
http://be2.php.net/isset

|| spreek je uit als 'or', dat wil zeggen als 1 van de twee (of meer) expressies waar is, dan wordt het uitgevoerd
http://www.php.net/manual/nl/language.operators.logical.php

Zo'n dingen als isset kunt ge heel makkelijk terugvinden in de officiële referentie hé. Gewoon www.php.net/ typen met hetgeen ge zoekt erachter. Zo dus bijvoorbeeld: http://www.php.net/mysql_connect
Ik zeg nu nie da ge rap die ||ging gevonden hebben, want dan moet ge al weten dat zoiets een operator heet, meerbepaald een logische operator. Daarom dat ge beter eerst de basis goed leert kennen door de eerste twee hoofdstukken van de manual door te nemen:
http://www.php.net/manual/nl/

De uitroepteken die ge ziet staan zorgt voor een negatie, dus als hetgeen erachter staat waar is, dan zal het onwaar worden omdat je er een uitroepteken voor gezet hebt.

killer bel

Legacy Member
aah ja ok, ik snap het. dus je eigelijk kan je er bv ook dit van maken.


PHP:
if ($_POST['bericht'] == ' ') 
{ 
     echo 'Ga terug'; 
}

of

PHP:
if ($_POST['naam'] == ' ') 
{ 
     echo 'Ga terug'; 
}

maar dan kan je 1 van de twee leeg laten dus is jouw methode beter

weer eens wat bijgeleerd
thanks :niceone:

DarkBone

Legacy Member
Ja inderdaad, maar da's nogal basis zoiets :D

*edit*
Euh, sorry, ik interpreteerde uw conclusie verkeerd, in uw geval kunt ge ook geen veld leeg laten, hij zal altijd wel iets afprinten, mijne is gewoon korter en ge moet geen twee keer hetzelfde schrijven.

killer bel

Legacy Member
I know, maar ja je moet eerst de basis kennen voor je verder gaat hé

killer bel

Legacy Member
ik weet niet wat het is ik heb exact dezelfde code ingevoerd die jij me hebt gegeven en en maar niet willen hé.

Maakt het soms uit waar je dat zet? waarschijnlijk wel. Ik heb onder mysql_connect en mysql_select_db gezet.

killer bel

Legacy Member
PHP:
<?php 
    mysql_connect('localhost', 'user', 'pass'); 
    mysql_select_db('leden'); 
	
	if (!isset($_POST) || $_POST['naam'] == ' ' || $_POST['bericht'] == ' ')
	{
		echo 'Je moet eerst alle velden invullen <a href="forum.php">klik hier om terug te gaan</a>';
	}
    if (empty($_POST))
    {
        echo 'Ga terug <a href="forum.php">terug</a>';
    }
    else
    { 
        $query .= "INSERT INTO forum (naam, bericht) "; 
        $query .= "VALUES ('"; 
        $query .= $_POST['naam'] . "','"; 
        $query .= $_POST['bericht'] . "');"; 
        $result = mysql_query($query) or die (mysql_error()); 
	}	
	$query = "SELECT * FROM forum";
	$result = mysql_query($query) or die (mysql_error());
        
        while ($rij = mysql_fetch_array($result)){
		echo '<table width="300" border="5">'; 
            echo '<tr><td>' . $rij['naam'] . '</td></tr>'; 
            echo '<tr><td>' . $rij['bericht'] . '</td></tr>';
			echo '<br><br><br>';
        echo '</table>';
		}
        
?>

helemaal van boven dus, volgens mij staat hij goed maar is er iets mis met de code. Als ik ! weglaat wat dus wil zeggen dat hij bestaat (dat hij ingevuld is) krijg ik de link die ik moet hebben vanboven en vanonder het "forum" . met een leeg vakje :doh:

DarkBone

Legacy Member
PHP:
<?php 
    mysql_connect('localhost', 'user', 'pass'); 
    mysql_select_db('leden'); 
     
    if (empty($_POST)) 
    { 
        echo 'Ga terug <a href="forum.php">terug</a>'; 
    }
    else if ($_POST['naam'] == '' || $_POST['bericht'] == '') 
    { 
        echo 'Je moet eerst alle velden invullen <a href="forum.php">klik hier om terug te gaan</a>'; 
    }  
    else 
    { 
        $query .= "INSERT INTO forum (naam, bericht) "; 
        $query .= "VALUES ('"; 
        $query .= $_POST['naam'] . "','"; 
        $query .= $_POST['bericht'] . "');"; 
        $result = mysql_query($query) or die (mysql_error()); 
    }

    $query = "SELECT * FROM forum"; 
    $result = mysql_query($query) or die (mysql_error()); 
         
    while ($rij = mysql_fetch_array($result))
    { 
        echo '<table width="300" border="5">'; 
        echo '<tr><td>' . $rij['naam'] . '</td></tr>'; 
        echo '<tr><td>' . $rij['bericht'] . '</td></tr>'; 
        echo '<br><br><br>'; 
        echo '</table>'; 
    } 
         
?>

En er is dus weldegelijk een verschil tussen
Code:
if ($_POST['naam'] == '')
en
Code:
if ($_POST['naam'] == ' ')
In het tweede geval vergelijk je met een SPATIE terwijl je in het eerste geval vergelijkt met een lege string, niks dus.

killer bel

Legacy Member
neen, nog altijd niet...

nog altijd hetzelfde probleem.
Hij zegt nu wel dat je terug moet gaan maar daaronder staat nog altijd het 'forum' met een leeg vakje dat er eigelijk niet mag staan

edit;// sorry ik had je code niet gezien. maar ik heb zelf bijna dezelfde code gemaakt als jij

DarkBone

Legacy Member
Heb je mijn code gekopieerd en geplakt? Want dat verwondert mij sterk, ge hebt waarschijnlijk de if/else-if/else niet goeg overgenomen?

killer bel

Legacy Member
ja, ik had je code niet gezien en heb zelf wat zitten te knoeien. En ik heb net zoals jij die twee omgedraaid maar dan zat er wel geen elseif tussen. maar kom bedankt!
again..

killer bel

Legacy Member
wel, ik ben met men forum bezig en bij mijn hopelijk laatste prob...

kijk maar:
PHP:
<?php
	mysql_connect("localhost", "Jorge", "hotmail") or die (mysql_error());
	mysql_select_db("leden") or die (mysql_error());
	$query = 'SELECT * FROM forum WHERE id=' .$_GET["id"];
	$result = mysql_query($query) or die (mysql_error());
	while ($rij = mysql_fetch_array($result)){
		echo '<table width="300" border="5">'; 
            echo '<tr><td>' . $rij['naam'] . '</td></tr>'; 
            echo '<tr><td>' . $rij['bericht'] . '</td></tr>';
			echo '<br><br><br>';
        echo '</table>';
		}
?>

en de foutmelding is:
You have an error in your SQL syntax near '' at line 1

dus het zit hoogstwaarschijnlijk in deze regel
PHP:
$query = 'SELECT * FROM forum WHERE id=' .$_GET["id"];

effe zeggen dat ik wel zeker $_GET moet gebruik, aangezien ik dit als een querstring in de brower wil laten doorsturen om dan daarvan een link te maken.

dank bij voorbaaat

galadriaN

Legacy Member
PHP:
$query = "SELECT * FROM forum WHERE id=" . $_GET['id'];

killer bel

Legacy Member
idd, nog altijd dezelfde foutmelding...
weet iemand waar het aan kan liggen? Ik snap het echt niet, zou het aan de $_GET liggen?
wel spijtig want dat heb ik juist nodig ...

DarkBone

Legacy Member
My guess: is 'id' geen gereserveerd woord? probeer anders es die kolom te hernoemen.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan