Ik ben bezig met klein systeempje waar je aan de achterkant clubs kunt invoeren, bewerken en verwijderen. Dit werkt allemaal prima.
aan elke club wordt een ID, naam en land gegeven.
Nu wil ik aan de voorkant een soort zoekfunctie bouwen, waar je op land kan zoeken door middel van een Select box.
Het liefste zou ik willen dat alleen de landen worden weergegeven die gekoppeld zijn met een club, omdat het anders nutteloos is om te zoeken op een land waar geen club is. het zijn in totaal 240+- landen, dat zou anders een super lange lijst worden.
Ik heb nu in de database:
- Clubs
-- clubID
-- clubnaam
-- landID
- Landen
-- landID
-- landnaam
Er moet dus een Select box komen met een submit button, als er een post is moet de geposte waarde dus aan een query of iets dergelijks worden meegegeven. zodat de gegevens die voldoen aan de geposte waarde worden weergegeven. Dit heb ik geprobeerd maar ik kreeg alleen maar errors of geen content terug.
Weet iemand misschien hoe ik dit zou kunnen oplossen?
[size=xsmall]Toevoeging op 19/12/2011 16:16:37:[/size]
Volgens mij is het enige probleem dat mijn query verkeerd is opgebouwd.
if(is_array($_POST['land'])){
$clubb = $_POST['land'];
}
$query = 'SELECT * FROM clubs JOIN landen ON clubs.landID=landen.landID WHERE clubs.landID = '.$clubb.'';
Want als ik ipv die $clubb in de query een nummer zet, dan werkt het wel..
De $clubb wordt niet gevuld denk ik dan, maar hoe kan ik hem wel gevuld krijgen zodat de waarde wel wordt neergezet in de query?
Is $_POST['land'] wel een array (regel 1 t/m 3), normaal gesproken is $_POST alleen de array met op elke name waarde de gegevens die je wilt ophalen.. dus zou $clubb = $_POST['land']; voldoende moeten zijn.
Daarbuiten moet je ook goed kijken naar SQL injectie, gebruik op zijn minst nog mysql_real_escape_string().
Klopt dat zag ik ook al, heb het veranderd in isset ipv is_array.
het probleem zit zich in de SQL,
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
$query = 'SELECT * FROM clubs JOIN landen ON clubs.landID=landen.landID WHERE clubs.landID = '.$clubb.'';
Hoe krijg ik nu die geposte waarde achter ingevuld waar nu '.$clubb.' staat.
dat is het enige probleem wat ik heb denk ik. klinkt heel simpel maar wat ik ook doe het lukt me niet.
Ja de mysql_real_escape_string() voeg ik later nog toe.
Dit heb ik gedaan en er stond in dat de $clubb leeg is.
maar ik denk dat ik het opgelost heb met het volgende:
Eerst had ik de accolade direct gesloten na het vullen van de $clubb, oftewel daarbuiten zou hij leeg zijn:
<?php
if(isset($_POST['land'])){
$clubb = $_POST['land'];
}
// EN HIER DE QUERY ETC
?>
Nu heb ik de accolade onder alle query tekst etc gezet en zo te zien doet hij het nu wel. Dankjewel iedereen voor het helpen!