Jump to content

Custom Φόρμα


mspace

Recommended Posts

Καλησπέρα,

 

έχω φτιάξει μια σελίδα (custom όχι από το cms) στην οποία θέλω να δημιουργήσω μια φόρμα εισαγωγής δεδομένων από τον επισκέπτη.

Μπορεί κάποιος να βοηθήσει με το στήσιμο της φόρμας και τη σύνδεση με την βάση δεδομένων?

Εννοώ πως μπορώ να γράψω php κώδικα σε tpl αρχείο και να στέλνει τα δεδομένα στη βάση.

Δυστυχώς δουλεύω σε localhost

Ευχαριστώ πολύ

Link to comment
Share on other sites

Δεν θα γραψεις  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

Δεν θα γραψεις  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

Ναι μπορεις να γραψεις το connection στη βαση χρησιμοποιωντας το DB API του prestashop εφοσον κανεις στο action.php include το config   π.χ

include_once('../../config/config.inc.php'); 

(Προσοχη στο relative path)  Μετα μπορεις να χρησιμοποιησεις ολες τις DB functions του prestashop.

 

Γενικοτερο Dοcumentation εδω . 

  • Like 1
Link to comment
Share on other sites

Ναι μπορεις να γραψεις το 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

Αρα δεν βρεθηκε το 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

 

Αρα δεν βρεθηκε το 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

καλημέρα, 

ευχαριστώ για την απάντηση. 

Βασικά έχω και τα 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

Δούλεψε τελικά το insert βάζοντας στη φόρμα στο tpl αρχείο  post="../themes/default-bootstrap/action.php"

μάλλον όμως δεν είναι και ο πιο ορθόδοξος τρόπος γιατί στο url εμφανίζει όλο το path.

Ξέρεις πως μπορεί τώρα η σελίδα μου action.php να περικλείεται με το template και να μην είναι μια λευκή σελίδα?

 

είναι εντάξει τώρα 

ήθελε το 

include(dirname(__FILE__).'/../../header.php');

 

include(dirname(__FILE__).'/../../footer.php');

  • Like 1
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...