[Solved] redirect σε σελίδα με function

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

[Solved] redirect σε σελίδα με function

Δημοσίευση από Apostolis_38 » 09 Ιούλ 2009 12:40

Γίνεται να κάνουμε redirect με το header Location σε σελίδα η οποία περιέχει functions και να πηγαίνει στην function που θέλουμε, παρακάμπτοντας της προηγούμενες;

το header είναι αυτής της μορφής:

Κώδικας: Επιλογή όλων

header("Location: φάκελος/αρχείο.php?id=".$_GET['id']."&table=".$_GET['table']."&field=".$_GET['field']." ");
Με αυτόν τον τρόπο πηγαίνει στην πρώτη function που βρίσκει στη σελίδα.
Τελευταία επεξεργασία από το μέλος Apostolis_38 την 15 Ιούλ 2009 09:25, έχει επεξεργασθεί 1 φορά συνολικά.

dpa
Δημοσιεύσεις: 631
Εγγραφή: 29 Μαρ 2008 13:55

[Solved] redirect σε σελίδα με function

Δημοσίευση από dpa » 09 Ιούλ 2009 13:08

Βάλε ένα δεύτερο όρισμα στην function που θες πχ active

στείλτο με το header ένα ?active=1 στο url και μετά πάρτο με την $_GET

έτσι θα πάει στην συγκεκριμένη συνάρτηση

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

[Solved] redirect σε σελίδα με function

Δημοσίευση από Apostolis_38 » 09 Ιούλ 2009 13:54

Θα το δοκιμάσω.
Ευχαριστώ.

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

[Solved] redirect σε σελίδα με function

Δημοσίευση από Banavas » 09 Ιούλ 2009 15:24

Δεν λες καλύτερα τι προσπαθείς να κάνεις και τι σε προβληματίζει γιατί την ερώτησή σου δεν την βλέπω να στέκει λογικά.

Οι functions ή συναρτήσεις είναι κομμάτια κώδικα που τα ορίζουμε να κάνουν συγκεκριμμένη εργασία και τα καλούμε πολλές φορές από διάφορα σημεία του προγράμματος. Με τις συναρτήσεις γλυτώνουμε την πολλαπλή γραφή του ιδίου κώδικα.

Μπορούμε να καλέσουμε οποιαδήποτε function από οποιοδήποτε σημείο αρκεί να τις έχουμε στην ίδια σελίδα ή να τις συμπεριλάβουμε στη σελίδα μας με την include. Συνεπώς δεν πάμε στις συναρτήσεις αλλά τις καλούμε (όποια θέλουμε κάθε φορά) από εκεί που είμαστε.

Εκτός αν με τη λέξη function εννοείς κάτι άλλο και δεν το κατάλαβα.
Happy coding....
Μάρκος
http://lasernet.gr

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

[Solved] redirect σε σελίδα με function

Δημοσίευση από Apostolis_38 » 09 Ιούλ 2009 19:09

ok, είναι αρκετά μπερδέμενο όμως.

Υπάρχουν 7 tables στα οποία καταχωρούνται ανάμεσα στα άλλα τα paths για 8 εικόνες που γίνονται upload. Το upload γίνεται μέσω ενός αρχείου (ενιαίο για όλα τα tables).
Απο την detail σελίδα του κάθε πίνακα οδηγήσαι σε μία σελίδα όπου μπορείς να τροποποιήσεις-διαγράψεις την εγγραφή ή κάποια από τις εικόνες.

Κώδικας: Επιλογή όλων

<select name = "searchtype">
            <option value  = "alter">ΤΡΟΠΟΠΟΙΗΣΗ ΕΓΓΡΑΦΗΣ</option>
            <option value  = "del">ΔΙΑΓΡΑΦΗ ΕΓΓΡΑΦΗΣ</option>
            <option value  = "upload1">ΑΝΕΒΑΣΜΑ ΦΩΤΟΓΡΑΦΙΑΣ 1</option>
            <option value  = "upload5">ΑΝΕΒΑΣΜΑ ΕΙΚΟΝΙΔΙΟΥ 1</option>
            <option value  = "upload2">ΑΝΕΒΑΣΜΑ ΦΩΤΟΓΡΑΦΙΑΣ 2</option>
            <option value  = "upload6">ΑΝΕΒΑΣΜΑ ΕΙΚΟΝΙΔΙΟΥ 2</option>
            <option value  = "logo">ΑΝΕΒΑΣΜΑ LOGO</option>
          </select>
          <input type = "submit"  value = "ΕΠΟΜΕΝΟ">
