Autor | Zpráva | ||
---|---|---|---|
janka03 Profil |
#1 · Zasláno: 28. 11. 2012, 11:27:55
Při zpracování BB značek došlo k samovolnému sežrání celého příspěvku. Pardon.
Prosím o pomoc. Na hostingu bezi PHP 5.2 Skúšala som objednavkový formulár, ktorý načítava produkty so súboru xml a následne odošle objednávku na mailovú adresu. Nefunguje. Problém asi bude s metódou count, ktorá je implementovaná až vo verzii 5.3 Pozerala som dokumentáciu a nie som múdra. Dá sa s tým niečo urobiť ? [b]Kód objednávky:[/b] [pre] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link href="style.css" rel="stylesheet" type="text/css" /> <title>Objednávkový formulář</title> </head> <body> <script type="text/javascript"> function prepocitat() { var http_request = false; var request = "akce=prepocet&"; if (window.XMLHttpRequest) { http_request = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (error) { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } } var pocetpolozek = <?php $obchod = simplexml_load_file('zbozi.xml'); print $obchod->count(); ?>; for(var i=1; i < pocetpolozek; i++) { if (document.getElementById('pocet_' + i) != null) { request = request + 'pocet_' + i + '=' + document.getElementById('pocet_' + i).value + '&'; } } http_request.onreadystatechange = function() { prepocitej(http_request); }; http_request.open('POST', 'prepocitej.php', true); http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); http_request.send(request); } function prepocitej(http_request) { if (http_request.readyState == 4) { if (http_request.status == 200) { document.getElementById('rekapitulace').innerHTML = http_request.responseText; } else { alert('Chyba'); } } } function objednat() { var http_request = false; var request = "akce=objednavka&"; if (window.XMLHttpRequest) { http_request = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (error) { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } } request = request + 'jmeno=' + document.getElementById('jmeno').value + '&'; request = request + 'ulice=' + document.getElementById('ulice').value + '&'; request = request + 'mesto=' + document.getElementById('mesto').value + '&'; request = request + 'psc=' + document.getElementById('psc').value + '&'; request = request + 'stat=' + document.getElementById('stat').value + '&'; request = request + 'telefon=' + document.getElementById('telefon').value + '&'; request = request + 'e-mail=' + document.getElementById('e-mail').value + '&'; request = request + 'fakturacni=' + document.getElementById('fakturacni').value + '&'; request = request + 'dodaci=' + document.getElementById('dodaci').value + '&'; request = request + 'celkem=' + document.getElementById('celkem').value + '&'; request = request + 'zprava=' + document.getElementById('zprava').value + '&'; http_request.onreadystatechange = function() { objednej(http_request); }; http_request.open('POST', 'prepocitej.php', true); http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); http_request.send(request); } function objednej(http_request) { if (http_request.readyState == 4) { if (http_request.status == 200) { document.getElementById('rekapitulace').innerHTML = http_request.responseText; } else { alert('Chyba'); } } } </script> <h1>Objednávka produktů</h1> <form method="post" action="javascript:prepocitat()"> <table> <tr> <td>Kód zboží</td> <td>Název zboží</td> <td>Cena</td> <td>Počet kusů</td> </tr> <?php $obchod = simplexml_load_file('zbozi.xml'); foreach ($obchod->zbozi as $zbozi) { print "<tr>\n"; print "<td>". strip_tags($zbozi->id->asXML())."</td>\n"; print '<td>'. strip_tags($zbozi->nazev->asXML())."</td>\n"; print "<td>". strip_tags($zbozi->cena->asXML())."</td>\n"; print '<td><input name="pocet_'. strip_tags($zbozi->id->asXML()).'" id="pocet_'. strip_tags($zbozi->id->asXML()).'" type="text" /></td>'."\n"; print "</tr>"; } ?> <tr> <td colspan="3"> </td> <td><input type="submit" name="submit" value="Přepočítat" title="Přepočítat" /></td> </tr> </table> </form> <div id="rekapitulace"></div> </body> </html> [/pre] [b]Kód prepočítanej objednávky s rekapitulaciu údajov o objednávatelovi:[/b] [pre] <?php $obchod = simplexml_load_file('zbozi.xml'); $pocetpolozek = $obchod->count(); if ($_POST['akce']) { //ini_set('session.save_path','tmp'); //ini_set("session.cookie_domain",".domena.cz"); session_start(); if ($_POST['akce'] == 'prepocet') { for ($i = 1; $i < $pocetpolozek; $i++) { if ($_POST['pocet_'.$i.'']){ $_SESSION['pocet_'.$i.''] = $_POST['pocet_'.$i.'']; } else { unset($_SESSION['pocet_'.$i.'']); } } print '<h2>Rekapitulace objednávky</h2>'; print '<table>'; print '<tr><th>Zboží</th><th>Cena celkem</th></tr>'; $obchod = simplexml_load_file('zbozi.xml'); $castka = 0; $hmotnost = 0; $zprava = ''; foreach ($obchod->zbozi as $zbozi) { if (isset($_SESSION['pocet_'.strip_tags($zbozi->id->asXML()).''])) { $castka_ = 0; $polozka = ""; $polozka .= "<tr>\n"; $polozka .= "<td>".$_SESSION['pocet_'.strip_tags($zbozi->id->asXML()).''].'x '. strip_tags($zbozi->nazev->asXML())."</td>\n"; $castka_ = $_SESSION['pocet_'.strip_tags($zbozi->id->asXML()).''] * strip_tags($zbozi->cena->asXML()); $polozka .= '<td>'. $castka_ ." Kč</td>\n"; $polozka .= "</tr>"; $zprava .= $_SESSION['pocet_'.strip_tags($zbozi->id->asXML()).''].'x '. strip_tags($zbozi->nazev->asXML()) . ', ' . $castka_." Kč\n"; $castka = $castka + $castka_; print $polozka; } } print '<tr><td>Celkem</td><td>'.$castka .' Kč</td></tr>'; print '</table>'; ?> <h3>Objednací údaje</h3> <form method="post" action="javascript:objednat()"> <table style="width: 100%"> <tr> <td>Jméno</td> <td><input name="jmeno" id="jmeno" type="text" /></td> </tr> <tr> <td>Ulice</td> <td><input name="ulice" id="ulice" type="text" /></td> </tr> <tr> <td>Město</td> <td><input name="mesto" id="mesto" type="text" /></td> </tr> <tr> <td>PSČ</td> <td><input name="psc" id="psc" type="text" /></td> </tr> <tr> <td>Stát</td> <td><input name="stat" id="stat" type="text" /></td> </tr> <tr> <td>Telefon</td> <td><input name="telefon" id="telefon" type="text" /></td> </tr> <tr> <td>E-mail</td> <td><input name="e-mail" id="e-mail" type="text" /></td> </tr> <tr> <td>Fakturační adresa</td> <td><textarea name="fakturacni" id="fakturacni" type="text" cols="20" rows="5"></textarea></td> </tr> <tr> <td>Dodací adresa</td> <td><textarea name="dodaci" id="dodaci" type="text" cols="20" rows="5"></textarea></td> </tr> <tr> <td> </td> <td> <input type="hidden" value="<?php print $castka; ?>" name="celkem" id="celkem"/> <input type="hidden" value="<?php print $zprava; ?>" name="zprava" id="zprava"/> </td> </tr> <tr> <td> </td> <td><input name="objednat" type="submit" value="Objednat" /></td> </tr> </table> </form> <?php } else if ($_POST['akce'] == 'objednavka') { $email = ''; $message = "Objednané položky\n".$_POST['zprava']."\n\n"; $email = $_POST['e-mail']; $message .= 'Celkem: ' . $_POST['celkem'] . " Kč\n"; $message .= "\n\n"; $message .= "Kupující:\n"; $message .= 'Jméno: ' . $_POST['jmeno']."\n"; $message .= 'Ulice: ' . $_POST['ulice']."\n"; $message .= 'Město: ' . $_POST['mesto']."\n"; $message .= 'PSČ: ' . $_POST['psc']."\n"; $message .= 'Stát: ' . $_POST['stat']."\n"; $message .= 'Telefon: ' . $_POST['telefon']."\n"; $message .= 'E-mail: ' . $_POST['e-mail']."\n\n\n"; $message .= "Fakturační adresa:\n " . $_POST['fakturacni']."\n\n\n"; $message .= "Dodací adresa:\n " . $_POST['dodaci']."\n\n\n"; $message .= "Jakmile bude vaše objednávka připravena, budeme vás kontaktovat.\n"; $headers = "Content-type: text/plain; charset=utf-8\n"; $headers .= 'From:'.$email; $komu = 'nekdo@nekde.cz'; mail( $komu, 'Objednavka z webu', $message, $headers ); mail( $email, 'Objednavka z webu', $message, $headers ); print $message; print '<p>Potvrzení objednávky bylo odesláno na vaši e-mailovou adresu. Jakmile bude vaše objednávka připravena, budeme vás kontaktovat.</p>'; } } |
||
Joker Profil |
#2 · Zasláno: 28. 11. 2012, 11:34:20
janka03:
Nojo, už dlouho tu zase nebyl kilometr kódu s popisem „Nefunguje“. Viz také Jak napsat dotaz. Jak se to nefungování projevuje? Co to má dělat a nedělá, nemá dělat a dělá? Vypíše to chybové hlášky? |
||
janka03 Profil |
#3 · Zasláno: 28. 11. 2012, 11:43:01
sa ospravedlňujem. Nevypíše nič pri objednavke (http://www.pilates.cz/formular/objednavka.php), a pri prepocitani (http://www.pilates.cz/formular/prepocitej.php) takisto nevypise nic.
Este tam je subor zbozi.xml Vytvorila som aj subor, ktorý vypíše info o verzii php - na serveri je "PHP Version 5.2.6-1+lenny9" |
||
Tori Profil |
#4 · Zasláno: 28. 11. 2012, 11:47:12
Mělo by to jít nahradit tímto:
$pocet_polozek = count($obchod->children()); , viz manuál
|
||
Časová prodleva: 11 let
|
0