Avatar billede gedekid Nybegynder
24. maj 2007 - 10:06 Der er 13 kommentarer og
1 løsning

form felter til excel

Hej eksperter,

jeg er lidt på bar bund her. Jeg skal lave et script der smider indholdet af formfelter i en excel fil og derefter banker den afsted som e-mail attachment.
Hvorledes kan dette laves?
Skal den laves som en almindelig xls fil eller en CSV fil?
Avatar billede jakobdo Ekspert
24. maj 2007 - 10:32 #1
Jeg tror CSV fil er nemmest at lave.
Og så vil jeg anbefale dig at kigge på phpmailer, når du kommer til at skulle sende emails med vedhæftede filer.
Avatar billede gedekid Nybegynder
24. maj 2007 - 11:09 #2
Det var også det jeg mente... Har fået sammensat dette kode:

----------------------------------------------
if($_POST['sendbutton']) {
   
    $filename = "test.csv";
   
    $navn = $_POST["navn"];
    $email = $_POST["email"];
    $adresse = $_POST["adresse"];
    $postnr = $_POST["postnr"];
    $city = $_POST["city"];           
   
    $cr = "\n";
    $crdbl = "\n\n";   
   
    $data = $navn . ',' . $email . ',' . $adresse . ',' . $postnr . ',' . $by . $crdbl;

    //CHECKS IF FILE IS WRITEABLE
    if (is_writable($filename)) {

    if (!$handle = fopen($filename, 'a')) {
        print "Kan ikke åbne ($filename)";
        exit;
    }

    //CHECKS IF INPUT CAN BE WRITTEN TO FILE
    if (fwrite($handle, $data) === FALSE) {
        echo "Der kan ikke skrives til ($filename)";
        exit;
    }

    //PRINTS THE INSERTED DATA
    print "$data";

    //AND FINALLY CLOSES THE FILE
    fclose($handle);

    //IF NOTHING HAPPENS THIS IS PRINTED
    } else {
      print "Der kan ikke skrives til $filename";
    }
}

---------------------------------------------------'

Og der virker faktisk som det skal. Det der så skal ske er at denne fil skal sendes som e-mail hver dag kl. 11 - til det skal der jo bruges noget cronjob - det har jeg styr på .... men mit næste spørgsmål er nu... hvordan kan jeg hver dag kl. 11 tømme indholdet af test.csv så den er tom til de nye indtastninger - eller alternativt slette den og oprette en ny fil?
Avatar billede jakobdo Ekspert
24. maj 2007 - 11:16 #3
Hvor skarp er du i engelsk?

For jeg synes næsten du skal prøve at læse på denne side: http://dk.php.net/fopen
Du skal kigge under: Table 91.  A list of possible modes for fopen()  using mode
(så tror jeg du har fået et godt hint) :o)
Avatar billede gedekid Nybegynder
24. maj 2007 - 11:21 #4
Vil nok mene jeg er en raadvad kniv til engelsk :)

Jeg læser det igennem.. Takker...
Avatar billede jakobdo Ekspert
24. maj 2007 - 11:40 #5
Og ellers siger du bare til, jeg er selv gaffel i engelsk.
English is my best.
Avatar billede gedekid Nybegynder
24. maj 2007 - 12:39 #6
En anden mulighed kunne vel også være at banke data ind i en xml - outputte det somewhere og så blot sende linket til det sted i en mail...

det jeg har bakset med ser sådan ud:

<table border="1" style="width: 500px;">
    <tr>
        <td><b>Navn:</b></td>
        <td><b>E-mail:</b></td>
        <td><b>Adresse:</b></td>
        <td><b>Post nr.</b></td>
        <td><b>By</b></td>
    </tr>

-------------XML.PHP-------------------------

<?php
include 'xmldata.php';

$xml = new SimpleXMLElement($xmlstr);

foreach ($xml->user as $user) {
      print "<tr>\n";
      print "<td>$user->name</td>\n";
      print "<td>$user->email</td>\n";
      print "<td>$user->adress</td>\n";
      print "<td>$user->zipcode</td>\n";
      print "<td>$user->city</td>\n";
    print "</tr>\n\n";

}

