Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Jde celý obsah webové stránky přeposlat na email?

Ahoj, konstruuji eshop, jádro(košík, produkty) už mám hotové(no, hotové, spíše stažené), ale potýkám se s jedním problémem. PHP skript mi vygeneruje hotovou www stránku, kterou bych potřeboval přeposlat na email(potvrzení objednávky). Ono by stačilo "vyexportovat" jednu tabulku, tu dát do souboru, který by byl jako příloha k emailu.
Moje představa:
Zákazník si nakliká všechno zboží, dá nákupní košík. Dále si překontroluje objednávku, dá potvrzení objednávky, vygeneruje se soubor s náhodným názvem(aby nebyly 2 stejné, o to se postará databáze jako u košíků), vyplní jméno, adresu, typ poslání atd. a email se odešle s přílohou.

Ten email s přílohou udělám, mě jde o to vyexportovat tu tabulku do souboru.

Tohle třeba vyleze z toho skriptu:

    <html>
    <head>
    <title> Nákupní košík </title>
    <script language="JavaScript">
      function updatepocet(polozka)
        {
          id = polozka.name;
          pocet = polozka.options[polozka.selectedIndex].text;

          document.location.href = 'kosik.php?action=update&id='+id+'&pocet='+pocet;
      }
    </script>
    </head>
    <body bgcolor="#ffffff">
    <h1>Nákupní košík</h1>
    <form name="frmCart" method="get">
    
















<table width="100%" cellspacing="0" cellpadding="0">
      <tr>
        <td width="15%">
          <b>Počet</b>
        </td>
        <td width="55%">
            <b>Produkt</b>
        </td>
        <td width="20%">
            <b>Cena</b>
        </td>
        <td width="10%">
            <b>Odstranit</b>
        </td>
      </tr>

            <tr>
        <td width="15%">
          <select name="2" onChange="updatepocet(this)">
      <option  selected <option >2</option><option >3</option><option >4</option><option >5</option><option >6</option><option >7</option><option >8</option><option >9</option><option >10</option><option >11</option><option >12</option><option >13</option><option >14</option><option >15</option><option >16</option><option >17</option><option >18</option><option >19</option><option >20</option>
          </select>
        </td>
        <td width="55%">
          Fyzika        </td>
        <td width="20%">
          80 Kč
        </td>
        <td width="10%">
          <a href="kosik.php?action=remove&id=2">Odstranit</a>
        </td>
      </tr>
      
    </table>
    














  <b>Celková cena: 80.00 Kč</b>
  </form>

<a href="index.php">Návrat na výběr zboží</a> 
</body>
</html>

