07. maj 2012 - 11:39 Der er 7 kommentarer og
1 løsning

RETur(1) = header1; RETUR(2) = header2 ?

Hej,

Jeg har en PHP form (= HTML-side), hvor jeg via 10 SUBMIT - buttons kalder samme PHP-funktion (saveweb.php). Denne "saveweb.php-funktion henter ALLE navngivne HTML-tags i den pågældende forms område, udregner nogle parametre / variable ud fra disse HTML-tags og skriver disse parametre/variable til en MYSQL base.

Dette fungerer perfekt.

Men når jeg skal returnere har jeg et problem:

Som det er nu returnerer jeg til en fast sted (nemlig begyndelsen af siden). 

header("Location:http://www.mypage.com?pg=1&subpg=1");

(variablerne pg og subpg er navigationsparametre )

Jeg har lavet en:
header("Location:http://www.mypage.com?pg=1&subpg=$var");

(hvor det så var meningen at $var skulle ændres efter hvilken SUBMIT-button som blev trykket. Men det gir mig en fejl.

Spørgsmål:  Er det muligt at lave en "dynamisk" retur, således aT:

SUBMIT_1 (tryk) --> SAVEWEB.PHP  + RETUR via HEADER1 til SUBMIT1 FORM ?

SUBMIT_2 (tryk) --> SAVEWEB.PHP  + RETUR via HEADER2 til SUBMIT2 FORM ?

SUBMIT_3 (tryk) --> SAVEWEB.PHP  + RETUR via HEADER3 til SUBMIT3 FORM ?

osv ??

HEADER 3 vil være hvor $subpg = 3;
HEADER 2 vil være hvor $subpg = 2;
HEADER 1 vil være hvor $subpg = 1;

osv

Eller skal vi over i en anden løsning ?

Kristian
07. maj 2012 - 14:57 #1
Måske vil du fortælle hvilken fejlmelding du får og vise den kode hvor du indfanger værdien af submit-button'en og placerer den i $var.  I det følgende tekst eksempel jeg lavede lykkedes det mig at returnere til forskellige sider alt efter indholdet i en variabel.  Jeg lavede to filer, location2.php og location3.php, og så brugte jeg i filen location1.php denne kode:

<?php
$var = '2';
header("Location: location".$var.".php");
?>

hvorved jeg fik filen location2.php.  Hvis jeg ændrede til $var = '3' fik jeg location3.php.
07. maj 2012 - 15:41 #2
HEJ

Tak for svar.

Jeg synes din ide lyder som vejen frem.

Her er koden kort fortalt:

En PHP - sløjfe kører 10 gange (antal af SUB-buttons // antal i MYSQL-basen):

Skaber en FORM
( echo ('<FORM action="savesel.php" method="POST">');  )

I Formen er en TABLE med (reelt) 2 variable:

Et varenummer (TD-tag) og en SELECT (antal):

<select name="antal'.$myrow[2].'">');  (* $myrow{2] = varenummer *)

<optioner = 0--10 value = 0--10 >
</select></table> -- OSV...
</FORM>

Således at når SUBMIT'ten 'fyres' af sendes alt som POST (dvs. varenummer og antal).

Varenummer er oså lavet som <a href=#varenummer></A> og <a name=varenummer></A> , som det er muligt at linke til den pågældende form.


Savesel.php:

<?php
if(isset($_POST))
{
    foreach($_POST As $key => $value)
    {
        $$key = $value;
        if(is_array($value))
        {
            foreach($value As $k => $v)
            {
                $$k = $v;
                echo "<br> 1:  ".$k."  = ".$v;
            }
        }
        else
        {
/*          $substring = substr($original, $start, $length)    */
/*          echo "<br> 2:  ".$key." = ".$value."<BR><BR>";      */

            if (strlen($key) == 8)
            {
                /* længde = 8 */
                $ant = substr($key,0,5);      /* start i 0 */
                if ($ant = 'antal')
                {
                    $vare = substr($key,5,3);
                    if ($value != 0)
                    {
                        echo($value." X ". $vare ." lagt i innkjøpsbase <BR><BR>");
                    }
                }
            }
        }
  }
}
?>

Dette er en TEST-udgave - UDEN HEADER'S.

SELECTEN i index.php (sender "ANTAL+varenummer" (eks: ANTAL411) ) og antal. Rutinen piller strengen "antal" fra)- returnerende 411 . Dette nummer bruges som INDEX i en anden database (Stam-Varebasen), som henter pris, leveringstid, moms. etc. som så skal skrives til indkøbsbasen ("trillevognen") (som igen vises på index.php). Antal hentes også fra $_POST Arrayet. Disse værdier skrives ind i indkøbsbasen.

Dette varenummer (her 411) kan jeg (efter din ide) bruge som switch-værdi i en header-liste (som den du skitserede).

Prøver det og melder tilbage.

KRistian
08. maj 2012 - 15:45 #3
Forventer du yderligere input fra mig nu?  Jeg forstod, at du ville prøve af og melde tilbage.  Noget nyt?
08. maj 2012 - 22:42 #4
hej,

Undskyld jeg ikke har været her. Jeg har været væk hele dagen (og det meste af dagen og aften i går også....

(har lidt problemer med mit tastatur, Windows tror det er Norsk og det gir lidt "knas" med ÆØÅ -visningen- således at GØ kommer som GÆ ... (hvis jeg ikke retter det..) Tror der er noget virus-lignende på maskinen... )

Jo det var meningen at jeg ville bruge din kode som "en profil" for mine returneringer, men har af ovennævnte grund ikke fået prøvet det endnu. Forventer at kunne lave kode, test og afprøvninger enten sent (her) i aften eller i læbet af i morgen formiddag.


KR
09. maj 2012 - 11:09 #5
HEJ

Har afprøvet ideen. Men lidt modifikationer (= en SWITCH ) ser det ud til at fungere tilfredstillende.

Fandt fejlen på maskinen. Dansk er nu dansk igen... (hehe).

Drop et svar og du er 30 point rigere.

PS: SKal ud og rende igen i dag (kommer måske MEGET SENT hjem), så regn ikke med at pointene er der før en gang i løbet af i morgen (eller fredag - hvis jeg skal rendi igen i morgen - men pointene kommer... )

KR
09. maj 2012 - 13:10 #6
Til lykke med løsningen du har fundet.  Jeg er glad, hvis jeg har kunnet give et skub i den rigtige retning.  Svar fra mig.
11. maj 2012 - 13:35 #7
HEJ

10000 --> 000 (bestem salv antaL (HEHE) ) tak for skubbet i den rigtige retning ..

KR
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester