Avatar billede Morten Nybegynder
08. november 2004 - 13:50 Der er 30 kommentarer og
2 løsninger

data fra array

Jeg har følgende PHP kode:

    <?php
                //counter bruges til at farvelægge hveranden
                $counter = 1;
                while($rows = mssql_fetch_array($sql))
                    {
                        extract($rows, EXTR_OVERWRITE);
                        $current_letter = substr($rows['fornavn'],0,1);
                            if ($current_letter != $letter)
                                {
                                    echo "<tr><td colspan=\"7\" class=\"letter\"><a name='" . $current_letter . "'> " . $current_letter . "</td><td>";
                                    $counter = 2;
                                }
                               
                            switch ($counter)
                                {
                                    case 1:
                                        echo "<tr class=\"tr1\">";
                                        $counter = 2;
                                    break;
                                    case 2:
                                        echo "<tr class=\"tr2\">";
                                        $counter = 1;
                                    break;
                                }
                        echo " <td class=\"td_checkbox\"><input name=\"MailTo[]\" type=\"checkbox\"  value=\"".$rows["id"]." \"></td>";
                        echo "    <td class=\"td_names\">";
                            if ($rows["firma_email"] != ' ') {echo "<a href=\"mailto: " . $rows["firma_email"]. " \">";}
                        echo $rows["fornavn"] ;
                                if ($rows["firma_email"] != ' ')     {echo "<a/>"; }
                        echo "</td>";
                        echo "<td class=\"td_names\">". $rows["mellemnavn"] . "</td>";
                        echo "<td class=\"td_lastname\">". $rows["efternavn"] . "</td>";
                        echo "<td class=\"td_names\">". $rows["initialer"] . "</td>";
                        echo "<td class=\"td_names\">". $rows["telefon"] . "</td>";
                        echo "<td class=\"td_names\">". $rows["mobilnr"] . "</td>";
                        echo "</tr>";
                        $letter = substr($rows['fornavn'],0,1);
            }
        ?>

Jeg skal bruge noget hjælpe til at hente værdierne i min checkbox... kan jeg hente dem vha. en knappe (kode) eller er jeg nød til at bruge en Form som poster til en ny side og hvis hvordan hiver jeg så lige dataerne ud af arrrayet????
Avatar billede jakobdo Ekspert
08. november 2004 - 14:12 #1
Hvis du poster, så kan du hente dem med $_POST[mellemnavn];
Osv med resten af navnene.

Hvis du bruger GET, så er det $_GET[mellemnavn] osv.

Du kan godt poste til samme side som du er på "nu".
Avatar billede Morten Nybegynder
08. november 2004 - 14:16 #2
okay...

men nu er det sådan et MailTo bliver et array... så kan du hvis mig hvordan jeg fedter dem ud...?
Avatar billede istasi Nybegynder
08. november 2004 - 14:17 #3
Ja du skal bruge en form...
Da den er beregnet til at sende data fra side 1 til side 2...
Men du kan da med lidt javascript lave saa du ikke behoever den submit knap, kan jeg dog ikke hjaelpe med...
Og hvordan du ser data'en paa den anden side kan du proeve at se med en print_r ( $_POST ); ...
Du skal dog selv laese outputtet og se hvilket du skal ha.
Men kunne forstille mig det bliver noget med $_POST['MailTo\[\]'] ...
Er dog ikke sikker og gider ikke teste det for dig ;)
Avatar billede myplacedk Nybegynder
08. november 2004 - 14:18 #4
Du SKAL bruge en form, for at kunne bruge input-elementer.
I den side du angiver som action på din form, kan du fx. gøre sådan her:

if (isset($_POST['MailTo']) && is_array($_POST['MailTo'])) {
  $mailto = $_POST['MailTo'];
} else {
  $mailto = array();
}

(Forudsat at du har method="post" i din form.) Så vil $mailto være et array med de id'er der var kryds ved.
Avatar billede istasi Nybegynder
08. november 2004 - 14:21 #5
myplacedk, uhm nu kommer jeg i tvivl .. hans name i check box'en er 'name=\"Mail[]\"' .. men bliver [] bare ignoret
Avatar billede myplacedk Nybegynder
08. november 2004 - 14:25 #6
Nej, de bliver ikke ignoreret. Det er ligesom:
$a = array():
$a[] = "A";
$a[] = "B";
Giver samme resultat som:
$a = array("A", "B");

