Hallo jongens,
ik heb een script dat gegevens uit een mysql database haalt na een zoekscript. Dat gaat helemaal goed..
Alle namen worden netjes onder elkaar weergegeven, maar nu wil ik graag dat als je op 1 van die namen klikt, de rest van de velden die erbij horen worden weergegeven..
Kan iemand me hiermee helpen? ik weet dat het heel simpel is voor een beetje scripter maar dat ben ik dus juist niet.
alvast bedankt,
Cindy
oja, dit is het script dat ik tot nu toe heb:
ik weet dat ik iets met get id moet doen ofzo, maar dat lukt dus juist niet :(
<?
//------------------------//
// DATABASE CONFIGURATIE //
//------------------------//
$mysql_user = "****"; // je mysql login naam
$mysql_pass = "****"; // je mysql wachtwoord
$mysql_host = "****"; // de host van je mysql database
$mysql_dbn = "****"; // de naam van je database
if (!@mysql_select_db($mysql_dbn, @mysql_connect($mysql_host, $mysql_user, $mysql_pass)))
{
//--- De verbinding is nu dus mislukt, geef hier een melding van
echo "database connectie mislukt!";
//--- Zorg ervoor dat het script stopt.
exit();
}
else
{
$sql = "SELECT naam,plaats FROM dagjes WHERE provincie LIKE '%$HTTP_POST_VARS[group1]%' AND categorie LIKE '%$HTTP_POST_VARS[group2]%' ORDER BY naam ASC";
// Voer SQL code uit
$res = mysql_query($sql);
// Kijk of er 1 of meerdere rijen gevonden zijn
if (mysql_num_rows($res) >= 1)
{
// Toon elke rij tot dat er geen rijen meer zijn
while ($row = mysql_fetch_array($res))
{
$row['naam'] = htmlentities($row['naam']);
$row['plaats'] = nl2br(htmlentities($row['plaats']));
echo $row['naam'] . "<hr>";
echo $row['plaats'] . "<br><br>";
}
}
// Er zijn geen rijen gevonden, geef aan dat er nog geen dagjes zijn toegevoegd
else
echo "<p>Er zijn nog geen dagjes toegevoegd.</p>";
}
?>
<?
//------------------------//
// DATABASE CONFIGURATIE //
//------------------------//
$mysql_user = "xx"; // je mysql login naam
$mysql_pass = "xx"; // je mysql wachtwoord
$mysql_host = "xx"; // de host van je mysql database (localhost is meestal wel oke)
$mysql_dbn = "xx"; // de naam van je database
if (!@mysql_select_db($mysql_dbn, @mysql_connect($mysql_host, $mysql_user, $mysql_pass)))
{
//--- De verbinding is nu dus mislukt, geef hier een melding van
echo "database connectie mislukt!";
//--- Zorg ervoor dat het script stopt.
exit();
}
else
{
$sql = "SELECT id,naam,plaats,categorie,soort,toegankelijk,omschrijving FROM dagjes WHERE provincie LIKE '%$HTTP_POST_VARS[group1]%' AND categorie LIKE '%$HTTP_POST_VARS[group2]%' ORDER BY naam ASC";
// Voer SQL code uit
$res = mysql_query($sql);
// Kijk of er 1 of meerdere rijen gevonden zijn
if (mysql_num_rows($res) >= 1)
{
// Toon elke rij tot dat er geen rijen meer zijn
while ($row = mysql_fetch_array($res))
{
$row['naam'] = htmlentities($row['naam']);
$row['plaats'] = nl2br(htmlentities($row['plaats']));
echo $row['naam'] . "<hr>";
echo $row['plaats'] . "<br>";
if (isset($_GET['more']) AND $row['id'] ==$_GET['more']){
echo $row['categorie'] . "<hr>";
echo $row['soort'] . "<hr>";
echo $row['toegankelijk'] . "<hr>";
echo $row['omschrijving'] . "<br><br>";
}
echo ' <a href="?more='.$row['id'].'">meer info over dit item</a>' ;
}
}
// Er zijn geen rijen gevonden, geef aan dat er nog geen dagjes zijn toegevoegd
else
echo "<p>Er zijn nog geen dagjes toegevoegd.</p>";
}
?>
Hij laat nu dus wel de overige velden van het geselecteerde item zien maar ook alle namen en plaatsnamen van de overige items.
Waarom is mijn query niet goed mark? misschien bedoel je het group1 en group2 gedeelte? maar dat zijn de waarden uit de zoekpagina die er voor zit.
ja dat klopt ruud ik gebruik het "Dual Linked Selects with PHP and MYSQL (without page reload)" formulier van deze site om te zoeken in de database. De pagina opvragen.php geeft daar het resultaat van weer. Dat werkt wel goed, nu alleen het klikje voor de overige velden van het geselecteerde item.
Eerlijk gezegd weet ik niet hoe ik dat moet doen, de POST onthouden in een sessie.. :(
heb ik het helemaal mis dat ie de waarden uit het zoekformulier helemaal niet hoeft te onthouden? ik wil toch alleen het item zien waar op wordt doorgeklikt?
ik ging er nog vanuit dat je de hele lijst wil zien waarvan er dan 1 'uitgeklapt' te zien is. Maar dat is natuurlijk jou keuze.
Alleen dat ene item uit de more link? ja , ff een simpel pagina met query die inderdaad alleen ff dat ene item hoeft op te halen. (en dat id heb je al)
ah ok, nee ik wou de rest eigenlijk nie meer zien na de klik.
Dus dan moet ik toch met een nieuwe pagina gaan werken?
Dat idee had ik namelijk in het begin maar dat werkte niet goed.. probeer het nog eens. bedankt ruud
Waarom is mijn query niet goed mark? misschien bedoel je het group1 en group2 gedeelte? maar dat zijn de waarden uit de zoekpagina die er voor zit.
Er kunnen fouten ontstaan doordat je de variabeles in de quotes hebt:
<?php
$hoi = 'LOL!';
echo "Ik zei: $hoi";
?>
je kan beter:
<?php
$hoi = 'LOL!';
echo "Ik zei: ".$hoi;
?>
en $HTTP_POST_VARS is nogal oud (heb ik gehoord) en kan vervangen worden door $_POST
[edit]
Als ik het goed heb kan je op die andere pagina iets zoals dit zetten (SQL):
<?php
$sql = "SELECT id,naam,plaats,categorie,soort,toegankelijk,omschrijving FROM dagjes WHERE id = '".$_GET['more']."'";
?>
echo ' <a href="meerinfo.php&more='.$row['id'].'">meer info over dit item</a> ';
maar de pagina meerinfo.php werkt niet goed. krijg een http fout pagina.. klopt zeker geen bal van:
<?
//------------------------//
// DATABASE CONFIGURATIE //
//------------------------//
$mysql_user = "xx"; // je mysql login naam
$mysql_pass = "xx"; // je mysql wachtwoord
$mysql_host = "xx"; // de host van je mysql database (localhost is meestal wel oke)
$mysql_dbn = "xx"; // de naam van je database
if (!@mysql_select_db($mysql_dbn, @mysql_connect($mysql_host, $mysql_user, $mysql_pass)))
{
//--- De verbinding is nu dus mislukt, geef hier een melding van
echo "database connectie mislukt!";
//--- Zorg ervoor dat het script stopt.
exit();
}
else
{
$sql = "SELECT id,naam,plaats,categorie,soort,toegankelijk,omschrijving FROM dagjes WHERE id = '".$_GET['more']."'";
// Voer SQL code uit
$res = mysql_query($sql);
// Kijk of er 1 of meerdere rijen gevonden zijn
if (mysql_num_rows($res) >= 1)
{
// Toon elke rij tot dat er geen rijen meer zijn
while ($row = mysql_fetch_array($res))
{
if (isset($_GET['more']) AND $row['id'] ==$_GET['more']){
echo $row['categorie'] . "<hr>";
echo $row['soort'] . "<hr>";
echo $row['toegankelijk'] . "<hr>";
echo $row['omschrijving'] . "<br><br>";
}
}
else
echo "<p>niet gevonden.</p>";
}
?>
Hmm.. omdat je maar 1 id zoekt, kan er al een hoop weg:
<?php
if (mysql_num_rows($res) >= 1)
{
// Toon elke rij tot dat er geen rijen meer zijn
while ($row = mysql_fetch_array($res))
{
if (isset($_GET['more']) AND $row['id'] ==$_GET['more']){
echo $row['categorie'] . "<hr>";
echo $row['soort'] . "<hr>";
echo $row['toegankelijk'] . "<hr>";
echo $row['omschrijving'] . "<br><br>";
}
}
else
echo "<p>niet gevonden.</p>";
}
?>
Dit checken of er iets gevonden is, is een goede gewoonte. Die laten we staan, maar in de while worden alle results gepost. en er is maar 1 result (als je unieke id's hebt)
dit kan dus veranderd worden:
<?php
if (mysql_num_rows($res) >= 1)
{
// Toon elke rij tot dat er geen rijen meer zijn
$row = mysql_fetch_assoc($res);
if (isset($_GET['more']) AND $row['id'] ==$_GET['more']){
echo $row['categorie'] . "<hr>";
echo $row['soort'] . "<hr>";
echo $row['toegankelijk'] . "<hr>";
echo $row['omschrijving'] . "<br><br>";
}
}
else
echo "<p>niet gevonden.</p>";
}
?>
Je had ook een } teveel weggehaald... die zit er nu weer in!
[edit]
Ruud heeft ook gelijk: Er moet na de .php een vraagteken en als je daarna nog meet GET variabelen wilt meesturen moet je & gebruiken.
[/edit]