Toon posts:

[php] inhoud form kwijt na versturen

Pagina: 1
Acties:

Verwijderd

Topicstarter
yo, ik ben bezig met een newssysteem waar mensen ook comments kunnen plaatsen. Als ze alle velden van het form hebben ingevuld (als ze comment willen plaatsen) wordt en een controle uitgevoerd of ze wel alles goed hebben ingevuld. Is dit het niet het geval dan krijgen ze een bericht te zien en moeten ze op back klikken. Maar als ze terug gaan is de informatie die ze in hadden gevoerd niet meer aanwezig en moeten ze alles opnieuw invoeren in de velden. Dit kan erg frusterend zijn dus hoe kan ik dit oplossen? Hieronder volgt de code van mijn news.php
code:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?
if(isset($SubmitNewsReply))
{
    $limit=array(5 ,100000);
    if (strlen($Message) < $limit["0"] || strlen($Message) > $limit["1"]){echo("Please enter a message between $limit[0] and $limit[1] characters"); exit;} //hier krijgen ze bericht te zien.

        $sql="INSERT INTO newsreply (IDn,Name,Date,Message) VALUES('$ID','$MID',Now(),'$Message')";
        mysql_query($sql) or die(mysql_errno().mysql_error());
        die ("Hold on, you're being redirected!");
}
if(isset($ID))
{
    global $Mlogin,$MID,$Mlevel;
    $sql="SELECT * FROM news WHERE ID='$ID'";
    $resnews=mysql_query($sql) or die(mysql_errno().mysql_error());
    ?>
      hier wordt newsbericht nog eens afgedrukt
    <?
      // hier worden de comments afgedrukt
    ?>

        <hr><table class=tabel><tr><td><i>Add Comment:</i></td></tr>
      <tr><td>This is an international/dutch site and thereby all posts shall be in English or Dutch. Posts in other languages then English or Dutch will be deleted! Obscene language and abusive posts will not be tolerated and the posts will be deleted!</td></tr>
    </table>
    <form method="POST" action="<?=$self?>?p=news&ID=<?=$ID?>" ENCTYPE='multipart/form-data'>
        <table border="0" width="100%" cellspacing="0" cellpadding="0" class="tabel">
        <tr>
          <td width="12%" valign="top">Name:</td>
          <td width="88%" valign="top"><input type="text" name="Name" size="40" maxlength=40></td>
        </tr>
        <tr>
          <td width="12%" valign="top" rowspan="2">Comment:</td>
          <td width="88%" valign="top"><textarea rows="6" name="Message" cols="45"></textarea></td>
        </tr>
        </table>
        <blockquote>
        <blockquote>
        <p>&nbsp; <input type="submit" value="Submit" name="SubmitNewsReply"> <input type="Reset" value="Reset" name="reset"> <INPUT TYPE=Button VALUE='Back' onClick=javascript:location='<?=$self?>?p=news';></p>
        </blockquote>
        </blockquote>
        </form>

    <?
}
else
{
    $sql="SELECT * FROM news ORDER BY Date DESC LIMIT 10";
    $result=mysql_query($sql) or die(mysql_errno().mysql_error());
    $n=mysql_num_rows($result);$i=0;
    while($i<$n)
    {
         //hier worden variabelen voor news gezet
        ?>
hier wordt al het news afgedrukt en hieronder de link naar de newspost met comments
<A HREF='<?=$self?>?p=news&ID=<?=$ID?>'>Read Comments</A        <?
        $i++;
    }
    unset($ID);
}

ik heb de meeste onzinnige code weggehaald wat niet echt van toepassing is zoals hoe het news wordt afgedrukt enzo ;)

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

Haal je nocache headers eens weg ;)

Stop uploading passwords to Github!


Verwijderd

Topicstarter
hmm ik ben niet echt geweldig in php, dus uhhh.. wat bedoel je :)

  • MP83
  • Registratie: Januari 2000
  • Laatst online: 31-01 18:11
Ik laat ze altijd terug gaan via een history(-1) link. Zo blijven alle ingevulde velden staan.

Alleen de password velden zijn dan weer leeg :)

Verwijderd

Topicstarter
hmm dat was toch met:
javascript:history.back()
ik doe meestal niet zo veel javascript :p

thnx ik zal es proberen