Οταν θέλεις να διαγράψεις την εγγραφή ή να αντικαταστήσεις μία εικόνα υποχρεωτικά πρέπει να διαγράψεις τις εικόνες που υπάρχουν ήδη.
Ετσι λοιπόν στο delete.php υπάρχει ένα require file το οποίο κάνει κλήση μίας function, όπου ανάλογα την επιλογή πραγματοποιείται η αντίστοιχη ενέργεια (alter, delete, upload κ.λ.π. κ.λ.π.).

Κώδικας: Επιλογή όλων

function action_select&#40;$searchtype&#41;
&#123;
switch &#40;$searchtype&#41;
  &#123;
  case $searchtype == "alter" &#58;
    $searchtype = alter_record&#40;"alter"&#41;;   break;
 case $searchtype ==  "del" &#58;
    $searchtype = del_record&#40;"del"&#41;;   break;
 case $searchtype ==  "upload1" &#58;
    $searchtype = upload_file1&#40;"upload1"&#41;; break;
 case $searchtype ==  "upload5" &#58;
    $searchtype = upload_file5&#40;"upload5"&#41;; break;
 case $searchtype ==  "upload2" &#58;
    $searchtype = upload_file2&#40;"upload2"&#41;;   break;
 case $searchtype ==  "upload6" &#58;
    $searchtype = upload_file6&#40;"upload6"&#41;;   break;
 case $searchtype ==  "logo" &#58;
    $searchtype = upload_logo&#40;"logo"&#41;;   break;
  &#125;
&#125;

Οταν γίνεται αντικατάσταση της εικόνας, η διαγραφή της παλιάς γίνεται και αυτόματα με ένα header location οδηγήσε στη φόρμα upload ώστε να ανεβάσεις την νέα εικόνα. Ως εδώ ok.

Προσπαθώ να κάνω το ίδιο όταν πρόκειται να γίνει διαγραφή της εγγραφής. Δηλαδή να διαγράφεις την παλιά εικόνα και με header location να σε οδηγεί στην συγκεκριμένη εγγραφή που πρόκειται να διαγραφεί.
Εκεί υπάρχει και το πρόβλημα γιατί βρίσκοντας το script μπροστά του το require, πηγαίνει στην πρώτη function που βρίσκει μπροστά του (την alter) κι όχι σε αυτή που πρέπει (την delete).

Πολύ απλά επειδή δεν έχει οριστεί το $searchtype=="del".

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

[Solved] redirect σε σελίδα με function

Δημοσίευση από Banavas » 10 Ιούλ 2009 00:42

Προσπαθώ να κάνω το ίδιο όταν πρόκειται να γίνει διαγραφή της εγγραφής. Δηλαδή να διαγράφεις την παλιά εικόνα και με header location να σε οδηγεί στην συγκεκριμένη εγγραφή που πρόκειται να διαγραφεί.
Εκεί υπάρχει και το πρόβλημα γιατί βρίσκοντας το script μπροστά του το require, πηγαίνει στην πρώτη function που βρίσκει μπροστά του (την alter) κι όχι σε αυτή που πρέπει (την delete).
Εδώ σε χάνω τελοίως. :o

Και επειδή δεν μπορώ να μπω στον τρόπο σκέψης σου, σου παραθέτω την λογική σειρά των ενεργειών.

