formulier en result en link om een item te openen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Renzo Massaro

Renzo Massaro

20/10/2010 08:25:03
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
}

?>

</tr>
</table>

</div>
</div>
Gewijzigd op 20/10/2010 08:25:46 door Renzo Massaro
 
PHP hulp

PHP hulp

23/09/2019 10:09:52
 
Robert Deiman

Robert Deiman

20/10/2010 08:52:23
Quote Anchor link
Hoi Renzo

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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
index.php?project_id=<?php echo $row['projectid']; ?>


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.
 
Renzo Massaro

Renzo Massaro

20/10/2010 08:54:37
Quote Anchor link
Dag Robert,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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> ?>
Gewijzigd op 20/10/2010 14:33:27 door Renzo Massaro
 
Robert Deiman

Robert Deiman

21/10/2010 09:25:40
Quote Anchor link
Hoi Renzo,

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.
 
Renzo Massaro

Renzo Massaro

21/10/2010 16:38:02
Quote Anchor link
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...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.