pseudonymos Δημοσ. 16 Απριλίου 2011 Share Δημοσ. 16 Απριλίου 2011 Καλησπέρα σε όλους, έχω το αρχείο Site.html και μέσα σε αυτό έχω την εξής φόρμα: <form method="post" action="HandleForm.php" > .... .... </fom> Το αρχείο HandleForm.php παίρνει τα δεδομένα απο την φόρμα και τα αποθυκεύει σε μια βάση δεδομένων. Όταν ο χρήστης παταέι το κουμπί submit και στέλνει τη φόρμα τότε η php ανοίγει καινούγια σελίδα. Πως γίνεται να πατάει ο χρήστης submit και να μένει στην ίδια σελίδα?? Κάτι θα πρέπει να αλλάξω στο πεδίο action="..."? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
isay Δημοσ. 16 Απριλίου 2011 Share Δημοσ. 16 Απριλίου 2011 Με βάση αυτά που λες και τη δομή της φόρμας, δεν δικαιολογείται να ανοίγει σε νεα σελίδα. Μήπως συμβαίνει κάτι άλλο; Κάποιο ξεχασμένο javascript; Κάποια παράβλεψη στον κώδικα της html; Κάποια περίεργη ρύθμιση στον browser; Επισης βλέπω οτι έχεις γράψει < / f o m > αντί για < / f o r m >. Μήπως έχεις το ίδιο και στη σελίδα σου και κάποιο javascript κάνεις popup κάποιο παράθυρο; Μήπως το παράθυρο το ανοίγει η HandleForm.php Επίσης κάνε την εξής δοκιμή. Στη φόρμα αντί για action="HandleForm.php" βάλε action="" ώστε να δεις αν το νεο παράθυρο οφείλεται στην φόρμα ή στο HandleForm.php Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
pseudonymos Δημοσ. 16 Απριλίου 2011 Μέλος Share Δημοσ. 16 Απριλίου 2011 Δοκίμασα να αφήσω το πεδίο κενό και δεν άνοιξε σε καμία σελίδα που σημαίνει οτι δεν πρέπει να έχει να κανει με javascript. Το είδα το λάθος αλλά στο αρχείο είναι σωστά. Η καινούργια σελίδα που ανοίγει εχει το όνομα HandleForm.php . Αυτό που θέλω να κάνω είναι να παραμένει στο Site.html . Δηλαδή μετά το submition να μην φεύγει απο τη σελίδα που είναι. Κάπου είδα για μία μεταβλητή $_SERVER["PHP_SELF"] αλλά δεν με βοήθησε και πολύ. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
dewn735 Δημοσ. 16 Απριλίου 2011 Share Δημοσ. 16 Απριλίου 2011 Στο τέλος της HandleForm.php βάλε ένα >header('Location: Site.html'); για να σε γυρίσει στη πρώτη σελίδα Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
parsifal Δημοσ. 16 Απριλίου 2011 Share Δημοσ. 16 Απριλίου 2011 Για να μην έχεις page reloading, θα πρέπει αναγκαστικά να κάνεις POST τη φόρμα μέσω AJAX. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
pseudonymos Δημοσ. 16 Απριλίου 2011 Μέλος Share Δημοσ. 16 Απριλίου 2011 Δοκίμασα το να προσθέσω header('Location: ....') αλλά συνέχισε να ανοίγει σε άλλη σελίδα. Η αλήθεια είναι οτι Ajax δε έχω κοιτάξει ακόμα οπότε δεν ξέρω τι ακριβώς να κάνω. Θα κάτσω να το κοιτάξω. Οπότε μόνο με Ajax γίνεται?? Υπάρχει μήπως κάποιο καλό tutorial με Ajax για τον σκοπό που το θέλω?? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
parsifal Δημοσ. 16 Απριλίου 2011 Share Δημοσ. 16 Απριλίου 2011 Δοκίμασα το να προσθέσω header('Location: ....') αλλά συνέχισε να ανοίγει σε άλλη σελίδα. Μήπως πριν από την εντολή αυτή, το script έχει παράγει οποιουδήποτε είδους output που στέλνεται στον browser; Αν ναι, τότε είναι δώρον άδωρον γιατί η εντολή αγνοείται και οι headers του output ήταν αυτοί που είχαν οριστεί μέχρι το σημείο που άρχισε να στέλνεται το output αυτό. Η αλήθεια είναι οτι Ajax δε έχω κοιτάξει ακόμα οπότε δεν ξέρω τι ακριβώς να κάνω. Θα κάτσω να το κοιτάξω.Οπότε μόνο με Ajax γίνεται?? Υπάρχει μήπως κάποιο καλό tutorial με Ajax για τον σκοπό που το θέλω?? Υπάρχουν ένα σωρό. Για δες αυτό που χρησιμοποιεί jQuery: http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/ Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
pseudonymos Δημοσ. 16 Απριλίου 2011 Μέλος Share Δημοσ. 16 Απριλίου 2011 Για παράδειγμα στον παρακάτω κώδικα που είναι η θέση για το header("....") ? Αν γράψω τον κώδικα στο τέλος δεν κάνει τίποτα. Αφου είπες για το output τον τοποθέτησα στην πρώτη γραμμή και δούλεψε. Αλλά θέλω να ρωτήσω ποια είναι η πιο σωστή θέση? Output παράγει η εντολή echo? Απλά διάβασα το manual για την header και εξηγούσε για output αλλά δεν κατάλαβα ακριβώς. ><?php $date = $_POST["date"]; $description = $_POST["description"]; $article = $_POST["article"]; $cnx = mysql_connect(localhost,root,root); if( !$cnx ) { die('Could not connect: ' . mysql_error()); exit(); } mysql_select_db("roh",$cnx); mysql_query( "insert into posts (date,description,article) values ('$date','$description','$article')",$cnx); $result = mysql_query("select * from posts",$cnx); while( $row = mysql_fetch_array($result) ) { echo "On:".$row["date"]."<br/>Description:".$row["description"]."<br/>Article:".$row["article"]."<br/>"; } mysql_close(); ?> Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
parsifal Δημοσ. 16 Απριλίου 2011 Share Δημοσ. 16 Απριλίου 2011 Για παράδειγμα στον παρακάτω κώδικα που είναι η θέση για το header("....") ? Αν γράψω τον κώδικα στο τέλος δεν κάνει τίποτα. Αφου είπες για το output τον τοποθέτησα στην πρώτη γραμμή και δούλεψε. Στο συγκεκριμένο παράδειγμα κώδικα, πουθενά νομίζω! Γιατί χρησιμοποιείς echo και για να την αφαιρέσεις, θα πρέπει να αναδιοργανώσεις τον κώδικα PHP σου για να έχεις το ίδιο αποτέλεσμα. Γενικά, να έχεις υπ' όψιν σου ο,τι η συνύπαρξη στο ίδιο PHP script μίας header εντολής σε μεταγενέστερο σημείο από μία εντολή που παράγει output έχει νόημα μόνο όταν η δεύτερη βρίσκεται μέσα σε κάποιο if block και η πρώτη στο else block της if (υπάρχει μία μικρή εξαίρεση σε αυτό, αλλά ας μη σε μπερδέψω περισσότερο γιατί δεν έχει σχέση με το πρόβλημά σου). Output παράγει η εντολή echo? Μεταξύ άλλων και η echo. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
pseudonymos Δημοσ. 16 Απριλίου 2011 Μέλος Share Δημοσ. 16 Απριλίου 2011 Όμως όταν έβαλα την header στην πρώτη γραμμή οι καταχωρήσεις στην mysql γίνονται κανονικά. Δηλαδή όταν εισάγω στην φόρμα στοιχεία αυτά καταχωρούνται κανονικά. Βέβαια output στην οθόνη δεν έχω αν εννοείς αυτό. Οπότε το κώδικα για το output τον έγραψα σε ξεχωριστό div στο αρχείο Site.html και τα εμφανίζει κανονικά(οπότε ίσως να έχεις δίκιο αυτό που λες). Πάντως όπως κατάλαβα ο κώδικας αυτός ( που τον βρήκα σχεδόν έτοιμο ) είναι "εκπαιδευτικού" χαρακτήρα και θα πρέπει να γράψω άλλο αν θέλω να τον αναπτύξω πιο πολύπλοκα. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.