Část, kterou bych si potřeboval uložit do souboru, je vyhraněna obrovskou mezerou, cenu si překontroluji kvůli nějakým šikulům, kteří by dokázali pozměnit to. Díky moc.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Poslední problém před dokončením: $zbozi = "Číslo produktu: ".$polozka["produktid"]." - "."Počet ku…
marekdrtic 04.04.2008 19:38
marekdrtic
Pak je zdroj problému pouze v jednom z následujících bodů: - Dané proměnné jsou prázdné - neobsahuj…
Flash_Gordon 04.04.2008 20:05
Flash_Gordon
Já to napsal blbě. Vše ostatní funguje, ale mám "objednáno" 3 druhy zboží a v emailu se zobrazuje po…
marekdrtic 04.04.2008 20:15
marekdrtic
No protože to máš navržené tak, že počítáš pouze s jedním objednaným výrobkem(zbožím). Musíš si tam…
Flash_Gordon 04.04.2008 20:33
Flash_Gordon
No jo, jenže mi vrtá hlavou, proč to v emailu nejede a na normální stránce ano :-/
marekdrtic 04.04.2008 20:35
marekdrtic
Protože to vypisuješ dobře: while ($polozka = mysql_fetch_array($vypis)) { //Tady ve smyčce prostě…
Flash_Gordon 04.04.2008 20:37
Flash_Gordon
Hurá. Tak to tvoje funguje, akorát tam byla blbě udělaná ta poznámka. U PHP se to dělá /* poznámka *…
marekdrtic 05.04.2008 08:40
marekdrtic
já mám za to, že u PHP jsou dva druhy poznámek. Jedna nezalomitenlá (pouze na jeden řádek, druhá zal… nový
Kráťa 05.04.2008 11:15
Kráťa
S tou poznámkou to nejde, jak má. Necháme to být. Prostě /* */ je funkční nový
marekdrtic 05.04.2008 11:54
marekdrtic
while ($polozka = mysql_fetch_array($vypis)) { $zbozi= "Číslo produktu: ".$polozka["produktid"]." -… nový
marekdrtic 05.04.2008 09:41
marekdrtic
while ($polozka = mysql_fetch_array($vypis)) { $zbozi .= "Číslo produktu: ".$polozka["produktid"]."… nový
Flash_Gordon 05.04.2008 13:02
Flash_Gordon
Díky, konečně mám své 8kb jádro obchodu hotové. Jenom bych se chtěl zeptat, jestli se jde zbavit těc… nový
marekdrtic 05.04.2008 13:53
marekdrtic
Hlášky lze potlačit umístěním zavináče před proměnnou: @$zbozi Ale není dobré si na to zvykat. poslední
Flash_Gordon 05.04.2008 13:55
Flash_Gordon

Poslední problém před dokončením:

$zbozi = "Číslo produktu: ".$polozka["produktid"]." - "."Počet kusů: ".$polozka["pocet"].", ";
$message = "Jméno:            ".$jmeno."\n"
           ."Přijmení:         ".$prijmeni."\n\n"
           ."Firma:            ".$firma."\n"
           ."IČO:              ".$ico."\n"
           ."DIČ:              ".$dic."\n"
           ."Telefon:          ".$telefon."\n\n"
           ."Email:            ".$email."\n"
           ."Jiný kontakt  :   ".$jinykontakt."\n\n"
           ."Způsob dodání :   ".$dodani."\n"
           ."Poznamka :        ".$poznamka."\n"
           ."Objednané zboží : ".$zbozi."";

Zobrazí se mi v emailu pouze první řádek zboží (Objednané zboží : Číslo produktu: 3 - Počet kusů: 13,), ostatní bohužel ne, jak to udělat, aby to bylo takhle v tom emailu:

Číslo produktu: x - Počet kusů: x === Číslo produktu: x - Počet kusů: x

Jako x tam budou dosazena čísla z databáze

Já to napsal blbě. Vše ostatní funguje, ale mám "objednáno" 3 druhy zboží a v emailu se zobrazuje pouze ten poslední druh, ostatní ne...
Takhle to vypadá ten email:

Jméno: a
Přijmení: a

Firma: a
IČO: a
DIČ: a
Telefon: a

Email: a
Jiný kontakt : a

Způsob dodání : Osobní vyzvednutí
Poznamka : a
Objednané zboží : a kde jsou ty ostatní výrobky??? Číslo produktu: 3 - Počet kusů: 9,

P.S. Ale ten samý kód na stránce udělá toto:
Číslo produktu: 2 - Počet kusů: 12, Číslo produktu: 1 - Počet kusů: 15, Číslo produktu: 3 - Počet kusů: 9,

No protože to máš navržené tak, že počítáš pouze s jedním objednaným výrobkem(zbožím).
Musíš si tam "dodělat" to, aby to fungovalo pro libovolný počet zboží.

Na toto se nejlépe hodí právě objektové programování(objekty), ale tady je možné to i vybírat přímo z databáze(možná) jako strukturu. To záleží jak jsou uskladněna a vybrána data ze zdroje (např. databáze to vrací přímo jako strukturu, což je něco jako bratranec objektu. :-/

Protože to vypisuješ dobře:

while ($polozka = mysql_fetch_array($vypis)) 
{
//Tady ve smyčce prostě nějak nakrmíš/zařídíš to pole celkem objednaného zboží, které pak taky nějak celé napíšeš do mailu no.
}

RESPEKTIVE

while ($polozka = mysql_fetch_array($vypis)) 
echo "Číslo produktu: ".$polozka["produktid"]." - "."Počet kusů: ".$polozka["pocet"]."<br>\n";

p5ep93e3 na.....

$pocitadlo = 1;

while ($polozka = mysql_fetch_array($vypis))
{ 
echo "Číslo produktu: ".$polozka["produktid"]." - "."Počet kusů: ".$polozka["pocet"]."<br>\n";
// a tady to cele serializujes, co ja vzm treba:
$polozky[$pocitadlo] = "Číslo produktu: ".$polozka["produktid"]." - "."Počet kusů: ".$polozka["pocet"]."<br>\n";
$pocitadlo++;
}

Neco takoveho no.
Prostě si nějak v té smyčce jenom doplň to skladování (tady by bylo blbnutí s objektama nesmyslnost teda).
Napoveda: to co vypisujes na obrazovku jenom "naskladujes" do pole zaroven.

 while ($polozka = mysql_fetch_array($vypis))
{ 

$zbozi= "Číslo produktu: ".$polozka["produktid"]." - "."Počet kusů: ".$polozka["pocet"].", ";

echo $zbozi ;

$pocitadlo++;
}


 $message=  "Jméno:            ".$jmeno."\n"
           ."Přijmení:         ".$prijmeni."\n\n"
           ."Firma:            ".$firma."\n"
           ."IČO:              ".$ico."\n"
           ."DIČ:              ".$dic."\n"
           ."Telefon:          ".$telefon."\n\n"
           ."Email:            ".$email."\n"
           ."Jiný kontakt  :   ".$jinykontakt."\n\n"
           ."Způsob dodání :   ".$dodani."\n"
           ."Poznamka :        ".$poznamka."\n";
           ."Objednané zboží : ".$zbozi."\n";

V tomto případě to znova vypíše tu poslední

 while ($polozka = mysql_fetch_array($vypis))
{ 

$zbozi= "Číslo produktu: ".$polozka["produktid"]." - "."Počet kusů: ".$polozka["pocet"].", ";

echo $zbozi ;

$message=  "Jméno:            ".$jmeno."\n"
           ."Přijmení:         ".$prijmeni."\n\n"
           ."Firma:            ".$firma."\n"
           ."IČO:              ".$ico."\n"
           ."DIČ:              ".$dic."\n"
           ."Telefon:          ".$telefon."\n\n"
           ."Email:            ".$email."\n"
           ."Jiný kontakt  :   ".$jinykontakt."\n\n"
           ."Způsob dodání :   ".$dodani."\n"
           ."Poznamka :        ".$poznamka."\n";
           ."Objednané zboží : ".$zbozi."\n";
$pocitadlo++;
}


 

V tomto případě to pošle megamail s počtem opakování, kolik je tam záznamů.

Jak to už do prkýnka zelenýho udělat?

 while ($polozka = mysql_fetch_array($vypis))
{ 

$zbozi .= "Číslo produktu: ".$polozka["produktid"]." - "."Počet kusů: ".$polozka["pocet"].", ";

//echo $zbozi ;

}


 $message=  "Jméno:            ".$jmeno."\n"
           ."Přijmení:         ".$prijmeni."\n\n"
           ."Firma:            ".$firma."\n"
           ."IČO:              ".$ico."\n"
           ."DIČ:              ".$dic."\n"
           ."Telefon:          ".$telefon."\n\n"
           ."Email:            ".$email."\n"
           ."Jiný kontakt  :   ".$jinykontakt."\n\n"
           ."Způsob dodání :   ".$dodani."\n"
           ."Poznamka :        ".$poznamka."\n";
           ."Objednané zboží : ".$zbozi."\n";

Zpět do poradny Odpovědět na původní otázku Nahoru