edit:
hmm werkt ook niet :(

Verwijderd

Op woensdag 26 juni 2002 11:52 schreef Frankz0r het volgende:
hmm dat was toch met:
javascript:history.back()
ik doe meestal niet zo veel javascript :p

thnx ik zal es proberen

edit:
hmm werkt ook niet :(
Vind het zowiezo niet echt elegant om mensen zelf nog eens op die back knop te laten drukken. je kan veel beter het formulier naar zichzelf posten ($PHP_SELF), boven aan de pagina de controle uitvoeren en als die niet klopt het formulier weer laten zien met de foutmeldingen erbij
als je dan zoiets doet
<input type="text" name="naam" value="<?php echo $naam; ?>">, dan blijven de velden altijd ingevuld staan

  • Terranca
  • Registratie: April 2000
  • Laatst online: 02-09 22:35
Heb je heel toevallig als webserver Apache met Multiviews aan staan? Ik weet niet meer precies, maar volgens mij heb ik vaak hetzelfde probleem gehad toen ik multiviews aan had staan, voor onverklaarbare redenen. Anyway, suc6 :) En anders idd de oplossing van linux-newbie toepassen, zo doe ik het tegenwoordig ook meestal :)

  • SilentThunder
  • Registratie: September 2001
  • Laatst online: 04-09 15:46
Op woensdag 26 juni 2002 17:34 schreef linux-newbie het volgende:

[..]

Vind het zowiezo niet echt elegant om mensen zelf nog eens op die back knop te laten drukken. je kan veel beter het formulier naar zichzelf posten ($PHP_SELF), boven aan de pagina de controle uitvoeren en als die niet klopt het formulier weer laten zien met de foutmeldingen erbij
als je dan zoiets doet
<input type="text" name="naam" value="<?php echo $naam; ?>">, dan blijven de velden altijd ingevuld staan
elegant of niet, als jij je form wilt uitbreiden daarna heb je d'r een behoorlijke klus aan omdat je veel meer velden moet editen op deze manier...

dan zul je toch een meer efficiente code moeten schrijven wil je dat bereiken...

Canon EOS 40D | Canon EF-S 10-22mm F/3.5-4.5 USM | Tamron 17-50mm F/2.8 | Canon EF 50mm F/1.8 II | Canon EF 70-200mm F/4L IS USM | Speedlite 430EX


Verwijderd

Op woensdag 26 juni 2002 20:11 schreef SilentThunder het volgende:

[..]

elegant of niet, als jij je form wilt uitbreiden daarna heb je d'r een behoorlijke klus aan omdat je veel meer velden moet editen op deze manier...

dan zul je toch een meer efficiente code moeten schrijven wil je dat bereiken...
Gewoon een beetje handig programmeren. Als je je form dynamisch genereert vanuit een array, kun je diezelfde array gebruiken om 'm te controleren en kun je tijdens dat genegeren ook weer dynamisch je error messages genereren. Bij het opnieuw weergeven van het formulier kun je dan terwijl je dat doet gelijk de error messages er bij zetten.
Veel efficienter dan dat kan het niet hoor. En blijft een stuk eleganter

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Op woensdag 26 juni 2002 20:11 schreef SilentThunder het volgende:

[..]

elegant of niet, als jij je form wilt uitbreiden daarna heb je d'r een behoorlijke klus aan omdat je veel meer velden moet editen op deze manier...

dan zul je toch een meer efficiente code moeten schrijven wil je dat bereiken...
Ik zie niet in waarom je hier een grotere kluif aan hebt dan waneer je de 'back' oplossing gebruikt. Het enige extra werk is dat je een standaard waarde mee moet geven ipv niet.

Er zijn betere oplossingen voor (vaak gebruik je dezelfde gegevens bij bv een inschrijving als een wijziging) maar om nu te zeggen dat dit veel inefficienter is dan anders vind ik wat te ver gaan.

Wat is immers het verschil tussen:
code:
1
<input type="text" name="bar" />