Όταν θέλεις να διαγράψεις πρώτα την παλιά φωτογραφία κάνεις πρώτα ένα query στην βάση για να διαβάσεις το όνομα του αρχείου που πάει για διαγραφή και το αναθέτεις σε μια μεταβλητή πχ $file_to_del.
από κάτω κάνεις unlink( $file_to_del);
και στη συνέχεια mysql_query(DELETE FROM pinakas WHERE ........
και όλα αυτά τα βάζεις σε ένα if move (...) δηλαδή αν έχει ανέβει η νέα φωτογραφία σωστά αλλοιώς να μην γίνει τίποτα.

Τώρα αν θέλεις μπορείς να βάλεις τις παραπάνω ενέργειες σε μια function και περνάς με μεταβλητές το path το id της εγγραφής που θα βρεί το όνομα της παλιάς φωτογραφίας, το όνομα της νέας φωτογραφίας , το όνομα του πίνακα και ότι άλλο θέλεις να εγγραφεί στη βάση.


EDIT
τώρα που ξαναδιαβάζω τον κώδικά σου βλέπω οτι μπορείς να βάλεις τις παραπάνω εντολές στην del_record("del");
Happy coding....
Μάρκος
http://lasernet.gr

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

[Solved] redirect σε σελίδα με function

Δημοσίευση από Apostolis_38 » 10 Ιούλ 2009 09:26

Σόρρυ αν δεν το εξήγησα σωστά.

Η λογική που αναφέρεις είναι για την πρώτη περίπτωση που κάνεις αντικατάσταση της φωτογραφίας και το οποίο δουλεύει σωστά με αρκετά παρόμοιο τρόπο.
Εγώ αναφέρομαι στην περίπτωση που θέλεις να διαγράψεις την εγγραφή και ότι σχετίζεται με αυτή.
Μπορώ βέβαια να βάλω το script να τσακίζει τα πάντα, αλλά προτιμώ να γίνεται "σταδιακά" η διαγραφή για να μην σβηστεί κάποια εγγραφή κατά λάθος.
Πρώτα εμφανίζω την φωτογραφία με το μήνυμα "πρέπει πρώτα να διαγράψετε την τάδε φωτογραφία" και μετά στο τελευταίο στάδιο εμφανίζω πάλι ένα μήνυμα "είστε σίγουρος για τη διαγραφή;" κ.λ.π. κ.λ.π.
Ετσι όταν φτάσει στο σημείο να πατήσει το κουμπί διαγραφή, αν έχει κάνει λάθος το πολύ πολύ να ξανανεβάσει τις φωτογραφίες.

Επειδή λοιπόν το διαχειριστικό κομμάτι περιλαμβάνει αρκετές σελίδες (νεα εγγραφή, διαγραφή, τροποποίηση κ.λ.π. ανά πίνακα), όταν κάποιος διαγράψει την φωτογραφία θέλω το script να πηγαίνει στην προς διαγραφή εγγραφή κι όχι στην κεντρική σελίδα. Είναι σπαστικό να διαγράφεις μία φωτογραφία - να πηγαίνεις στην κεντρική σελίδα - να μπαίνεις στον πίνακα που σε ενδιαφέρει - να βρίσκεις την εγγραφή που θέλεις να διαγράψεις - να τη διαγράφεις και άντε πάλι απο την αρχή.

Ισως να είμαι υπερβολικός αλλά πιστεύω πως έτσι είναι καλύτερα για αυτόν που θα διαχειρίζεται το admin κομμάτι του site.
Αν βάλω το script να σβήνει αμέσως τα πάντα, μπορεί να τσακίσει όλη τη βάση σε 5 λεπτά. Ας του πάρει τουλάχιστον μισή ώρα :D

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

[Solved] redirect σε σελίδα με function

Δημοσίευση από Banavas » 10 Ιούλ 2009 10:14

Apostolis_38 έγραψε:Η λογική που αναφέρεις είναι για την πρώτη περίπτωση που κάνεις αντικατάσταση της φωτογραφίας και το οποίο δουλεύει σωστά με αρκετά παρόμοιο τρόπο.
Εγώ αναφέρομαι στην περίπτωση που θέλεις να διαγράψεις την εγγραφή και ότι σχετίζεται με αυτή.
Ο τρόπος για την διαγραφή είναι ακριβώς ο ίδιος με παράληψη το ανέβασμα της νέας φωτογραφίας και την εγγραφή των δεδομένων στη βάση.
Apostolis_38 έγραψε: Μπορώ βέβαια να βάλω το script να τσακίζει τα πάντα, αλλά προτιμώ να γίνεται "σταδιακά" η διαγραφή για να μην σβηστεί κάποια εγγραφή κατά λάθος. Πρώτα εμφανίζω την φωτογραφία με το μήνυμα "πρέπει πρώτα να διαγράψετε την τάδε φωτογραφία" και μετά στο τελευταίο στάδιο εμφανίζω πάλι ένα μήνυμα "είστε σίγουρος για τη διαγραφή;" κ.λ.π. κ.λ.π.
Ετσι όταν φτάσει στο σημείο να πατήσει το κουμπί διαγραφή, αν έχει κάνει λάθος το πολύ πολύ να ξανανεβάσει τις φωτογραφίες.
Συμφωνώ απόλυτα. Όμως χωρίς να γίνεται κουραστικό στον χρήστη. Οι πολλές ερωτήσεις και επιβεβαιώσεις στην PHP συνεπάγονται ανανεώσεις της σελίδας και αυτό γίνεται από κουραστικό έως σπαστικό. Για την αποφυγή ατυχούς διαγραφής με κατά λάθος πάτημα του πλήκτρου διαγραφής αρκεί ένα javascript alert επιβεβαίωσης, ώστε να μην επαναφορτώνεται η σελίδα.
Apostolis_38 έγραψε: Επειδή λοιπόν το διαχειριστικό κομμάτι περιλαμβάνει αρκετές σελίδες (νεα εγγραφή, διαγραφή, τροποποίηση κ.λ.π. ανά πίνακα), όταν κάποιος διαγράψει την φωτογραφία θέλω το script να πηγαίνει στην προς διαγραφή εγγραφή κι όχι στην κεντρική σελίδα. Είναι σπαστικό να διαγράφεις μία φωτογραφία - να πηγαίνεις στην κεντρική σελίδα - να μπαίνεις στον πίνακα που σε ενδιαφέρει - να βρίσκεις την εγγραφή που θέλεις να διαγράψεις - να τη διαγράφεις και άντε πάλι απο την αρχή.
Δεν έχω καταλάβει γιατί χρησιμοποιείς 7 πίνακες. Υποψιάζομαι οτι το κάνεις για κατηγορίες. Αν έχω δίκαιο τότε είναι πολύ λάθος ο τρόπος που το χειρίζεσαι.

Έχω κάνει αρκετές φορές διαχείριση φωτογραφιών και ποτέ δεν χρειάστηκε rediraction εν μέσω της διαδικασίας διαχείρισης. Και πάντα ο τρόπος είναι όσο το δυνατόν απλούστερος χωρίς μετακινήσεις από σελίδα σε σελίδα ή επαναφωρτώσεις της σελίδας για επιβεβαίωση.

Μπορώ να σου δώσω screenshot για να δεις πόσο απλά γίνεται η διαχείριση.
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

[Solved] redirect σε σελίδα με function

Δημοσίευση από korgr » 10 Ιούλ 2009 12:09

Θα συμφωνησω με τον Banavas και θα σου δωσω μια συμβουλη Αποστολη μου:
Πάρτο αλλιως!
Για να εχεις φτασει σε τετοια αδιεξοδα σημαινει πως καπου η δομη του project σου εχει παρει αρκετα στραβο δρομο. Ολοι μας εχουμε βρεθει αντιμετωποι με τετοιες καταστασεις. Δεν βρεθηκαμε ομως σε τετοιο αδιεξοδο, οποτε ξανασκεψου το (τελειως φιλικα)

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

[Solved] redirect σε σελίδα με function

Δημοσίευση από Apostolis_38 » 10 Ιούλ 2009 12:24

@banavas: μάλλον έχεις δίκιο. Κι εγώ που το ξανασκέφτομαι μάλλον το έχω τσακίσει στο "πρόσεχε τι πας να κάνεις" :D

Τώρα για τούς πίνακες. Δυστυχώς χρειάζονται.
Ενας πίνακας είναι για αυτοκίνητα, άλλος για μοτοσικλέτες, άλλος για φορτηγά και πολλά άλλα διάφορα.Το 7 το έγραψα ενδεικτικά. Οι πίνακες είναι πολύ περισσότεροι και δυστυχώς δεν γινόταν να το αποφύγω.

@korgr. Πίστεψέ με, προσπάθησα να το αποφύγω. Δεν λέω οτι εξάντλησα όλες τις πιθανότητες γιατί "εργάζομαι" με ένα συγκεκριμένο τρόπο και στύλ και πιθανόν να "μην πήγαινε πιο μακρυά η σκέψη μου" αλλά το πάλεψα γιατί και για μένα ήταν αρκετός κόπος να το φτιάξω με αυτόν τον τρόπο.
Οσο για το φιλικά, μην αγχώνεσαι. Αν είχα σκοπό να παρεξηγηθώ δεν θα ζήταγα βοήθεια.
Θα ήμουν αχάριστος.

Υ.Γ. Οποιος θέλει ας ρίξει μία ματιά στο site: www.cosmowheel.gr ακόμα είναι σε test mode και κάθε παρατήρηση καλοδεχούμενη.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

[Solved] redirect σε σελίδα με function

Δημοσίευση από korgr » 10 Ιούλ 2009 12:45

ok δεν επιμενω, εσυ ξερεις καλυτερα και πανω απ' ολα σεβομαι τον τροπο που κατανοει και δουλευει ο καθενας! Καπου ειδα table=33 στα urls σου... Με πιανει ριγος και μονο να σκεφτομαι πως εχεις τοσα tables και τα διαχειριζεσαι ξεχωριστα στο admin panel σου.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

[Solved] redirect σε σελίδα με function

Δημοσίευση από Apostolis_38 » 10 Ιούλ 2009 12:49

Banavas έγραψε:Μπορώ να σου δώσω screenshot για να δεις πόσο απλά γίνεται η διαχείριση.
Για δώσε καμμιά φωτό. Ποτέ δεν έβλαψε να παίρνεις μια ιδέα απο κάποιον καλύτερο :D

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

[Solved] redirect σε σελίδα με function

Δημοσίευση από Apostolis_38 » 10 Ιούλ 2009 12:53

korgr έγραψε:Με πιανει ριγος και μονο να σκεφτομαι πως εχεις τοσα tables και τα διαχειριζεσαι ξεχωριστα στο admin panel σου.
Μόνο το μακρυνάρι που κρεμιέται κάτω απο τα αυτοκίνητα να δείς φτάνει.
Πως θα τα διαχειριστείς όλα αυτά από μια σελίδα;
Πάλι καλά που δεν θες άλλο για αυτοκίνητα, άλλο για μοτό κ.ο.κ.

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

[Solved] redirect σε σελίδα με function

Δημοσίευση από Banavas » 10 Ιούλ 2009 14:02

Το έριξα μια ματιά και η πρώτη εντύπωση ήταν καλή (αισθητικά) Μου άρεσε αρκετά το λογότυπο.

Από τις κατηγορίες που είδα αν τις γεμίσεις μόνος σου δεν θα προλάβεις, θα έχεις βγει στην σύνταξη... :D

Θα σου πω περισότερες παρατηρήσεις μολις βρω χρόνο.
Happy coding....
Μάρκος
http://lasernet.gr

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

[Solved] redirect σε σελίδα με function

Δημοσίευση από Apostolis_38 » 10 Ιούλ 2009 14:40

Banavas έγραψε:Από τις κατηγορίες που είδα αν τις γεμίσεις μόνος σου δεν θα προλάβεις, θα έχεις βγει στην σύνταξη... :D
Πλούσιος όμως, και δέκα λεπτά την καταχώρηση να παίρνω σώθηκα :D :D

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες