formulier en result en link om een item te openen
Ik heb een formulier waarbij je onder andere een zoekwoord invoert en daarna zoekt in een database aan de hand van het zoekwoord. Je krijgt dan een lijst met alle resultaten. Dit stuk gaat goed.
Nu wil ik eigenlijk dat als de lijst er is, het zoekwoord wel blijft staan in het zoekveld, is dat mogelijk, want nu is het veld leeg na op submit geklickt te hebben.
1e vraag, is het mogelijk dat een ingevuld woord in een zoekveld blijft staan na op submit te hebben geklikt?
2e vraag is, hoe moet ik beginnen als ik uit de lijst resultaten een bepaald resultaat wil openen? Je moet dat een link maken, maar is hier ergens een duidelijke uitleg over?
hier het script waar het over gaat:
<div id="main">
<div id="tablelist">
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST"){
include 'logindb.php';
}
error_reporting(E_ALL);
?>
if ($_SERVER['REQUEST_METHOD'] == "POST"){
include 'logindb.php';
}
error_reporting(E_ALL);
?>
<table border="0" cellpadding="4">
<tr>
<th>Zoekwoord</th>
<th>Medewerker</th>
<th>Afdeling</th>
<th>Bedrijf</th>
<th>Melding</th>
<th>Omschrijving</th>
<th>Status</th>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$query = mssql_query("SELECT
tbl_IncidentsStatus.Description,
tbl_ProjectGegevens.ProjectNaam,
tbl_ProjectGegevens.Klant_ID,
tbl_ProjectGegevens.Omschrijving,
tbl_ProjectGegevens.VerantwoordelijkeMedewerker_ID,
tbl_Medewerker.MedewerkerNaam,
tbl_ProjectGegevens.Status_ID,
tbl_MedewerkerCategorie.CategorieNaam,
tbl_Opdrachtgever.OpdrachtgeverNaam
FROM dbo.tbl_IncidentsStatus
INNER JOIN tbl_Medewerker ON tbl_IncidentsStatus.Medewerker_ID = tbl_medewerker.Medewerker_ID
INNER JOIN tbl_ProjectGegevens ON tbl_IncidentsStatus.ProjectGegevens_ID = tbl_ProjectGegevens.ProjectGegevens_ID
INNER JOIN tbl_Opdrachtgever ON tbl_Opdrachtgever.Opdrachtgever_ID = tbl_ProjectGegevens.Klant_ID
INNER JOIN tbl_MedewerkerCategorie ON tbl_MedewerkerCategorie.MedewerkerCategorie_ID = tbl_ProjectGegevens.ToAfdeling_ID
WHERE tbl_IncidentsStatus.Description LIKE '%".$_POST['zoekwoord']."%'
OR tbl_ProjectGegevens.ProjectNaam LIKE '%".$_POST['zoekwoord']."%'");
while ($row = mssql_fetch_assoc($query))
{
echo '<tr>';
echo '<td>'.$_POST['zoekwoord'].'</td><td>'.$row['MedewerkerNaam'].'</td><td>'.$row['CategorieNaam'].'</td><td>'.$row['OpdrachtgeverNaam'].'</td><td>'.$row['ProjectNaam'].'</td><td>'.$row['Omschrijving'].'</td><td>'.htmlentities($row['Description']).'</td>';
echo '</tr>';
}
?>
$query = mssql_query("SELECT
tbl_IncidentsStatus.Description,
tbl_ProjectGegevens.ProjectNaam,
tbl_ProjectGegevens.Klant_ID,
tbl_ProjectGegevens.Omschrijving,
tbl_ProjectGegevens.VerantwoordelijkeMedewerker_ID,
tbl_Medewerker.MedewerkerNaam,
tbl_ProjectGegevens.Status_ID,
tbl_MedewerkerCategorie.CategorieNaam,
tbl_Opdrachtgever.OpdrachtgeverNaam
FROM dbo.tbl_IncidentsStatus
INNER JOIN tbl_Medewerker ON tbl_IncidentsStatus.Medewerker_ID = tbl_medewerker.Medewerker_ID
INNER JOIN tbl_ProjectGegevens ON tbl_IncidentsStatus.ProjectGegevens_ID = tbl_ProjectGegevens.ProjectGegevens_ID
INNER JOIN tbl_Opdrachtgever ON tbl_Opdrachtgever.Opdrachtgever_ID = tbl_ProjectGegevens.Klant_ID
INNER JOIN tbl_MedewerkerCategorie ON tbl_MedewerkerCategorie.MedewerkerCategorie_ID = tbl_ProjectGegevens.ToAfdeling_ID
WHERE tbl_IncidentsStatus.Description LIKE '%".$_POST['zoekwoord']."%'
OR tbl_ProjectGegevens.ProjectNaam LIKE '%".$_POST['zoekwoord']."%'");
while ($row = mssql_fetch_assoc($query))
{
echo '<tr>';
echo '<td>'.$_POST['zoekwoord'].'</td><td>'.$row['MedewerkerNaam'].'</td><td>'.$row['CategorieNaam'].'</td><td>'.$row['OpdrachtgeverNaam'].'</td><td>'.$row['ProjectNaam'].'</td><td>'.$row['Omschrijving'].'</td><td>'.htmlentities($row['Description']).'</td>';
echo '</tr>';
}
?>
</tr>
</table>
</div>
</div>
Gewijzigd op 20/10/2010 08:25:46 door Renzo Massaro
Op je eerste vraag:
Je kan in de value van een input veld ook een variabele plaatsen. Ik zie dat je weet hoe variabelen werken (in de echo waar je het zoekwoord toont) en ook wat een post variabele is. Daarmee moet je wel uit de voeten kunnen
Op je 2e vraag:
Een linkje maken in HTML lukt je wel.
Geef in je query (je resultaat) ook het id van het project terug en plaats deze erbij in je linkje
Op die pagina kan je met een query waarin je de get variabele gebruikt alle gegevens bij dat project opzoeken.
Wel een kanttekening die ik moet maken:
denk om beveiliging, ik kan ook sql injecteren bij jou in deze query. Haal op zijn minst mysql_real_escape_string() over je post variabelen (user input, dus ook de get variabelen) om dit al een stuk beter te beveiligen.
Dankjewel voor je snelle antwoord. Ik ga ermee aan de slag.
Dat van de beveiliging weet ik ja. Ik ga daar ook mee aan de slag, ik ben me al aan heet inlezen over dat sql injectie punt, dankjewel.
Toevoeging op 20/10/2010 14:32:02:
hmmm, ik heb nu als volgt gedaan en er gebeurd dan wel iets, maar niet het goede.
Alle resultaten uit de database worden dan weer geladen. Hoe kan ik nou zorgen dat als ik uit de lijst het 2e resultaat wil zien en erop klik, dat dan alleen dat resultaat komt? moet ik dan weer een apart script maken oid?
Code (php)
1
2
2
<?php
<td>[code]<?php echo $_POST['zoekwoord'] ?></td><td><?php echo $row['MedewerkerNaam'] ?></td><td><a href="results.php?ProjectGegevens_id=<?php echo $row['ProjectGegevens_ID'] ?>"><?php echo $row['CategorieNaam'] ?></a></td><td><?php echo $row['OpdrachtgeverNaam'] ?></td><td><?php echo $row['ProjectNaam'] ?></td><td><?php echo $row['Omschrijving'] ?></td><td><?php echo htmlentities($row['Description']) ?></td> ?>
<td>[code]<?php echo $_POST['zoekwoord'] ?></td><td><?php echo $row['MedewerkerNaam'] ?></td><td><a href="results.php?ProjectGegevens_id=<?php echo $row['ProjectGegevens_ID'] ?>"><?php echo $row['CategorieNaam'] ?></a></td><td><?php echo $row['OpdrachtgeverNaam'] ?></td><td><?php echo $row['ProjectNaam'] ?></td><td><?php echo $row['Omschrijving'] ?></td><td><?php echo htmlentities($row['Description']) ?></td> ?>
Gewijzigd op 20/10/2010 14:33:27 door Renzo Massaro
Daarvoor moet je inderdaad wel iets apparts scripten. Je moet zien dat je het id van het aangeklikte item meegeeft in de URL.
In een query moet je dan alle gegevens ophalen van het betreffende ID. Op zich niet heel lastig lijkt me.
In jou Results.php kan je bijvoorbeeld controleren of: $_GET['ProjectGegevens'] bestaat (het is overigens eenvoudiger om alles lowercase te houden in de url)
Bestaat die, dan kan je een query uitvoeren waarmee je alleen de gegevens van project met id = $_GET['ProjectGegevens'] ophalen.
dankjewel. Ik zal er wel even mee aan de slag moeten aangezien ik nu nog steeds een gigantische lijst naar voren krijg, maar aldoende leer ik...