Som HTML-form:
<input type="hidden" name="a[]" value="A" />
<input type="hidden" name="a[]" value="B" />
Så vil dette igen give samme resultat:
$a = $_REQUEST['a'];

Hvis du gør sådan her:
<input type="hidden" name="a" value="A" />
<input type="hidden" name="a" value="B" />

Så vil $_REQUEST['a'] ikke være et array, men indeholde ENTEN "A" ELLER "B".
Avatar billede istasi Nybegynder
08. november 2004 - 14:28 #7
cddk, MailTo[] er et array ? .. saa kan du ikke noejes med blot 1 checkbox

// Siden som sender data
$i = 0;
while ( list ( , $indhold ) = each ( $MailTo ) )
  echo '<input type="checkbox" name="A'.$i++.'" value="'.$indhold.'" />';

// Siden som modtager data
$i = 0;
while ( isset( $_POST [ 'A'.$i ] ) )
  echo $_POST[ 'A'.$i++ ] . "<br />\n";

Jeg er dog ikke sikker paa at kode er 100% korrekt men ide'en i det burde hjaelpe dig lidt paa vej med hvordan det kunne komme til at se ud.

Koden som er skrevet under //Siden som sender data .. er koden som skal "skiftes" ud med din <input type"checkbox"> ... eller der omkring ...

Hvis du ikke helt ved hva jeg mener saa skriv det saa skal jeg eller nogle andre sikkert forklare det til dig
Avatar billede myplacedk Nybegynder
08. november 2004 - 14:31 #8
> cddk, MailTo[] er et array ?
Ja, det bliver det til.

> saa kan du ikke noejes med blot 1 checkbox
Jo det kan han godt, men det gør han ikke nødvendigvis, da det jo er ikke i en loop.
Avatar billede istasi Nybegynder
08. november 2004 - 14:33 #9
myplacedk...

Uhm .. men han har jo ikke beskrevet at det er php ...
saa php har jo intet med det her at goere ? .... han har ikke fortalt det er en variable med $ foran saa selvom det er inden i et "" omraade burde php fortolker da bare skrive det som MailTo[] ud til browseren og ikke fortolke det videre...

men uhm tror jeg fatter hva du mener .. undre mig bare at selve php ogsaa kan finde ud af det ... maa jeg proeve at lege med senere hen :)
Avatar billede Morten Nybegynder
08. november 2004 - 14:34 #10
Jeg er ikke helt sikker på at jeg fatter den sidste...

Måske jeg lige kort skal beskrive hvad det gerne skulle ende op med...

Altså jeg laver en side - en telefonliste - det er så meningen at man kan klikke på en enkelt person og vupti så åbner vores outlook en mail til den modtager ( virker er jo smiple <a href="mail.......)

Featuren jeg er ved at lave er at man kan afkrydes flere på en gang og derved få en mail til mange personer...

Den ID som så findes i Checkboxen svare selvfølelig til brugeren i databasen og jeg vil så "bare" hente alle de afkrydsede personer og indsætte dem i en <a href....

Og det SKAL foregå gennem Outlook...

og så vil jeg lige prøve at læse dit (istasi) foreslag igennem og se om jeg fatter det.....

Mit problem lige nu er - at arrayet godt nok bliver sendt - der ligger noget når jeg laver print_r... men jeg prøver lige nu at fatte hvordan jeg får det ud så jeg kan køre en forespørgelse mod min database med de valgte ID'er....
Avatar billede istasi Nybegynder
08. november 2004 - 14:35 #11
Jeg er godt nok kommet i tvivl om jeg overhovedet har fattet hans spoergelsemaal rigtigt .. men anyway .. har fri nu .. snakkes sikkert engang i morgen
Avatar billede jakobdo Ekspert
08. november 2004 - 14:47 #12
Jeg tror du har en masse checkboxe, hvor der står hvem som evt skal modtage email eller hvem der skal laves en email til... Korrekt?

Du kunne lave noget i stil med:

$emails = implode(",", $_POST[MailTo]);
echo "<a href=\"mailto:". $emails."\">Lav Emails</a>";
Avatar billede myplacedk Nybegynder
08. november 2004 - 14:49 #13
istasi:
> han har ikke fortalt det er en variable med $ foran saa selvom det er inden i et "" omraade burde
> php fortolker da bare skrive det som MailTo[] ud til browseren og ikke fortolke det videre...

Tænker du på det her? <input name=\"MailTo[]\" type=...
Det er som det skal være.
Avatar billede myplacedk Nybegynder
08. november 2004 - 14:50 #14
> Jeg er ikke helt sikker på at jeg fatter den sidste...
Prøv at ignorere istasi, og alt hvad jeg siger til ham. :)

