Gio123 Δημοσ. 4 Μαρτίου 2015 Δημοσ. 4 Μαρτίου 2015 Καλησπέρα, Θα ήθελα να φτιάξω ένα σκριπτάκι όπου κάθε φορά που θα πατάω πάνω σε ένα <a align='left' class='change_status' href='subjectEdit.php?status=".$num[$i]."'>$array[$i]</a> να κάνω action το αρχείο 'subjectEdit.php'. Δηλαδή όπως θα γινόταν με την χρήση μιας <form action="subjectEdit.php">....</fom>. Βρήκα αυτό $(document).ready(function() { $("a.change_status").click(function(){ var status_id = $(this).attr('href').split('='); alert(status_id[1]); return false; }); }); αλλά δεν μπορώ να βρω τρόπο για να αντικαταστήσω το action ώστε να καλείτε το αρχείο 'subjectEdit.php'. Καμία ιδέα για το πως θα μπορούσε να γίνει; Ευχαριστώ.
chrism4111 Δημοσ. 4 Μαρτίου 2015 Δημοσ. 4 Μαρτίου 2015 (επεξεργασμένο) Και γιατί δεν χρησιμοποιείς την <form action="subjectEdit.php" > . Όπως καταλαβαίνω είσαι αρχάριος. Αν αυτό το κάνεις για εκπεδευτικούς λόγους τότε για να κάνεις το παραπάνω θα χρειαστείς να διαβάσεις Javascript και πιο συγγεκριμένα AJAX ή jQuery.ajax.Στήν θέση σου αν ήθελα να εκτελέσω ασυγχρονα το παραπάνω θα έκανα αυτό:Το html με την φορμα κανονικά: <form class="form-ajax" action="subjectEdit.php"> <input type="submit" value="<?php echo $array[$i]; ?>" /> <input type="hidden" name="status" value="<?php echo $num[$i]; ?>" /> </form> Και το Javascript $(document).ready(function(){ $('.form-ajax input[type="submit"]').click(function(e){ e.perventDefault(); var form = $(this).parents('.form-ajax'), data = form.serialize(); $.ajax({ data: data, type: 'GET', async: true, url: form.attr('action'), beforeSend: function(){ // Εδώ κώδικάς πριν το request }, success: function ( dataBack ){ // Εδώ κώδικάς κατά την επιτυχής ολοκλήρωση του request }, complete: function(){ // Εδώ κώδικάς μετά την επιτυχής ολοκλήρωση του request } }); return false; }); }); Τέλος στο αρχείο subjectEdit.php θα κάνεις την λειτουργία που εσύ θες . Επεξ/σία 4 Μαρτίου 2015 από chrism4111
Gio123 Δημοσ. 4 Μαρτίου 2015 Μέλος Δημοσ. 4 Μαρτίου 2015 Σε ευχαριστώ για την απάντηση αλλά για κάποιο λόγο μάλλον όταν πατάω επάνω στο <input> μου λέει ότι στο αρχείο subjEdit.php $data= $_POST['data']; είναι Undefined index και δεν μπορώ να καταλάβω το γιατί. Αυτό που θέλω να περνάω κάθε φορά που πατάω επάνω στο input είναι το value="<?php echo $num[$i]; ?>"
chrism4111 Δημοσ. 4 Μαρτίου 2015 Δημοσ. 4 Μαρτίου 2015 Σε ευχαριστώ για την απάντηση αλλά για κάποιο λόγο μάλλον όταν πατάω επάνω στο <input> μου λέει ότι στο αρχείο subjEdit.php $data= $_POST['data']; είναι Undefined index και δεν μπορώ να καταλάβω το γιατί. Αυτό που θέλω να περνάω κάθε φορά που πατάω επάνω στο input είναι το value="<?php echo $num[$i]; ?>" Αν έχεις γράψει τον ίδιο κώδικα που σου έδωσα παραπάνω τότε μπορείς να κάνεις το εξής: αντι για το $data = $_POST['data']; αλλάξέ το σε $data = $_GET['status'];
Gio123 Δημοσ. 4 Μαρτίου 2015 Μέλος Δημοσ. 4 Μαρτίου 2015 Αν έχεις γράψει τον ίδιο κώδικα που σου έδωσα παραπάνω τότε μπορείς να κάνεις το εξής: αντι για το $data = $_POST['data']; αλλάξέ το σε $data = $_GET['status']; Όντως από την μία είναι αυτό, αλλά κατάλαβα ότι όταν πατάω submit το $('.form-ajax submit').click(function(e){ }); δεν εκτελείτε. Δεν μπαίνει καθόλου μέσα στην function και κάθε φορά που πατάω κάτι διαφορετικό μου εμφανίζει πάντα την τελευταία τιμή που έχει ο πίνακας $num[$i];. Δηλαδή εκτελείται από το action που υπάρχε στην φόρμα.
chrism4111 Δημοσ. 4 Μαρτίου 2015 Δημοσ. 4 Μαρτίου 2015 Ουπς φίλε sorry έχω λάθος στον selector της click$('.form-ajax input[type=submit]')Δες το πρώτο Post μου που έχω αλλάξει τον κώδικα 1
Gio123 Δημοσ. 4 Μαρτίου 2015 Μέλος Δημοσ. 4 Μαρτίου 2015 Ουπς φίλε sorry έχω λάθος στον selector της click $('.form-ajax input[type=submit]') Δες το πρώτο Post μου που έχω αλλάξει τον κώδικα Ναι όντως, αλλά κάθε φορά περνάει την ίδια την τιμή και συγκεκριμένα την τελευταία που έχει ο πίνακας $num[$i]. Ότι και να πατήσω με διαφορετικό value φυσικά το $_GET['status'] έχει την τελευταία τιμή.
chrism4111 Δημοσ. 4 Μαρτίου 2015 Δημοσ. 4 Μαρτίου 2015 Ναι όντως, αλλά κάθε φορά περνάει την ίδια την τιμή και συγκεκριμένα την τελευταία που έχει ο πίνακας $num[$i]. Ότι και να πατήσω με διαφορετικό value φυσικά το $_GET['status'] έχει την τελευταία τιμή. Δεν σε έπιασα εδώ.. Έχεις online αυτό που κάνεις να στείλεις ένα Link? Δώσε όλον το κομμάτι κώδικα που έχεις γράψει. Μπας και καταλάβω. Το ajax θα σερβίρει πάντα την τιμή που έχει το <input name="status" />.
defacer Δημοσ. 4 Μαρτίου 2015 Δημοσ. 4 Μαρτίου 2015 Γιατί όχι απλά $("form.form-ajax").submit(...) που είναι και απλούστερο και σωστότερο;
Gio123 Δημοσ. 4 Μαρτίου 2015 Μέλος Δημοσ. 4 Μαρτίου 2015 Δεν σε έπιασα εδώ.. Έχεις online αυτό που κάνεις να στείλεις ένα Link? Δώσε όλον το κομμάτι κώδικα που έχεις γράψει. Μπας και καταλάβω. Το ajax θα σερβίρει πάντα την τιμή που έχει το <input name="status" />. Έχω αυτό $array =$_SESSION['array']; $length = count($array); $num = $_SESSION['id']; for ($i = 0; $i < $length; $i++) { ?> <input type="submit" value="<?php echo $array[$i]; ?>" /> <input type="hidden" name="status" value="<?php echo $num[$i]; ?>" /> <?php } ?> κάθε φορά που επιλέγω κάποιο submit με αυτά που μου είπες παραπάνω, στο αρχείο subjectEdit.php κάνω κάποιυς ελέγχους και εκεί αναλόγως το $_GET['status']; που παίρνω θέλω να φορτώνω μία άλλη σελίδα η οποία εξάρταται από $_GET['status'];. Αλλά σύμφωνα με αυτά οτιδήποτε πατήσω το $_GET['status'] θα είναι ίσον με την τελευταία τιμή του πίνακα $num[], δεν αλλάζει η τιμή του. Σε εμένα για κάποιο λόγο σερβίρει πάντα την τελευταία τιμή του πίνακα.
alou Δημοσ. 4 Μαρτίου 2015 Δημοσ. 4 Μαρτίου 2015 Τότε δεν χρειάζεσαι ούτε form ούτε submit. Κάνε το input σου έτσι μέσα στο loop (όχι 2ο hidden input, δεν χρειάζεται) <input class="clicktogo" data-status="<?php echo $num[$i]; ?>" type="button" value="<?php echo $array[$i]; ?>" /> και με jQuery στέλνεις σε ένα url με τη μεταβλητή που θες $('.clicktogo').on('click', function(e) { location.href = 'http://yoursite.gr/?status=' + $(this).data('status'); }); Το url προφανώς είναι αυτό που πρέπει να βάλεις και σαν παράμετρο έβαλα status, που θα την πάρεις όπως ήδη κάνεις με $_GET['status'] στην php Αλλά γιατί δεν το κάνεις κανονικό link δεν μπορώ να καταλάβω, δηλαδή <a href="http://whatever.gr/?status=<?phpecho $num[$i]... Αν υπάρχουν παραπάνω στοιχεία, είτε φτιάχνεις έτσι το url με paramName=paramValue&otherParam=otherValue είτε φτιάχνεις μέσα στο loop μια φόρμα και ένα submit για κάθε iteration. Εκείνο που προφανώς δεν έχεις καταλάβει, είναι ότι το submit της φόρμας στέλνει τα στοιχεία που περιέχονται στη φόρμα που βρίσκεται, ξεκινάς πάντα με <form ...> συνεχίζεις με οτιδήποτε input κλπ και καταλήγεις σε </form> (για κάθε iteration στην περίπτωσή σου). 1
chrism4111 Δημοσ. 4 Μαρτίου 2015 Δημοσ. 4 Μαρτίου 2015 Την Form που την έχεις?μήπως να βάλεις την form μέσα στην loop?Κάπως έτσι : $array =$_SESSION['array']; $length = count($array); $num = $_SESSION['id']; for ($i = 0; $i < $length; $i++) { ?> <form class="form-ajax" action="subjectEdit.php"> <input type="submit" value="<?php echo $array[$i]; ?>" /> <input type="hidden" name="status" value="<?php echo $num[$i]; ?>" /> </form> <?php } ?> Επίσης η λύση του Defacer είναι όντως πιο απλή και πιο καλή (κατά την γνώμη και οι δύο το ίδιο σωστές είναι)... Είδα και τον alou μόλις τώρα:Και όντως μήπως θέλεις απλά ένα Link? <a href="http://yoursite.gr/?status=<?php echo $num[$i]; ?>&value=<?php echo $array[$i]; ?>" >...</a> 1
Gio123 Δημοσ. 5 Μαρτίου 2015 Μέλος Δημοσ. 5 Μαρτίου 2015 Την Form που την έχεις? μήπως να βάλεις την form μέσα στην loop? Κάπως έτσι : $array =$_SESSION['array']; $length = count($array); $num = $_SESSION['id']; for ($i = 0; $i < $length; $i++) { ?> <form class="form-ajax" action="subjectEdit.php"> <input type="submit" value="<?php echo $array[$i]; ?>" /> <input type="hidden" name="status" value="<?php echo $num[$i]; ?>" /> </form> <?php } ?> Επίσης η λύση του Defacer είναι όντως πιο απλή και πιο καλή (κατά την γνώμη και οι δύο το ίδιο σωστές είναι)... Είδα και τον alou μόλις τώρα: Και όντως μήπως θέλεις απλά ένα Link? <a href="http://yoursite.gr/?status=<?php echo $num[$i]; ?>&value=<?php echo $array[$i]; ?>" >...</a> Όντως με ένα απλό link ήταν πιο εύκολο, αλλά και τα δύο δούλεψαν. Σας ευχαριστώ και τους δύο.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα