mspace Posted December 4, 2014 Share Posted December 4, 2014 Καλησπέρα, έχω φτιάξει μια σελίδα (custom όχι από το cms) στην οποία θέλω να δημιουργήσω μια φόρμα εισαγωγής δεδομένων από τον επισκέπτη. Μπορεί κάποιος να βοηθήσει με το στήσιμο της φόρμας και τη σύνδεση με την βάση δεδομένων? Εννοώ πως μπορώ να γράψω php κώδικα σε tpl αρχείο και να στέλνει τα δεδομένα στη βάση. Δυστυχώς δουλεύω σε localhost Ευχαριστώ πολύ Link to comment Share on other sites More sharing options...
netplayer Posted December 8, 2014 Share Posted December 8, 2014 Δεν θα γραψεις php κωδικα στο .tpl , θα γραψεις html και με ajax θα στειλεις σε .php για επεξεργασια. Αλλα θα πρεπει γι αυτο να ακολουθησεις τον MVC τροπο (Το .tpl ειναι το "V" = view κομματι απο το MVC.) που χρησιμοποιει πολυ πετυχημενα το Prestashop : 1) για λογους ευκολιας και ομοιομορφιας χρησιμοποιωντας classes (προτυπα αντικειμενα) και controllers (διαχειριστες δεδομενων) του framework 2) Επειδη για να λειτουργησει η σελιδα σου χωρις να ξανα-ανακαλυψεις τον τροχο και με ενδεδειγμενη ενσωματωση θα πρεπει να φτιαξεις προσθετο. Δεν ειναι δυσκολο να γραψει προσθετο γiα prestashop, υπαρχει οδηγος εδω. Υπαρχει επισης και η ειδικη περιπτωση να κανεις δικο σου ffront controller οπως εδω , που επιτρεπει σχεδον απεριοριστες δυνατοτητες, πιστευω με το google μπορεις να βρεις κι αλλα παραδειγματα. Ελπιζω αυτα να σoυ δινουν μια ιδεα προς τα που να κινηθεις. Αυτη η σελιδα που εφτιαξες που δεν ειναι cms αλλα ειναι και σε tpl (του prestashop φανταζομαι) τι ακριβως ειναι και πως ειναι δομημενη, οσο περισσοτερες πληροφοριες/κωδικα δωσεις τοσο πιο καλη απαντηση θα παεις. Μ.Φ.Χ Link to comment Share on other sites More sharing options...
mspace Posted December 9, 2014 Author Share Posted December 9, 2014 Δεν θα γραψεις php κωδικα στο .tpl , θα γραψεις html και με ajax θα στειλεις σε .php για επεξεργασια. Αλλα θα πρεπει γι αυτο να ακολουθησεις τον MVC τροπο (Το .tpl ειναι το "V" = view κομματι απο το MVC.) που χρησιμοποιει πολυ πετυχημενα το Prestashop : 1) για λογους ευκολιας και ομοιομορφιας χρησιμοποιωντας classes (προτυπα αντικειμενα) και controllers (διαχειριστες δεδομενων) του framework 2) Επειδη για να λειτουργησει η σελιδα σου χωρις να ξανα-ανακαλυψεις τον τροχο και με ενδεδειγμενη ενσωματωση θα πρεπει να φτιαξεις προσθετο. Δεν ειναι δυσκολο να γραψει προσθετο γiα prestashop, υπαρχει οδηγος εδω. Υπαρχει επισης και η ειδικη περιπτωση να κανεις δικο σου ffront controller οπως εδω , που επιτρεπει σχεδον απεριοριστες δυνατοτητες, πιστευω με το google μπορεις να βρεις κι αλλα παραδειγματα. Ελπιζω αυτα να σoυ δινουν μια ιδεα προς τα που να κινηθεις. Αυτη η σελιδα που εφτιαξες που δεν ειναι cms αλλα ειναι και σε tpl (του prestashop φανταζομαι) τι ακριβως ειναι και πως ειναι δομημενη, οσο περισσοτερες πληροφοριες/κωδικα δωσεις τοσο πιο καλη απαντηση θα παεις. Μ.Φ.Χ Καλημέρα ευχαριστώ για την απάντηση. Για να τη δημιουργήσω ακολούθησα αυτό το tutorial και δήλωσα τη σελίδα στο SEO και URLs Στο tpl αρχείο εμφανίζονται τα πεδία της φόρμας. <form action="action.php" method="post" enctype="multipart/form-data"> Πεδίο 1: <input type="text" name="name"><br> Πεδίο 2: <input type="text" name="lastname"><br> <input type="submit"> </form> έχω δημιουργήσει και ένα πίνακα για να δέχεται τα στοιχεία (δεν είναι μόνο αυτά τα 2 πεδία θα έχει και αλλά) απλά θέλω να το καταφέρω με 2 πρώτα. Θα πρέπει να δηλώσω στο αρχείο action.php το connection με τη βάση και αν ναι πως? ή θα πρέπει να γράψω το κώδικα στο CustomPageController.php πολλές ερωτήσεις ε? αλλά είμαι νέα χρήστης του prestashop ευχαριστώ και πάλι Link to comment Share on other sites More sharing options...
netplayer Posted December 9, 2014 Share Posted December 9, 2014 Ναι μπορεις να γραψεις το connection στη βαση χρησιμοποιωντας το DB API του prestashop εφοσον κανεις στο action.php include το config π.χ include_once('../../config/config.inc.php'); (Προσοχη στο relative path) Μετα μπορεις να χρησιμοποιησεις ολες τις DB functions του prestashop. Γενικοτερο Dοcumentation εδω . 1 Link to comment Share on other sites More sharing options...
mspace Posted December 10, 2014 Author Share Posted December 10, 2014 Ναι μπορεις να γραψεις το connection στη βαση χρησιμοποιωντας το DB API του prestashop εφοσον κανεις στο action.php include το config π.χ include_once('../../config/config.inc.php'); (Προσοχη στο relative path) Μετα μπορεις να χρησιμοποιησεις ολες τις DB functions του prestashop. Γενικοτερο Dοcumentation εδω . Επειδή δεν τα έβγαλα πέρα με τα παραπάνω tutorial προσπαθώ να στείλω τα δεδομένα με το παλιό παραδοσιακό τρόπο και να προχωρήσω μετά στα βαθιά. :-) στη σελίδα custom_page.tpl λοιπόν έχω <form class="form" method="post" action="action.php"> <p> <label>Name *</label> <input type="text" name="co_name" placeholder="Full Name" required /> </p> <p> <label>Mobile *</label> <input type="number" name="co_mobile" required /> </p> <p> <label>Email *</label> <input type="email" name="co_email" required /> </p> <p> <label>Message</label> <textarea rows="5" name="co_message" cols="15"></textarea> </p> <input type="submit" name="enq_submit" value="Apply Online" /> </form> και στο action.php <?php $host="localhost"; $username="root"; $password=""; $db_name="mydb"; $tbl_name="mytable"; mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); $name=$_POST['co_name']; $lastname=$_POST['co_mobile']; $email=$_POST['co_email']; $message=$_POST['co_message']; // Insert data into mysql $sql="INSERT INTO $tbl_name(f_name, f_mobile, f_email,f_text)VALUES('$name', '$lastname', '$email','$message' )"; $result=mysql_query($sql); // if successfully insert data into database, displays message "Successful". if($result){ echo "Successful"; } else { echo "ERROR"; } ?> <?php // close connection mysql_close(); ?> όταν πατάω submit μου εμφανίζει το μήνυμα 404 δεν βρέθηκε η σελίδα. Link to comment Share on other sites More sharing options...
netplayer Posted December 11, 2014 Share Posted December 11, 2014 Αρα δεν βρεθηκε το action.php. Δες σε ποια σελιδα κατοικοεδρευει η φορμα σου, και που ειναι το action.php κατα την εκτελεση. Μπορεις να τα βαλεις ολα στο ιδιο αρχειο π.χ action.php και να το εκτελεσεις για να μη ψαχνεις προς το παρον τις διαδρομες.Εχω βαλει βοηθητικα σχολια σε τρια σημεια με bold : <?php> $host="localhost"; $username="root"; $password=""; $db_name="mydb"; $tbl_name="mytable"; mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); if(isset($_POST['enq_submit'])) //an path8hke to koumpi onoma enq_submit kai mono tote 8a ektelestoun ta parakatw { $name=$_POST['co_name']; $lastname=$_POST['co_mobile']; $email=$_POST['co_email']; $message=$_POST['co_message']; // Insert data into mysql $sql="INSERT INTO $tbl_name(f_name, f_mobile, f_email,f_text)VALUES('$name', '$lastname', '$email','$message' )"; $result=mysql_query($sql); // if successfully insert data into database, displays message "Successful". if($result){ echo "Successful"; } else { echo "ERROR"; } ?> <?php // close connection mysql_close(); }//telos ths epejergasias formas </php> <form class="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"><!--stelnei ta dedomena ston eauto tou--> <p> <label>Name *</label> <input type="text" name="co_name" placeholder="Full Name" required /> </p> <p> <label>Mobile *</label> <input type="number" name="co_mobile" required /> </p> <p> <label>Email *</label> <input type="email" name="co_email" required /> </p> <p> <label>Message</label> <textarea rows="5" name="co_message" cols="15"></textarea> </p> <input type="submit" name="enq_submit" value="Apply Online" /> </form> Link to comment Share on other sites More sharing options...
mspace Posted December 11, 2014 Author Share Posted December 11, 2014 Αρα δεν βρεθηκε το action.php. Δες σε ποια σελιδα κατοικοεδρευει η φορμα σου, και που ειναι το action.php κατα την εκτελεση. Μπορεις να τα βαλεις ολα στο ιδιο αρχειο π.χ action.php και να το εκτελεσεις για να μη ψαχνεις προς το παρον τις διαδρομες.Εχω βαλει βοηθητικα σχολια σε τρια σημεια με bold : <?php> $host="localhost"; $username="root"; $password=""; $db_name="mydb"; $tbl_name="mytable"; mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); if(isset($_POST['enq_submit'])) //an path8hke to koumpi onoma enq_submit kai mono tote 8a ektelestoun ta parakatw { $name=$_POST['co_name']; $lastname=$_POST['co_mobile']; $email=$_POST['co_email']; $message=$_POST['co_message']; // Insert data into mysql $sql="INSERT INTO $tbl_name(f_name, f_mobile, f_email,f_text)VALUES('$name', '$lastname', '$email','$message' )"; $result=mysql_query($sql); // if successfully insert data into database, displays message "Successful". if($result){ echo "Successful"; } else { echo "ERROR"; } ?> <?php // close connection mysql_close(); }//telos ths epejergasias formas </php> <form class="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"><!--stelnei ta dedomena ston eauto tou--> <p> <label>Name *</label> <input type="text" name="co_name" placeholder="Full Name" required /> </p> <p> <label>Mobile *</label> <input type="number" name="co_mobile" required /> </p> <p> <label>Email *</label> <input type="email" name="co_email" required /> </p> <p> <label>Message</label> <textarea rows="5" name="co_message" cols="15"></textarea> </p> <input type="submit" name="enq_submit" value="Apply Online" /> </form> καλημέρα, ευχαριστώ για την απάντηση. Βασικά έχω και τα 2 αρχεία στον ίδιο φάκελο. Στον φάκελο του default theme. Δοκίμασα τη λύση σου αλλά πάλι το ίδιο μήνυμα 404 page not found Στο url έβαλα και το .../el/index.php?action.php αλλά πάλι τίποτα. Link to comment Share on other sites More sharing options...
mspace Posted December 11, 2014 Author Share Posted December 11, 2014 καλημέρα, ευχαριστώ για την απάντηση. Βασικά έχω και τα 2 αρχεία στον ίδιο φάκελο. Στον φάκελο του default theme. Δοκίμασα τη λύση σου αλλά πάλι το ίδιο μήνυμα 404 page not found Στο url έβαλα και το .../el/index.php?action.php αλλά πάλι τίποτα. Δούλεψε τελικά το insert βάζοντας στη φόρμα στο tpl αρχείο post="../themes/default-bootstrap/action.php" μάλλον όμως δεν είναι και ο πιο ορθόδοξος τρόπος γιατί στο url εμφανίζει όλο το path. Ξέρεις πως μπορεί τώρα η σελίδα μου action.php να περικλείεται με το template και να μην είναι μια λευκή σελίδα? Link to comment Share on other sites More sharing options...
mspace Posted December 11, 2014 Author Share Posted December 11, 2014 Δούλεψε τελικά το insert βάζοντας στη φόρμα στο tpl αρχείο post="../themes/default-bootstrap/action.php" μάλλον όμως δεν είναι και ο πιο ορθόδοξος τρόπος γιατί στο url εμφανίζει όλο το path. Ξέρεις πως μπορεί τώρα η σελίδα μου action.php να περικλείεται με το template και να μην είναι μια λευκή σελίδα? είναι εντάξει τώρα ήθελε το include(dirname(__FILE__).'/../../header.php'); include(dirname(__FILE__).'/../../footer.php'); 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now