23. maj 2001 - 18:36Der er
20 kommentarer og 1 løsning
Preview funktion
Jeg bruger nedenstående script til at indsætte nyheder på en hjemmeside. Systemet virker som det skal, men jeg kunne godt tænke mig en \"preview\" funktion.
Det vil sige istedet for den indsætter nyheden i databasen med det samme, så skal man først gennem en side hvor man kan se det indtastede. Herefter kan det godkendes eller man kan gå tilbage og rette.
Er der en der kan lave en sådan funktion eller give mig noget hjælp til det?
okay, du skal først sende dataene til en mellem side før de bliver kylet i databasen. På den mellemside tager du de tilsendte variabler og udskriver dem på samme måde som du ville gøre det hvis de blve set af en bruger.
Når man trykker på ok bliver det så sendt hen til den side som smider det i databasen
Så vil jeg iøvrigt gerne henvise til: http://www.eksperten.dk/spm/74977 Der kommer jeg faktisk med samme svar... Hvis du læser det skulle det kunne forstås...
A: Database til at rette i og se preview. B: Database til at vise verden.
Alt hvad din preview skal gøre, er at sætte en site-wide cookie. Dine scripts som bruger mysql skal så alle hente informationer om database og password fra et centralt sted. Her ser du om preview cookie er sat og vælger den rigtige database.
Du skal så også have en update funktion, som kopierer indhold af preview database over i den anden.
men man kunne vel sådan ogdå bare lave en if sætning inden i dokumentet, så man første gang fik hvis en form, man udfylder den, hvorefter man reloadersiden, men nu i en anden mode, nemlig prewiev. Herfra kan så vælges at gå tilbage eller godkende
Den kode som du har nu ligger du en fil som kunne hedde submit.php Så laver du en fil som hedder indsend.php Og en som hedder preview.php
submit.php skal ikke indeholde andet end den kode som du havde i starten.
indsend.php skal indeholde de <form> man skriver i. Indholdet skal sendes til preview.php (action=\"preview.php\")
I preview.php udskriver du så det som bliver tilsendt sådan som der kommer til at se ud endeligt.
Prøv først at lave det inden vi går til sidste trin. Når du har lavet det, så skriv hvad du kalder de variabler som bliver sendt til preview.php - eller hvad du nu kalder filen. Så forklarer jeg resten.
Beklager, at det har taget nogle dage inden jeg svarer, men har haft meget travlt.
submit.php -> Har den kode jeg har pasted aller øverst på denne side.
indsend.php -> Her er jeg ikke helt med på de forms, da jeg allerede har dem i submit.php?
Og så lige en ting mere: Er det ikke muligt at lave submit.php, indsend.php og preview.php til een fil hvor de 2 af dem blot er funktioner i siden. Det vil være rart at slippe for flere filer og det gør vel ikke noget om man sender til xx.php?action=preview eller bare preview.php.
Jeg ville faktisk have svaret for laaang tid siden, men jeg kom til at poste svaret i et forkert forum:-) Her er det så:
<?php /* * Den del af siden som brugeren starter med at se. * Det er her han/hun sender oplysningerne * Oplysningerne bliver sendt til preview siden */
if($action == \"\"){
?> <FORM METHOD=\"POST\" ACTION=\"\"> <!-- action=\"\" da den skal sendes til sig selv --> <INPUT TYPE=\"text\" NAME=\"noget\"> <!-- $noget er det som du sender --> <INPUT TYPE=\"hidden\" name=\"action\" value=\"preview\"> <!-- $action fortæller siden hvad den skal gøre med det som bliver tilsendt --> <INPUT TYPE=\"submit\" value=\"Preview\"> </FORM>
<?php } /* * Preview delen som udskriver det der blev sendt fra forrige side * Det er her validerer oplysningerne * Oplysningerne bliver sendt til gem siden */
if($action == \"preview\"){ echo $noget; //udskriver det som blev sendt
?> <FORM METHOD=\"POST\" ACTION=\"\"> <INPUT TYPE=\"hidden\" name=\"noget\" value=\"<?php echo $noget; ?>\"> <!-- Sørger for at $noget har samme værdi som på siden før --> <INPUT TYPE=\"hidden\" name=\"action\" value=\"gem\"> <!-- Fortæller at siden skal gemme oplysningerne næste gang --> <INPUT TYPE=\"submit\" Value=\"Gem\"> </FORM>
<?php
}
* Gem delen som gemmer det der blev sendt fra preview siden * Det er her gemmer oplysningerne * if($action == \"gem\"){ //noget som gemmer $noget eller hvad du nu har sendt med }
hmm, jeg mangler lige to / i den sidste del, her er det igen:
<?php /* * Den del af siden som brugeren starter med at se. * Det er her han/hun sender oplysningerne * Oplysningerne bliver sendt til preview siden */
if($action == \"\"){
?> <FORM METHOD=\"POST\" ACTION=\"\"> <!-- action=\"\" da den skal sendes til sig selv --> <INPUT TYPE=\"text\" NAME=\"noget\"> <!-- $noget er det som du sender --> <INPUT TYPE=\"hidden\" name=\"action\" value=\"preview\"> <!-- $action fortæller siden hvad den skal gøre med det som bliver tilsendt --> <INPUT TYPE=\"submit\" value=\"Preview\"> </FORM>
<?php } /* * Preview delen som udskriver det der blev sendt fra forrige side * Det er her validerer oplysningerne * Oplysningerne bliver sendt til gem siden */
if($action == \"preview\"){ echo $noget; //udskriver det som blev sendt
?> <FORM METHOD=\"POST\" ACTION=\"\"> <INPUT TYPE=\"hidden\" name=\"noget\" value=\"<?php echo $noget; ?>\"> <!-- Sørger for at $noget har samme værdi som på siden før --> <INPUT TYPE=\"hidden\" name=\"action\" value=\"gem\"> <!-- Fortæller at siden skal gemme oplysningerne næste gang --> <INPUT TYPE=\"submit\" Value=\"Gem\"> </FORM>
<?php
}
/* * Gem delen som gemmer det der blev sendt fra preview siden * Det er her gemmer oplysningerne */ if($action == \"gem\"){ //noget som gemmer $noget eller hvad du nu har sendt med }
Jeg har fået det hele til at virke nu, men en ting der mangler er:
Når man står på preview siden og finder en fejl, så vil man tilbage og rette. Det linker jeg til med java script:history.go(-1), men når den går tilbage, så er formen TOM. Det vil sige man skal indtaste alt forfra. Kan dette undgås?
I formen udskriver du værdierne som balue=\"\". Altså: <input type=\"text\" name=\"noget\" value=\"<?php echo $noget; ?>\"> Så får det den værdi som man vil have. Men du skal ikke bruge javascript hvis det skal virke. Du skal sende folk tilbage via en submit knap, eller et link. Ellers tror jeg ikke at værdierne bliver udskrevet...
<?php /* * Den del af siden som brugeren starter med at se. * Det er her han/hun sender oplysningerne * Oplysningerne bliver sendt til preview siden */
if($action == \"\"){
?> <FORM METHOD=\"POST\" ACTION=\"\"> <!-- action=\"\" da den skal sendes til sig selv --> <INPUT TYPE=\"text\" NAME=\"noget\" value=\"<?php echo $noget; ?>\"> <!-- $noget er det som du sender --> <INPUT TYPE=\"hidden\" name=\"action\" value=\"preview\"> <!-- $action fortæller siden hvad den skal gøre med det som bliver tilsendt --> <INPUT TYPE=\"submit\" value=\"Preview\"> </FORM>
<?php } /* * Preview delen som udskriver det der blev sendt fra forrige side * Det er her validerer oplysningerne * Oplysningerne bliver sendt til gem siden */
if($action == \"preview\"){ echo $noget; //udskriver det som blev sendt
?> <FORM METHOD=\"POST\" ACTION=\"\"> <INPUT TYPE=\"hidden\" name=\"noget\" value=\"<?php echo $noget; ?>\"> <!-- Sørger for at $noget har samme værdi som på siden før --> <INPUT TYPE=\"hidden\" name=\"action\" value=\"gem\"> <!-- Fortæller at siden skal gemme oplysningerne næste gang --> <INPUT TYPE=\"submit\" Value=\"Gem\"> </FORM>
<FORM METHOD=\"POST\" ACTION=\"\"> <INPUT TYPE=\"hidden\" name=\"noget\" value=\"<?php echo $noget; ?>\"> <!-- Sørger for at $noget har samme værdi som på siden før --> <INPUT TYPE=\"hidden\" name=\"action\" value=\"\"> <!-- Fortæller at oplysningerne skal vises i starten igen så de kan rettes --> <INPUT TYPE=\"submit\" Value=\"Ret\"> </FORM> <?php
}
/* * Gem delen som gemmer det der blev sendt fra preview siden * Det er her gemmer oplysningerne */ if($action == \"gem\"){ //noget som gemmer $noget eller hvad du nu har sendt med }
?>
Ideen er er der er to forme som gør noget forskelligt på preview siden. Den ene sender personen tilbage for at rette, den anden sender vidre til gemning.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.