<select> och array

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Tinwëlint
    Medlem
    • 2004-05-11
    • 478

    #1

    <select> och array

    Har en array som skriver ut selecttaggar till ett mailformulär (man ska kunna välja vem man vill skicka till). Såhär:

    PHP Code:
    $mottagare=array(
        array('ordf', 'Ordförande', '[email protected]'),
        array('judo', 'Ansvarig Judo', '[email protected]'),
        array['jutsu', 'Ansvarig Ju shin jutsu', '[email protected]'),
        array('webbm', 'Webbmaster', '[email protected]')
    )
    
    och senare:
    
    foreach ($mottagare as $row) {
    
    echo "<option value=\"$row[0]\">$row[1]</option>\n
    
    } 
    
    För att mailadressen varken ska visas på sidan eller i koden så låter jag value vara en förkortning av namnet ($row[0], kanske är onödigt?). Problemet är hur jag sedan ska veta vilken array som har valts inför skickningen av mailet och därifrån få ut mailadressen. Jag har knappt en aning om hur jag ska göra.

    r/stavfel åtgärdat

    r2/ändrade till dummy-adresser.
    Last edited by Tinwëlint; 2004-08-08, 12:31.

    Först när konsumenten upplöser produkten, dubbar den produkten till produkt; ty produktionen är inte produkt som objektiverad aktivitet utan bara som objekt för det aktiva subjektet.

    Blogg | Jag på Audioscrobbler | wF:s Audioscrobblergrupp
  • Matte
    Absent friend
    • 2000-08-10
    • 2970

    #2
    Du kan göra så här:
    PHP Code:
    $mottagare = array(
        'ordf' => array('Ordförande', '[email protected]'),
        'judo' => array('Ansvarig Judo', '[email protected]'),
        'jutsu' => array('Ansvarig Ju shin jutsu', '[email protected]'),
        'webbm' => array('Webbmaster', '[email protected]')
    )
    
    
    echo "<select name='mail'>\n";
    foreach ($mottagare as $key => $val) {
    
    echo "<option value=\"$key\">$val[0]</option>\n";
    
    }
    
    echo "</select>\n"; 
    
    Och sedan i skriptet som tar emot formuläret:
    PHP Code:
    $mottagare = array(
        'ordf' => array('Ordförande', '[email protected]'),
        'judo' => array('Ansvarig Judo', '[email protected]'),
        'jutsu' => array('Ansvarig Ju shin jutsu', '[email protected]'),
        'webbm' => array('Webbmaster', '[email protected]')
    )
    
    echo $mottagare[$_POST['mail']][1]; 
    
    Last edited by Matte; 2004-08-08, 12:46.
    Funktion är vackert

    Comment

    • Tinwëlint
      Medlem
      • 2004-05-11
      • 478

      #3
      Hmmm, förkortningen är då "key" till arrayen okej,
      Måste jag upprepa arrayen där nere sen? Det gör i och för sig inget. Den ska bara innehålla de där fyra så det blir ju inte särskilt komplicerat.

      Efter att ha kollat igenom en stund förstår jag också. Hurra!
      mail innehåller nyckeln.
      $_POST är en array som skapas med innehållet från formuläret som postas och mail i den kommer att vara nån av de fyra nycklarna som används för att välja ut rätt rad i arrayen $mottagare.
      Tack.

      Först när konsumenten upplöser produkten, dubbar den produkten till produkt; ty produktionen är inte produkt som objektiverad aktivitet utan bara som objekt för det aktiva subjektet.

      Blogg | Jag på Audioscrobbler | wF:s Audioscrobblergrupp

      Comment

      • aasah
        Medlem
        • 2003-03-16
        • 3451

        #4
        Tinwëlint - om du inte vill att mailadresserna ska synas på nätet så hoppas jag att du använt dummy-värden här?

        Annars kanske det är läge att redigera in sådana...

        Comment

        • Tinwëlint
          Medlem
          • 2004-05-11
          • 478

          #5
          Oj. Vad dum jag känner mig.
          Ber Matte snällt att också ändra.

          r/ Tack båda två.
          Last edited by Tinwëlint; 2004-08-08, 12:48.

          Först när konsumenten upplöser produkten, dubbar den produkten till produkt; ty produktionen är inte produkt som objektiverad aktivitet utan bara som objekt för det aktiva subjektet.

          Blogg | Jag på Audioscrobbler | wF:s Audioscrobblergrupp

          Comment

          • Matte
            Absent friend
            • 2000-08-10
            • 2970

            #6
            [citat=Tinwëlint]Ber Matte snällt att också ändra.[/citat]
            Fixat


            [citat=Tinwëlint]Måste jag upprepa arrayen där nere sen?[/citat]
            Har du det i samma skript så räcker det med en gång.
            Funktion är vackert

            Comment

            • Tinwëlint
              Medlem
              • 2004-05-11
              • 478

              #7
              [citat=Matte]
              Har du det i samma skript så räcker det med en gång.
              [/citat]

              Ok. Tänkte väl det.

              Först när konsumenten upplöser produkten, dubbar den produkten till produkt; ty produktionen är inte produkt som objektiverad aktivitet utan bara som objekt för det aktiva subjektet.

              Blogg | Jag på Audioscrobbler | wF:s Audioscrobblergrupp

              Comment

              • Tinwëlint
                Medlem
                • 2004-05-11
                • 478

                #8
                Problemet nu är att jag inte får det att fungera med resten av mitt kontakt-skript .

                Såhär ser koden ut (lite modifierad version av walter groupious skript):

                PHP Code:
                <?php
                
                $mottagare = array(
                    'ordf' => array('Ordförande', '[email protected]'),
                    'judo' => array('Ansvarig Judo', '[email protected]'),
                    'jutsu' => array('Ansvarig Ju shin jutsu', '[email protected]'),
                    'webbm' => array('Webbmaster', '[email protected]')
                )
                
                ?>
                
                
                <form action="" method="post">
                <p>
                <select id="to" name="to" tabindex="1">
                
                
                <?php
                foreach ($mottagare as $key => $val) {
                
                echo "<option value=\"$rkey\">$val[0]</option>\n";
                
                }
                ?>
                
                </select>
                <label for="to">Till</label>
                <p>
                <input id="name" type="text" name="name" size="30" tabindex="2" />
                <label for="name">Namn</label>
                </p>
                <p>
                <input id="subject" type="text" name="subject" size="30" tabindex="3" />
                <label for="subject">Ämne</label>
                </p>
                <p>
                <input id="email" type="text" name="email" size="30" tabindex="4" />
                <label for="email">E-post</label>
                </p>
                <p>
                <label for="message">Skriv ditt meddelande här:</label>
                <textarea id="message" name="message" cols="70" rows="5"  tabindex="5"></textarea>
                </p>
                <p>
                <button name="submit" type="submit" value="Skicka" tabindex="6">Skicka</button>
                </p>
                </form>
                
                <?php
                
                $headers = "MIME-Version: 1.0\r\n";
                $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
                $headers .= "To: $till\r\n";
                $headers .= "From: $name\r\n";
                $headers .= "Reply-To: $email\r\n";
                
                extract($_POST);
                if ($_POST['submit']) { 
                
                $till = $mottagare[$_POST['to']][1];
                
                    if($till && $name && $subject && $email && $message ) { // kollar så alla fält är ifyllda
                        if (return_valid($email)) {
                            mail($till,$subject,$message,"From: $name <$email>",$headers); // skickar mailet
                            echo "<p>meddelandet skickat!</p>"; 
                            
                             
                        } else {
                          print "<p>Fyll i alla fält!</p>"; 
                        
                    
                  }
                 }
                }
                
                function return_valid($e_mail) {
                if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $e_mail)) {
                return TRUE;
                }
                else {
                  echo "<p>Ogiltig epostadress!</p>";
                return FALSE;
                }
                }
                //--------- end 
                
                ?>
                Någonting vid mitt skapande av "$till = $mottagare[$_POST['to']][1];" måste vara fel.

                Texten "meddelande skickat" kommer inte fram och inga meddelanden skickas. Någon som ser något fel direkt?


                En testsida ligger här (om någon provar att skicka gör det till webbmaster är ni snälla, de andra blir nog lite förvånade om de får en massa konstiga mail.):
                Last edited by Tinwëlint; 2004-08-08, 14:37.

                Först när konsumenten upplöser produkten, dubbar den produkten till produkt; ty produktionen är inte produkt som objektiverad aktivitet utan bara som objekt för det aktiva subjektet.

                Blogg | Jag på Audioscrobbler | wF:s Audioscrobblergrupp

                Comment

                • Matte
                  Absent friend
                  • 2000-08-10
                  • 2970

                  #9
                  Det har smugit med ett litet r som inte ska vara där


                  Ändra
                  PHP Code:
                  echo "<option value=\"$rkey\">$val[0]</option>\n";
                  
                  // Till
                  echo "<option value=\"$key\">$val[0]</option>\n"; 
                  
                  Så kanske det fungerar.



                  PS
                  mailadresserna ?
                  Funktion är vackert

                  Comment

                  • Tinwëlint
                    Medlem
                    • 2004-05-11
                    • 478

                    #10
                    Vad slarvig jag känner mig idag. Tack.

                    Först när konsumenten upplöser produkten, dubbar den produkten till produkt; ty produktionen är inte produkt som objektiverad aktivitet utan bara som objekt för det aktiva subjektet.

                    Blogg | Jag på Audioscrobbler | wF:s Audioscrobblergrupp

                    Comment

                    Working...