Database Formulier
Hallo iedereen, ik heb een probleempje met een formulier die alle gegevens uit een database haalt en dan alle gegevens bv. naam, telnr, adres ens. op de juiste invoervelden invult. Dat gaat goed maar als je iets wijzigd of aanvult dan wordt de database aangepast maar ga je terug naar die pagina dan staat de veranderingen er niet bij, maar de selfde situatie zoals voor de aanpassing. Als je de browser sluit en opnieuw naar toe gaat staat het er wel. Kan het zijn dat de browser onthoud wat er moet staan en hoe kan ik dit oplossen??
<meta http-equiv="expires" content="0" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
Ik weet niet wat het betekend maar als het maar werkt, een goude stukje script dus voor formulieren met een database.
Het leegt de cache van de browser. Dus de pagina moet echt weer worden opgehaald bij de server.
Zijn er nog nadelen by het gebruik hiervan of kan ik dit gewoon standaard in iedere pagina invullen? Want ik zie als ik bv. een factuur verwijderd deze ook blijft staan als ik terug naar de pagina gaat maar wel uit de database haalt
Ik gebruik het altijd. Nadelen? Ik zou het niet weten.
De laad tijd zal misschien iets omhoog gaan omdat alles weer direct van de server moet worden opgehaald. Dit hoeft geen groot probleem te zijn lijkt me :)
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
session_start();
session_register("inkoopleveranciernaam_session");
session_register("inkoopfactuurid_session");
session_register("inkoopfactuurnr_session");
include("admincheck.php");
?>
session_start();
session_register("inkoopleveranciernaam_session");
session_register("inkoopfactuurid_session");
session_register("inkoopfactuurnr_session");
include("admincheck.php");
?>
maar iedere keer als ik een nieuw factuurtje aanklik dan zie ik de sessie van de vorige als ik echo $_SESSION['inkoopfactuurnr']; oproep
session_register() is antiek gebruik $_SESSION['....'] = .....;
sou moeten worden
$_SESSION[inkoopfactuurnr]=inkoopfactuurnr; ??
Ik denk dat dat een probleem gaat opleveren want session register registreerd alleen de sessie sodat de script weet dat hij bij de betreffende factuur door moet gaan totdat (zie onderstaande script) de sessie veranderd moet worden
Code (php)
1
2
3
4
5
2
3
4
5
<?
$SQL="select * from (inkoopfacturen inner join inkoopfactuurdetails on inkoopfacturen.ink_fac_id = inkoopfactuurdetails.inkfactuurid) inner join producten on inkoopfactuurdetails.productid = producten.pid where ink_fac_id=".$factuurid." order by iinkfid";
$zoekresultaten=$zoekresultaten_query=mysql_query(($SQL),$eaccesDB);
$zoekresultaten=mysql_fetch_array($zoekresultaten_query);
;?>
$SQL="select * from (inkoopfacturen inner join inkoopfactuurdetails on inkoopfacturen.ink_fac_id = inkoopfactuurdetails.inkfactuurid) inner join producten on inkoopfactuurdetails.productid = producten.pid where ink_fac_id=".$factuurid." order by iinkfid";
$zoekresultaten=$zoekresultaten_query=mysql_query(($SQL),$eaccesDB);
$zoekresultaten=mysql_fetch_array($zoekresultaten_query);
;?>
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<? if (!($zoekresultaten==0))
{
$factuurbedrag=$zoekresultaten["factuurbedrag"];
$factuurdatum=$zoekresultaten["factuurdatum"];
$factuurnummer=$zoekresultaten["factuurnummer"];
$factuuromschrijving=$zoekresultaten["omschrijving"];
$_SESSION['inkoopfactuurnr']=$zoekresultaten["factuurnummer"];
?>
{
$factuurbedrag=$zoekresultaten["factuurbedrag"];
$factuurdatum=$zoekresultaten["factuurdatum"];
$factuurnummer=$zoekresultaten["factuurnummer"];
$factuuromschrijving=$zoekresultaten["omschrijving"];
$_SESSION['inkoopfactuurnr']=$zoekresultaten["factuurnummer"];
?>
PS. ik denk dat er een fout in SQL= gedeelte sit maar hij werkt zo en als ik iets verander van quotes krijg ik alleen een foutmelding.
Me enige probleem is dus dat de sessie niet vernieuwd als je een nieuwe factuur aanklikt en alles bij de vorige factuur bijgezet wordt??
Wijzig jij de session misschien pas nadat je de info op het scherm hebt gezet?
$_SESSION['inkoopfactuurnr']=$zoekresultaten["factuurnummer"];
naar boven de html te verplaatsen en nu werkt het. ook nog even je ''cache legen'' op andere paginas geplaatst waar het nodig was.
Bedankt!!!!
Ik heb nog nooit meegemaakt dat een browser de inhoud van een formulier na verzenden uit zichzelf meenam en er weer in zette. De cache legen heeft daarom voor jou geen toegevoegde waarde, je moet alleen zorgen dat die de sessie-variabelen voor het formulier al instelt.
Doe je dat erna, dan is het logisch dat de waarden "verkeerd" worden weergegeven, maar dat ligt niet aan de cache, maar aan je opbouw van de code.
@ Robert, en toch gebeurt het, er zijn geen sessies bij deze formulieren en ik denk dat hetzelfde gebeurd als wat je in je browser een pagina terug gaat bij een formulier dan staat wat je hebt ingevuld er vaak ook weer. En het gaat niet om lege fromulieren maar het is een overzicht van gegevens die gelijk ingevuld word uit een database in een formulier die je dan gelijk kan bijwerken. Bv naam, adres, tel, mobiel, email ens.