In het veld 'personen' staat hoeveel gebruikers er op de lan kunnen komen.
Wat ik nu wil is het volgende
Ik wil dat mijn script kijkt hoeveel personen er in het veld aanmeldingen zit (tabel aanmelingen) en dan kijkt hoeveel personen er op de lan mogen komen (veld personen van tabel lannen)
Ik heb de volgende code maar dat werkt niet, en ik zou niet weten hoe ik dit moet doen.
<?php
error_reporting(E_ALL);
$sql = 'SELECT * FROM lannen WHERE id="'.$_GET['id'].'"';
$result = mysql_query($sql) or die(mysql_error());
if (!$result) {
echo "Kon de query ($sql) niet uitvoeren: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "Er zijn geen lanparty's gevonden met dit ID nummer.";
exit;
}
$sql2 = 'SELECT * FROM aanmeldingen WHERE lannaam="'.$_GET['lannaam'].'"';
$result2 = mysql_query($sql2) or die(mysql_error());
if (mysql_num_rows($result2) == '$personen') {
echo "Er zijn nog geen aanmeldingen voor deze lan !!";
exit;
}
while ($row = mysql_fetch_assoc($result)) {
?>
Heeft iemand een idee hoe ik dit zou kunnen doen ?
Ten eerste zitten er twee 'zware fouten' in je script:
$sql = 'SELECT * FROM lannen WHERE id="'.$_GET['id'].'"';
NOOIT EN TE NIMMER waarden uit je adresbalk, oftewel de $_GET[] direct op je database uitvoeren. Daarover kan je heel veel vinden op Internet. Het gaat er in het kort om dat kwaadwillige mensen met een beetje verstand queries kunnen runnen op je site... DROP TABLE etc..
Controleer die waarde eerst:
<?php
if (is_numeric($_GET['id'])) $id = $_GET['id'];
// En dan in je query ook met $id werken
?>
Deze fout is al net zo erg, zeker in combinatie met de eerste fout:
if (!$result) {
echo "Kon de query ($sql) niet uitvoeren: " . mysql_error();
exit;
}
Geef nooit te veel info weg over fouten op je website. En geef zeker niet je query weg (als je dit doet icm met de vorige fout dan maak je het die kwaadwillende helemaal makkelijk, omdat je ook al de tabelnaam weggeeft).
Doe liever iets als: Er is een fout opgetreden op de website. Probeer het opnieuw door terug te gaan. Als dit vaker voorkomt kunt u de webmaster op de hoogte brengen.
En als je klaar bent met ontwikkelen, dan moet je de error reporting helemaal uit zetten, dan geeft PHP ook geen foutmeldingen.
Wat betreft je vraag;
<?php
if (is_numeric($_GET['id'])) $id = $_GET['id'];
$sql = "SELECT *
FROM lannen
WHERE id= ".$id; // ID is int, dus geen ' '
$result = mysql_query($sql);
if (!$result)
{
echo "Geef een betere foutmelding";
exit;
}
if (mysql_num_rows($result) == 0)
{
echo "Er zijn geen lanparty's gevonden met dit ID nummer.";
exit;
}
// Fetch
$lan = mysql_fetch_object($result); // Hier hoeft geen while-loop, want je had een query met een unieke waarde (id)
// Nu aanmeldingen tellen
$sql = "SELECT count(id) AS aantal
FROM aanmeldingen
WHERE lannaam = '".$lan->lannaam."'"; // lannaam is CHAR, dus wel ' '
// Execute & fetch
$result = mysql_query($sql);
if (!$result)
{
echo "Geef een betere foutmelding";
exit;
}
$aanm = mysql_fetch_object($result);
$beschikbaar = $lan->personen - $aanm->aantal; // Beschikbare plaatsen
// Alles laten zien
echo "<p>Lan-id: ".$lan->id."<br>\n";
echo "Lan-naam: ".$lan->lannaam."<br>\n";
echo "Aanmeldingen: ".$aanm->aantal."<br>\n";
echo "Beschikbaar: ".$beschikbaar."</p>\n";
?>
Uit de losse pols, niet getest.
Succes!
Elwin
?
Onbekende gebruiker
05-11-2004 11:26
Hoi
Bedankt ziet er goed uit (maar ja dat kan al snel he :P)
Ik ben nu niet thuis dus kan het niet testen dat probeer ik vanmiddag
die GET functie zit er in omdat ik de waarde opvraag via een url
Dat stukje script
Ik heb een pagina met de hele lijst met lanparty's
Nu kunnen personen meer info opvragen en dus op een link drukken (pagina.php?id=ID&lannaam=LANNAAM&personen=AANTAL)
Die woorden met hoofdletters geef ik mee met de url
Is hier ook een andere functie voor dan ?
of moet ik dan een formulier ontzichtbaar maken en dan werken met de POST functie
Ik hoop dat je me nog een klein beetje informatie over kan geven
Alvast bedankt voor je reactie :D
Gr Michael
?
Onbekende gebruiker
05-11-2004 11:29
hoi alweer :)
Ik las er denk ik een beetje overheen
<?php
if (is_numeric($_GET['id'])) $id = $_GET['id'];
$sql = "SELECT *
FROM lannen
WHERE id= ".$id;
?>
Dit moet dus werken
Maar moet ik dan nog steets alles met de link mee sturen of niet ?