Jeg tror bestemt at jeg har forstået dig korrekt, og givet dig et brugbart svar.
Avatar billede Morten Nybegynder
08. november 2004 - 14:54 #15
PISSEGODT jakobdo...

Det var lige i øjet....

Jeg er ked af hvis jeg ikke har forklaret mig ordentlig

Er i rare at smide svar alle så deler jeg ud
Avatar billede Morten Nybegynder
08. november 2004 - 14:57 #16
kan du ikke forklare hvad implode gør...?

bare så jeg lære lidt - også.....
Avatar billede Morten Nybegynder
08. november 2004 - 14:59 #17
og så lige et lille tillægsspørgsmål...

Kan man lade være med at hvis "side 2" men bare fyre linket direkt så den bare åbner en mail?
Avatar billede myplacedk Nybegynder
08. november 2004 - 15:02 #18
$a = array("A","B","C");
$b = implode(":", $a);
echo $b; // Skriver: A:B:C

Dvs. den samler elementerne i et array til en streng.
Avatar billede myplacedk Nybegynder
08. november 2004 - 15:03 #19
Du kan prøve:
header('Location: mailto:'...);
I stedet for <a href="mailto:...
Avatar billede Morten Nybegynder
08. november 2004 - 15:08 #20
Njaa det giver en blank side... noget med min syntaks ??:

<?php

if (isset($_POST['MailTo']) && is_array($_POST['MailTo'])) {
  $mailto = $_POST['MailTo'];
} else {
  $mailto = array();
}

                $emails = implode(";", $_POST[MailTo]);
                header('Location: mailto:'. $emails.);


?>
Avatar billede Morten Nybegynder
08. november 2004 - 15:18 #21
<?php
    if (isset($_POST['MailTo']) && is_array($_POST['MailTo'])) {
      $mailto = $_POST['MailTo'];
    } else {
      $mailto = array();
    }
    $emails = implode(";", $_POST[MailTo]);
    header("Location: mailto: $emails");
?>