en
code:
1
<input type="text" name="bar" value="<?=html_specialchars($_POST['bar'])?>" />

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Op woensdag 26 juni 2002 11:47 schreef Frankz0r het volgende:
hmm ik ben niet echt geweldig in php, dus uhhh.. wat bedoel je :)
Sorry, maar dit valt echter onder de categorie loze opmerkingen :(

OEPS, nu begin ik er zelf ook nog aan :P

  • SilentThunder
  • Registratie: September 2001
  • Laatst online: 04-09 15:46
Op woensdag 26 juni 2002 21:09 schreef linux-newbie het volgende:

[..]

Gewoon een beetje handig programmeren. Als je je form dynamisch genereert vanuit een array, kun je diezelfde array gebruiken om 'm te controleren en kun je tijdens dat genegeren ook weer dynamisch je error messages genereren. Bij het opnieuw weergeven van het formulier kun je dan terwijl je dat doet gelijk de error messages er bij zetten.
Veel efficienter dan dat kan het niet hoor. En blijft een stuk eleganter
ik zei niet dat ik niet weet hoe ik dat moet doen...

Canon EOS 40D | Canon EF-S 10-22mm F/3.5-4.5 USM | Tamron 17-50mm F/2.8 | Canon EF 50mm F/1.8 II | Canon EF 70-200mm F/4L IS USM | Speedlite 430EX


  • SilentThunder
  • Registratie: September 2001
  • Laatst online: 04-09 15:46
Op woensdag 26 juni 2002 21:14 schreef Janoz het volgende:

[..]

Ik zie niet in waarom je hier een grotere kluif aan hebt dan waneer je de 'back' oplossing gebruikt. Het enige extra werk is dat je een standaard waarde mee moet geven ipv niet.

Er zijn betere oplossingen voor (vaak gebruik je dezelfde gegevens bij bv een inschrijving als een wijziging) maar om nu te zeggen dat dit veel inefficienter is dan anders vind ik wat te ver gaan.

Wat is immers het verschil tussen:
code:
1
<input type="text" name="bar" />

en
code:
1
<input type="text" name="bar" value="<?=html_specialchars($_POST['bar'])?>" />
het gaat er niet om dat dat nou zoveel extra moeite is...bij een form van een paar velden is dat nou niet echt boeiend, maar als je een inschrijvingsform hebt met 30 velden bij wijze van spreken, blijf je aan het kopieren/plakken, mocht je dan 1 ding fout gedaan hebben, of willen wijzigigen, ben je nog wel ff bezig...

dus zeg ik: efficientere code schrijven, niet in de zin van snel, maar makkelijker te hanteren

Canon EOS 40D | Canon EF-S 10-22mm F/3.5-4.5 USM | Tamron 17-50mm F/2.8 | Canon EF 50mm F/1.8 II | Canon EF 70-200mm F/4L IS USM | Speedlite 430EX


Verwijderd

Ik heb dat probleem ook en bij mij komt het doordat ik een
code:
1
session_start();

aanroep, als ik deze weghaal blijft de info gewoon staan, ik heb geen idee waarom eigenlijk.

Php.net zegt niets over het al dan niet cachen van form elements wanneer een session_start(); wordt aangeroepen.

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 13:34

pietje63

RTFM

onder de foutmelding het formulier zetten, en daar de velden door php in laten vullen

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Verwijderd

Ik las net bij php.net dat er ook andere mensen zijn met dat probleem en dat het waarschijnlijk een windows bug is omdat het probleem bij linux/unix niet optrad...

Verwijderd

Topicstarter
Op donderdag 27 juni 2002 09:43 schreef Timz het volgende:
Ik las net bij php.net dat er ook andere mensen zijn met dat probleem en dat het waarschijnlijk een windows bug is omdat het probleem bij linux/unix niet optrad...
mwha de server is een linuxbak dus daar kan het niet aan liggen.

ik weet niet of ik die sessionstart wel moet weghalen. Want ik maak gebruik van sessies voor me login systeem.
Maar ik heb nu idd bij de foutmelding het form nog eens geplaatst.

Verwijderd

Op woensdag 26 juni 2002 23:01 schreef SilentThunder het volgende:
dus zeg ik: efficientere code schrijven, niet in de zin van snel, maar makkelijker te hanteren
En dat zei ik al, gewoon je form dynamisch genereren. dan is iedere aanpassing een kleine moeite.
Op donderdag 27 juni 2002 13:19 schreef Frankz0r het volgende:
mwha de server is een linuxbak dus daar kan het niet aan liggen.
Maar de browser waar het probleem in optreed draait (waarschijnlijk) onder windows! En daar gaat het om

Verwijderd

ik print ""; het hele form maar ik heb het probleem daarna nogsteeds..

Verwijderd

Topicstarter
Op donderdag 27 juni 2002 14:17 schreef Timz het volgende:
ik print ""; het hele form maar ik heb het probleem daarna nogsteeds..
volgens mij is er niet veel verschil tussen print "" of echo ""

  • Vigory
  • Registratie: November 2000
  • Laatst online: 15-04 10:26
Met echo kun je meerdere regels printen, met print niet.

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Op vrijdag 28 juni 2002 15:20 schreef Vigory het volgende:
Met echo kun je meerdere regels printen, met print niet.
Nee hoor, dat kan met beide... het verschil schijnt te zijn dat je met print wel 'Variable functions' kunt aanroepen en met echo niet. Daarbij geeft print nog een True of False terug indien wel/niet geslaagd.

If nothing is written below, I was the last to reply...

Pagina: 1