11. marts 2011 - 11:37Der er
48 kommentarer og 1 løsning
Gå 2 sider tilbage
Hej.
Jeg har lavet nogle sider i DW og de virker sådan set fint nok :-)
Men der bruges denne kommano: $insertGoTo = "index.html";
Der er så det problem, at der genereres en lang liste fra databasen, og når man så trykker på ret, så kommer man til en formular med data i og kan rette, og ved gem rettelse farer den så til index.html.
Men da listen er meget lang - flere hundrede poster - ville det jo være meget skønnere hvis den gik tilbage hvor den kom fra.
Jeg synes ikke rigtig jeg kan finde noget om at ændre på $insertGoTo så man kan det, da det åbenbart skal være et filnavn der står deri.
Er her en der har en snedig løsning, hvis altså I forstår hvad jeg mener. Synes det er lidt svært at forklare.
Hvis jeg har forstået spørgsmålet: Send adressen med i et skjult felt, så stedet er muligt at komme til tilbage til. PHP har ikke styr på browserens history. Noget i stil med:
- og når brugeren har rettet, kan vedkommende sendes tilbage til $_POST["redirectto"]
/mvh </bole>
Synes godt om
Slettet bruger
11. marts 2011 - 12:51#4
Det kan jeg ikke lige se hvordan jeg får ind i systemet.
Lad os sige der er 600 poster i databasen. Der laves så en liste via et udtræk, så der kommer 600 linier under hinanden.
Man scroller så nedad og finder ud af at der i post 301 er en fejl - man har scrollet langt ned - og den vil man så rette.
Pointen er så at komme tilbage til listen på det sted omkring post 301, istedet for i toppen og skal scrolle hele vejen ned igen.
Hjælper det på forklaringen ? Selve virkemåden er ganske almindelig, det er bare det med at komme tilbage til det rigtige sted. Også helst uden at skulle lave det hele om :-)
Ole.
Synes godt om
Slettet bruger
11. marts 2011 - 13:26#5
Nu har jeg så forsøgt lidt, men den bliver bare i retteformularen, og skifter ikke side.
Det er åbenbart ikke lige at lave ? Det er jo en skam, da det er ret praktisk :)
Jeg har ingen idé om, hvordan din HTML er indrettet, men det lyder som noget med et anker(?) Det lyder ikke som noget, du kan løse med PHP
Synes godt om
Slettet bruger
11. marts 2011 - 13:55#7
Nej, jeg er desværre bange for at du har ret.
Det er jo faktisk et bogmærke (kan man sige) der skal oprettes og kun eksistere til man er kommet tilbage igen :) og det kan man nok ikke.
Jeg takker for tips, og du må gerne smide et svar for interessen og tiden du har brugt. Jeg tror desværre heller ikke det kan løses sådan lige, men jeg håbede. De brugere kan jo også finde på det mest umulige :-)
Man skal på en eller anden måde kende stedet, brugeren skal tilbage til. Den position kan man gemme med JavaScript, hvis brugeren foretager en handling på det pågældende sted - f.eks. klikker på en knap, inden han scroller. Skal man gætte sig frem til, hvor han stod, er man derimod ude i noget clairvoyance - og der er PHP endnu ikke nået til =)
Tak, det vil jeg studere, men jeg er ikke sikker på det er noget jeg kan finde ud af. Men lige nu tror jeg at jeg vil studere tilløb til at komme hjem og holde fyraften :-)
- og ankeret kunne passende være ID'et fra DB-tabellen. Hvis det er et talfelt med auto iterering, er det unikt - og skal bare have et bogstav foran for at være en valid HTML identifier
Synes godt om
Slettet bruger
11. marts 2011 - 21:24#13
Hmmm, det ved jeg faktisk ikke.
Id'et er med over for at finde den post der skal rettes. Men udtrækket sorteres efter titel, så hvis man laver titel som bogmærke, samtidigt med det er lavet til link for at se alt indhold på den post, men kan man det i php ?
Det lyder lidt spændende, men jeg kan ikke lige gennemskue det, så det kan blive til noget kode.
Så kan du kalde siden med URL'en: side.php#a_345 - og brugeren vil blive scrollet ned til linket med linkteksten En linktekst C
Bemærk, at der er sat et bogstav a foran ID'et, når det bliver skrevet som HTML-id i linket. Det skyldes, at et HTML-id ikke må begynde med et tal
Synes godt om
Slettet bruger
11. marts 2011 - 21:44#16
Det ser interessant ud. Men kan man det, når linket er baseret på ID for at finde posten der skal rettes ? Jeg synes det virker som om der vil være et problem med at finde posten når det ikke er et rent ID der sendes over.
Men det er da helt sikkert noget noget vil se om jeg kan gøre i morgen. Jeg kan desværre ikke i aften, selvom det er ufattelig spændende, hvis det kan kommme til at virke.
Linkets id - altså "a_345" - bliver ikke sendt med. Det gør derimod "id=345" ;o)
Synes godt om
Slettet bruger
11. marts 2011 - 21:54#20
Aha :-)
Jeg tester det i morgen, hvis jeg hitter ud af det. Det hele ligger lokalt på en maskine, og kan desværre ikke tilgået ude fra. Derfor har jeg heller ikke kunne vise det her med et link.
TAK intil nu. Jeg melder tilbage når jeg har testet.
Når du kommer tilbage til siden igen - efter rettelsen af posten med DB-ID: "123" - er du så helt sikker på, der står det rette i browserens adressefelt ... altså sluttende med: VisListe.php#a_123? Og er du samtidig helt sikker på, du i kildekoden til denne side (stadig) har en TD med id="a_123" (tjek med View Source i din browser)?
Husk lige på, at hvis du har slettet posteringen med DB-ID: "123", er der jo ikke længere en TD med dette id, når du kommer tilbage. Derfor vil du ikke blive scrollet ned ad siden ;o)
Dette kan du komme ud over, hvis du bruger en JavaScript løsning:
<script type="text/javascript"> function setScrollTop(oLnk) { // Føj værdien af sidens scrollTop til query strengen // - i det øjeblik, brugeren klikker på linket: oLnk.href += "&scrlTop=" + document.documentElement.scrollTop; }
window.onload = function() { <?php // Hvis en scrollTop-værdi sendes med i URL'en, // - så lægges dennes værdi i $numScroll. // Ellers sættes $numScroll = 0 if (empty($_GET["scrlTop"])) $numScroll = 0; else $numScroll = $_GET["scrlTop"]; ?>
// Scroll ned til stedet ned JavaScript var nScrollTop = <?php print $numScroll ?>; window.scrollTo(0, nScrollTop); } </script>
// Redirect tilbage til dokumentet med listen // - og send værdien for scrollTop med Header("Location: VisListe.php?scrlTop=".$_GET["scrlTop"]); ?>
Så burde det lykkes for dig =)
Synes godt om
Slettet bruger
12. marts 2011 - 19:05#25
Nu har jeg forsøgt det du har skrevet.
Når jeg ser oppe i adresselinien efter at være kommet tilbage til VisListe.php siden, skiver den dette, som jeg ikke rigtig kan forholde mig til:
VisListe.php#LinkTekst?nr=520&scrlTop=3073
Lige nu kan jeg ikke finde ud af hvor LinkTekst kommer fra (det står jo nok et sted, men har ikke fundet det endnu).
nr er rigtig nok, da jeg har rettet ID 500, men det næste tal ved jeg ikke hvad er. Men det må vel være positionen hvor den kom fra. Den ruller bare ikke derned.
Den går tilbage, men bliver i toppen.
Jeg har nok lavet noget forkert, så det er det jeg forsøger at finde lige nu.
3073 er det antal pixels, du havde scrolled ned for at klikke på linket. Derfor burde der, når du kikker i kildekoden (i browseren) stå:
window.onload = function() { // Scroll ned til stedet med JavaScript var nScrollTop = 3073; window.scrollTo(0, nScrollTop); }
Tallet, der står udfor JS-variablen skulle altså gerne være det samme som, der står i adresselinjen. Er det tilfældet, burde siden også scrolle ned til det korrekte sted
Sært! Prøv lige med denne onload handler i stedet og lad mig høre, hvad der står i View Source:
<script type="text/javascript"> function setScrollTop(oLnk) { // Føj værdien af sidens scrollTop til query strengen // - i det øjeblik, brugeren klikker på linket: oLnk.href += "&scrlTop=" + document.documentElement.scrollTop; }
window.onload = function() { <?php // Hvis en scrollTop-værdi sendes med i URL'en, // - så lægges dennes værdi i $numScroll. // Ellers sættes $numScroll = 0 if (!isset($_GET["scrlTop"])) $numScroll = 0; else $numScroll = $_GET["scrlTop"]; ?>
// Scroll ned til stedet ned JavaScript var nScrollTop = <?php print $numScroll ?>; window.scrollTo(0, nScrollTop); } </script>
Synes godt om
Slettet bruger
12. marts 2011 - 19:58#31
Det hjalp desværre ikke noget:
window.onload = function() {
// Scroll ned til stedet ned JavaScript var nScrollTop = 0; window.scrollTo(0, nScrollTop); }
Så er der noget, der ikke stemmer. Hvis der står VisListe.php#LinkTekst?nr=520&scrlTop=3073 i adresselinjen, så skal der stå: var nScrollTop = 3073; i JS-koden
Synes godt om
Slettet bruger
12. marts 2011 - 20:20#33
Når jeg skal tilbage er det vel dette der sørger for at det hele er med ?
Du laver med statsgaranti en fejl - men jeg kan nok ikke komme det nærmere uden selv at sidde med filerne og se, hvad der går galt.
Er du 100% sikker på, du staver scrollTop-variablen ens i adresselinjen, og når du prøver at hive den ud med $_GET ved JavaScriptet? Det er den eneste fejl, jeg kan komme i tanker om, skulle kunne give det resultat
Synes godt om
Slettet bruger
12. marts 2011 - 20:23#35
Nå, du havde skrevet mens jeg skrev :)
Men der står nul i koden. Så jeg er faldet af nu. Jeg kender ikke noget til de funktioner, så jeg kan ikke gennemskue det der kode.
Synes godt om
Slettet bruger
12. marts 2011 - 20:25#36
Ok. Jeg kan godt lægge filerne ind her, men er det ikke for meget ?
Brug aldrig$_SERVER['QUERY_STRING']. Det giver dig ingen kontrol over, hvor noget kommer fra. Brug i stedet $_GET eller $_POST - alt efter, om du sender get eller post
Undskyld, men du spilder min tid *BIG TIME*! Har jeg ikke lige fortalt dig, du mister enhver kontrol over din kode, når du bruger $_SERVER['QUERY_STRING'];?
Det er helt op til dig, om du vil skide på, hvad mere erfarne folk fortæller dig - men så lad være med at spilde vores tid, tak!
Synes godt om
Slettet bruger
12. marts 2011 - 20:54#44
Nå da.
Det jeg klistrede ind var for at vise at jeg havde kommenteret det ud.
Det må du undskylde.
Synes godt om
Slettet bruger
13. marts 2011 - 17:03#45
olebole
Jeg forstår simpelthen ikke hvad du er blevet knotten over ?
Jeg synes jeg, efter bedste evne, har gjort hvad du har foreslået.
Og det er kommet til at virke, så jeg vil meget gerne have et svar fra dig, så spørgsmålet kan afsluttes.
Ved at ændre nedenstående kan du se det er kommenteret ud, og her lidt tydeligere end før.
/* start på kommentar $updateGoTo = "VisListe.php?scrlTop=".$_GET["scrlTop"]""; if (isset($_SERVER['QUERY_STRING'])) { $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?"; $updateGoTo .= $_SERVER['QUERY_STRING']; } */ slut på kommentar
// og nedenfor den linie du skrev jeg skulle indsætte.
Sorry! En fuldstændig uforbeholden undskyldning herfra - det var helt klart min dumme fejl! Jeg så åbenbart ikke din udkommentering på trods af dens tydelighed. Det må du virkelig undskylde ... det var dumt af mig!
Jeg kommer her efterhånden sjældent, så jeg samler ikke længere points - men tak for tilbudet.
Jeg håber, vi mødes igen. Så skal jeg gøre mit bedste for at læse, hvad du skriver - og ikke hvad jeg tror, du skriver ;o)
Pinligt!
Synes godt om
Slettet bruger
13. marts 2011 - 18:01#47
Alt forladt.
Jeg havde på fornemmelsen, at det var en læsefejl :-) men jeg ville gerne være sikker på at det var en misforståelse.
Men selvom du ikke samler på point vil jeg gerne have du svarer så jeg kan give dig dem alligevel. Du løste et problem for mig som jeg faktisk var mere eller mindre sikker på ikke kunne lade sig gøre. Det er utroligt hvad I kan er på eksperten. Det er en ren fornøjelse.
Selvtak og ikke mindst tak for overbærenheden. I fredens og fordragelighedens navn lægger jeg et svar ... Peace! ;o)
Synes godt om
Slettet bruger
13. marts 2011 - 19:17#49
Ok. Så siger jeg tak. Det er jo li'som rarest at man giver noget for at få løst sit problem.
Ole.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.