Miten saisi lähetettyä tietoa kannasta postiin mail-funktiolla?
Eli kyseessä seuraavanlainen:
<?php $sql="SELECT * FROM taulu WHERE ID = '$ID'"; //echo "$sql <br>"; $tulos=mysql_query($sql) or die("kyselyssä virhe"); while($sessiot=mysql_fetch_array($tulos,MYSQL_ASSOC)){ $tuotenimi = $taulu["tuotenimi"]; } $viesti = "Tietokannasta loytyy: $tuotenimi \n"; mail($SendTo, $SubjectLine, $viesti, "From: $SendFrom"); ?>
Jos laitan näin, viestin mukana tulee ainoastaan ensimmäinen rivi kannasta. Eli miten tämän luuppaisi että kirjottaisi kaikki?
Varmaan sun pitäis vaikka tohon $tuotenimi -muuttujaan lisäillä eikä vain korvata koko sisältöä.
eli korvaa toi rivi:
$tuotenimi = $taulu["tuotenimi"];
tällä:
$tuotenimi .= $taulu["tuotenimi"]."\r\n";
edit:
jaa sul oli jotain kuraa tossa whilessakin...
tässä while:
while ($taulu = mysql_fetch_assoc($tulos)){ ...
Itse kyllä ihmettelen miten tuolla ylipäätään saadaan tuotenimi, kun $taulu-muuttujaan ei missään vaiheessa kirjoiteta mitään.
Eikä tuolla haulla saa muutenkaan löytyä kuin yksi ainoa rivi, muuten on id:n käyttö pahasti hakusessa. ID:n pitäisi muutenkin olla ilman hipsuja, koska se lienee kuitenkin numeraali?
<?php $sql="SELECT * FROM taulu WHERE ID = '$ID'"; //echo "$sql <br>"; $tulos=mysql_query($sql) or die("kyselyssä virhe"); while($taulu = mysql_fetch_assoc($tulos)){ $tuotenimi = $taulu["tuotenimi"]."\r\n"; } $viesti = "Tietokannasta loytyy: $tuotenimi \n"; mail($SendTo, $SubjectLine, $viesti, "From: $SendFrom"); ?>
Joo tuossa oli tuo while vähän väärin, mutta nyt siinä on muuttuja oikein. Mutta ei se tuolla \r\n jutulla toimi, palauttaa sähköpostissa vain viimeisimmän rivin. ID on tekstikenttä kun id tulee session_idstä jossa on kirjaimia ja numeroita.
Tuolta ei kuitenkaan tule kuin yksi rivi, koska tuo while rakenne antaa kaikki kannasta tulleet rivit ei sarakkeita. Sarakkeet saat selville mysql_num_fields funktiolla.
<?php $sql="SELECT * FROM taulu WHERE ID = '$ID'"; //echo "$sql <br>"; $tulos=mysql_query($sql) or die("kyselyssä virhe: " . mysql_error()); while($rivi = mysql_fetch_array($tulos)){ for($a = 0; $a < count($rivi); ++$a){ $tuoteNimi .= $rivi[$a] . "\r\n"; } } $viesti = "Tietokannasta loytyy: $tuoteNimi \n"; ?>
Tämä ihan hatusta kirjoitetuna, mutta pitäisi olla sinnepäin.
Nyt antaa virhettä Undefined offset:0 ja niitä tulee aina nollasta kuutoseen, jonka jälkeen aloittaa alusta. Sarakkeiden määrä on 7 eli osaa pyörittää silmukkaa oikean määrän. Voisiko virhe johtua siitä että kohta $rivi[$a] antaa nimen jonka nimistä saraketta ei ole olemassa?
Voisikohan rivejä tietokannasta saada yhteen arrayhin jonka voisi lähettää könttinä (yhtenä muuttujana)?
Nyt sain tämän toimimaan näillä ohjeilla:
http://codingforums.com/showthread.php?t=157049
Aihe on jo aika vanha, joten et voi enää vastata siihen.