Virker - men hmmm... ved godt jeg er besværlig.. jeg får en blank side og er nød til at trykke back... nogen foreslag til hvordan det løses.. eller ....?
Avatar billede myplacedk Nybegynder
08. november 2004 - 15:23 #22
Du kan løse det med javascript i stedet.
Dvs. siden man kommer hen på indeholder javascript som åbner et mailto-link, og går derefter et skridt tilbage.
Eller det kan åbne i en popup, som lukker sig selv.
Avatar billede Morten Nybegynder
08. november 2004 - 15:27 #23
kan du ikke være rar at vise eksempel på begge?
Avatar billede jakobdo Ekspert
08. november 2004 - 15:29 #24
<?php
    //counter bruges til at farvelægge hveranden
    $counter = 1;
    while($rows = mssql_fetch_array($sql))
    {
        extract($rows, EXTR_OVERWRITE);
        $current_letter = substr($rows['fornavn'],0,1);
        if ($current_letter != $letter)
        {
            echo "<tr><td colspan=\"7\" class=\"letter\"><a name='" . $current_letter . "'> " . $current_letter . "</td><td>";
            $counter = 2;
        }
                             
        switch ($counter)
        {
            case 1:
                echo "<tr class=\"tr1\">";
                $counter = 2;
                break;
            case 2:
                echo "<tr class=\"tr2\">";
                $counter = 1;
                break;
        }
        echo " <td class=\"td_checkbox\"><input name=\"MailTo[]\" type=\"checkbox\"  value=\"".$rows["id"]." \"></td>";
        echo "    <td class=\"td_names\">";
       
        if ($rows["firma_email"] != ' ')
        {
            echo "<a href=\"mailto: " . $rows["firma_email"]. " \">";
        }
       
        echo $rows["fornavn"] ;
       
        if ($rows["firma_email"] != ' ')   
        {
            echo "<a/>";
        }
       
        echo "</td>";
        echo "<td class=\"td_names\">". $rows["mellemnavn"] . "</td>";
        echo "<td class=\"td_lastname\">". $rows["efternavn"] . "</td>";
        echo "<td class=\"td_names\">". $rows["initialer"] . "</td>";
        echo "<td class=\"td_names\">". $rows["telefon"] . "</td>";
        echo "<td class=\"td_names\">". $rows["mobilnr"] . "</td>";
        echo "</tr>";
        $letter = substr($rows['fornavn'],0,1);
    }
   
    if (isset($_POST['MailTo']) && is_array($_POST['MailTo']))
    {
        $emails = implode(";", $_POST[MailTo]);
        echo "<a href=\"mailto:". $emails."\">Lav Emails</a>";
    }
?>
Avatar billede jakobdo Ekspert
08. november 2004 - 15:32 #25
Hvad bruger du denne kode til: extract($rows, EXTR_OVERWRITE);
        $current_letter = substr($rows['fornavn'],0,1);
        if ($current_letter != $letter)
        {
            echo "<tr><td colspan=\"7\" class=\"letter\"><a name='" . $current_letter . "'> " . $current_letter . "</td><td>";
            $counter = 2;
        }
Avatar billede Morten Nybegynder
08. november 2004 - 15:36 #26
Personerne er sorteret alfabetisk - og det er så muligt øverst på siden at springe til et givent forbogstav - bogmærke tror jeg det hedder... ret praktisk når listen når et par hundrede personer...
Avatar billede Morten Nybegynder
08. november 2004 - 15:45 #27
hmmm... jeg fatter ikke helt hvordan det virker når du placerer if (iss...

på samme side som formen??? Der er jo ikke noget array når man kommer ind på siden og dermed vises mail linket heller ikke - eller fatter jeg bare 0
Avatar billede myplacedk Nybegynder
08. november 2004 - 15:50 #28
> Der er jo ikke noget array når man kommer ind på siden
Det kommer der, når man submitter formen. Formen har så samme side som "action".
Avatar billede Morten Nybegynder
08. november 2004 - 15:50 #29
Nå jeg smutter for i dag - håber at høre fra jer igen...
Avatar billede Morten Nybegynder
08. november 2004 - 15:54 #30
hmmm... men så skal brugeren trykke to gang på samme side - ufiks synes jeg lige umiddelbart - så vil jeg hellere smide dem til en ny side... og med target="_blank" så kan jeg leve med det - men du snakkede noget om en pop-up side som lukkede sig selv og et java-script - må jeg ikke se dem?
Avatar billede myplacedk Nybegynder
08. november 2004 - 16:32 #31
Jeg går ud fra at det er noget, der skal bruges internt? I så fald kan vi give alle standarder en 4-finger, og gøre det på den nemme måde. Side 2 skal så blot indeholde:

<?php
$emails = implode(";", $_POST[MailTo]);
echo '<script type="text/javascript">
window.location = "mailto:'.$emails.'";
history.back();
</script>';
}
?>

Det forudsætter dog at det er email-adressen i stedet for id, som er value i checkboxene. Aner ikke om det virker, men prøv. Jeg er ikke en javascript-haj. ;-)
Avatar billede Morten Nybegynder
09. november 2004 - 08:01 #32
>>myplacedk

Perfect, og ja den skal bruges internt...!
Nu virker det som jeg ønsker - kanon...
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