?>
</table>

-------------XMLDATA.PHP-------------------------
<?php

$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
  <userContact>
    <user>
          <name></name>
          <email></email>
          <adress></adress>
          <zipcode></zipcode>
          <city></city>
    </user>
   
  </userContact>
XML;

?>

Hvordan ville denne så skulle se ud for at den smider data'ne korrekt i XML'en?
-------------------------------------

if($_POST['sendbutton']) {
   
    $filename = "test.csv";
   
    $navn = $_POST["navn"];
    $email = $_POST["email"];
    $adresse = $_POST["adresse"];
    $postnr = $_POST["postnr"];
    $city = $_POST["city"];           
   
    $cr = "\n";
    $crdbl = "\n\n";   
   
    $data = $navn . ',' . $email . ',' . $adresse . ',' . $postnr . ',' . $by . $crdbl;

    //CHECKS IF FILE IS WRITEABLE
    if (is_writable($filename)) {

    if (!$handle = fopen($filename, 'a')) {
        print "Kan ikke åbne ($filename)";
        exit;
    }

    //CHECKS IF INPUT CAN BE WRITTEN TO FILE
    if (fwrite($handle, $data) === FALSE) {
        echo "Der kan ikke skrives til ($filename)";
        exit;
    }

    //PRINTS THE INSERTED DATA
    print "$data";

    //AND FINALLY CLOSES THE FILE
    fclose($handle);

    //IF NOTHING HAPPENS THIS IS PRINTED
    } else {
      print "Der kan ikke skrives til $filename";
    }
}
Avatar billede jakobdo Ekspert
24. maj 2007 - 13:13 #7
if (!$handle = fopen($filename, 'a'))
a = append

Brug evt w, det betyder filen skrives fra start hver gang.
Avatar billede gedekid Nybegynder
24. maj 2007 - 13:27 #8
Jeg har også fået sat det sådan at det nu bliver smidt ind i XML'en med den korrekte XML opsætning... MEN... hvordan sætter jeg en pointer til hvor den skal smide noget ind fra og til?...
Min tomme XML fil skal jo se sådan ud:

<userContact>

</userContact>


og så skal
      <user>
          <name></name>
          <email></email>
          <adress></adress>
          <zipcode></zipcode>
          <city></city>
    </user>

smides ind imellem

<userContact>

</userContact>

som jo så er statisk sat i XML'en...
Avatar billede jakobdo Ekspert
24. maj 2007 - 13:44 #9
Det må du bare skrive i starten og slutningen manuelt.
Du kan ikke arbejde med en fil, så du indsætter i midten f.eks. (eller man kan godt lave noget som virker sådan, men det er besværligt)
Avatar billede gedekid Nybegynder
24. maj 2007 - 13:48 #10
Okay.. det var satans...
Den skal jo nemlig indsætte en hel dags form sendinger i én fil... det er jo så <user> hvor en anden så kan se alle dagens kontakter på én liste... det vil så fucke lidt op uden <userContact>
Avatar billede jakobdo Ekspert
24. maj 2007 - 13:57 #11
Ja, men du kunne jo snyde lidt!
Du kunne jo i din "XML" fil, nøjes med at tilføje:
<user>
  <name></name>
  <email></email>
  <adress></adress>
  <zipcode></zipcode>
  <city></city>
</user>

Og det appender du så dagligt.
I den kode som så skal vise dataen, der laver du så:

$data = '<userContact>';
$data .= 'DATA FRA DIN FIL';
$data .= '</userContact>';

Så har du samme løsning, næsten! :o)
Avatar billede gedekid Nybegynder
29. maj 2007 - 13:07 #12
Jeg fandt en anden helt nem løsning. Smider det blot i en DB og kaster rækkerne ud på normal vis.

Men smid lige et svar, så får du point for ulejligheden :)
Avatar billede jakobdo Ekspert
29. maj 2007 - 14:17 #13
Svar!
Avatar billede jakobdo Ekspert
28. juni 2007 - 17:06 #14
Takker for point.
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