[Powered by Google Translate] [Πρόβλημα Walkthrough Σετ 7] [Zamyla Chan] [Πανεπιστήμιο του Χάρβαρντ] [Αυτό είναι CS50] [CS50.TV] Γεια σε όλους, και καλώς ήρθατε στην Walkthrough 7, CS50 Οικονομικών. Τώρα είμαστε επίσημα γίνεται με όλες τις psets σε CS50, και είμαστε μόλις έφυγε με μία ακόμη η οποία πρόκειται να είναι μια διασκεδαστική εφαρμογή από μια ιστοσελίδα όπου οι χρήστες μπορούν να συνδεθούν σε CS50 Οικονομικών και να αγοράζουν και να πωλούν τα αποθέματα. Σήμερα, πρόκειται να έχει μερικά εργαλεία που έχουμε στη διάθεσή μας. Εμείς πάμε για να μιλάμε για δικαιώματα. Κάθε φορά που έχετε ένα φάκελο web, θα πάμε να θέλουν να επιτρέπουν στους χρήστες να εκτελούν ορισμένα αρχεία αλλά επίσης να διαβάσετε ακριβώς άλλες, έτσι θα δούμε σε δικαιώματα και πώς μπορείτε να ρυθμίσετε αυτά. Στη συνέχεια, θα πάμε να δούμε σε PHP, HTML, SQL και κωδικό. Κατ 'αρχάς, τα δικαιώματα. Όταν είστε στο τερματικό σε ένα συγκεκριμένο κατάλογο, τότε αυτό που θέλετε να κάνετε είναι να θέλετε να εκτελέσετε την εντολή chmod. Αυτό είναι που ακολουθείται είτε από γράμματα ή αριθμούς που αντιστοιχεί σε αυτό που βασικά θέλει ο κόσμος να δει, μπορείτε να δείτε τον εαυτό σας, κλπ. Για παράδειγμα, κάθε φορά που έχετε ένα φάκελο, τότε θέλετε ο φάκελος να είναι εκτελέσιμο από τον καθένα που βλέπει, έτσι ώστε αυτό που θα κάνουμε είναι να μπορείτε να εκτελέσετε την εντολή chmod + x ένα και στη συνέχεια το όνομα του φακέλου σας. Όταν έχετε ένα αρχείο, όπως αρχεία CSS ή αρχεία εικόνας - σαν αρχεία JPEG και bitmaps, τέτοια πράγματα, ή οποιοδήποτε κώδικα JavaScript - θέλετε ότι για να είναι αναγνώσιμο από όλους, έτσι τότε τι κάνετε είναι εσείς θα μπορούσε να χρησιμοποιήσει τον μπαλαντέρ - η οποία είναι ένας αστερίσκος - βασικά να δείχνουν στο φάκελο CSS - πάντα σε αυτόν το φάκελο -  Πάω να πω ότι αυτό πρόκειται να είναι αναγνώσιμο από όλους. Με τα δικαιώματα, όταν χρησιμοποιούμε τα γράμματα, μπορούμε επίσης να χρησιμοποιήσετε αντί για αριθμούς. Έτσι, μπορείτε να δείτε ότι τελικά όταν θέλετε κάτι να είναι εκτελέσιμο - Αυτό είναι αντιπροσωπεύεται από τον αριθμό 1 - κάτι που να είναι αναγνώσιμο είναι ο αριθμός 4 και στη συνέχεια - εγγράψιμος είναι ο αριθμός 2 - και έτσι ουσιαστικά όταν θέλετε ένα συνδυασμό αυτών, τότε μπορείτε να τους προσθέσετε. Εάν θέλετε κάτι να είναι αναγνώσιμη, εγγράψιμο και εκτελέσιμο, τότε θα πρέπει να προσθέσετε έως και 4, 2 και 1 και αυτό θα σας δώσει 7, στη συνέχεια, κάθε φορά που έχετε ένα φάκελο που θέλετε να είναι εκτελέσιμο από όλους - καθώς και αναγνώσιμο και εγγράψιμο - τότε θα κάνει ότι 7, 1, 1. Αυτό θα ήταν 7 για σας, στη συνέχεια, 1 για τους άλλους ανθρώπους. Όταν έχετε το spec, αυτό θα καθορίζει στην πραγματικότητα που τους φακέλους και τα αρχεία που Πρέπει να chmod-ed συγκεκριμένα. Για παράδειγμα, όταν έχετε φακέλους - αυτά είναι 7-1-1 - όταν έχετε τις εικόνες, ή HTML, CSS, JavaScript, τότε αυτά πρόκειται να είναι 6, 0, 4 - ή 6, 4, 4 - και τότε η PHP αρχεία πρόκειται να είναι 6, 0, 0. Η ιδέα πίσω από αυτό είναι ότι οι χρήστες δεν θα πρέπει να δούμε πραγματικά PHP κωδικό σας, αλλά απλώς να είναι σε θέση να δουν την έξοδο. Μεγάλη! Προχωρώντας σε PHP. Απλά, κάθε φορά που θέλετε ένα αρχείο PHP, η κατάληξη του αρχείου είναι. Php. Μπορείτε επίσης να αναμίξετε HTML με κώδικα PHP. Εάν έχετε ένα αρχείο HTML, για παράδειγμα, τότε μπορείτε να το συμπεριλάβει στην αριστερή γωνία, ερωτηματικό, php - php βάλει τον κωδικό σας - και στη συνέχεια κλείστε ότι με ένα άλλο ερωτηματικό και δεξιά γωνία. Μεταβλητές στην PHP είναι πολύ πιο εύκολο να ασχοληθεί με από μεταβλητές σε C. Κάθε μεταβλητή αρχίζει μόλις με ένα δολάριο σημάδι μπροστά από αυτό, και από όπου και αν ασθενώς πληκτρολογήσει. Αυτό σημαίνει ότι δεν χρειάζεται να ανησυχείτε σχετικά με τη ρύθμιση κάτι ίση με ένα string ή έναν ακέραιο. Μπορείτε απλά να πω, αυτό είναι το όνομά μου από τη μεταβλητή και στη συνέχεια αυτό είναι η αξία του, γι 'αυτό πρόκειται να είναι πιο εύκολο να ασχοληθεί με αυτό. Ένα άλλο πράγμα είναι ότι η PHP σας επιτρέπει να χρησιμοποιήσετε associative arrays. Μπορείτε απλά να ορίσετε απλά μια σειρά, όπως θα κάνατε σε C λέγοντας, σύμβολο του δολαρίου-το όνομα του πίνακα σας, ισούται με, και στη συνέχεια σε αγκύλες έχουν ουσιαστικά μόνο τη λίστα των τιμών όλων των στοιχείων του πίνακα. Όμως, σε ό, τι PHP μπορείτε επίσης να κάνετε είναι να καθορίσετε βασικά η - Είναι κάτι σαν μια συνάρτηση κατακερματισμού. Μπορείτε να καθορίσετε το δείκτη - τι πρόκειται να την αποκαλούμε - και στη συνέχεια ότι αντιστοιχεί σε μια τιμή. Αν πραγματικά περάσει σε μια = 1, b = 2, c = 3, στη συνέχεια, σειρά σας σε ένα δείκτη θα σας δώσει 1. Αυτό PSET θα σας ζεστάνει με κάποια PHP σε ένα τμήμα των ερωτήσεων, και στη συνέχεια θα βουτήξει CS50 Οικονομικών. Έχουμε ένα ζευγάρι - έχουμε κάποια λειτουργικότητα, βασικά, να εφαρμόσουν σε αυτή την ιστοσελίδα. Θέλουμε να επιτρέπουν στους χρήστες να εγγραφούν στην ιστοσελίδα μας με ένα όνομα χρήστη και έναν κωδικό πρόσβασης. Θέλουμε να τους επιτρέψει να αναζητήσετε μια φράση, και τότε θα εκτυπώσει το όνομα του εν λόγω απόσπασμα, καθώς και την τρέχουσα τιμή που είναι κατά. Θέλουμε να τους επιτρέψει να δουν ένα χαρτοφυλάκιο από το σύνολο των μετοχών που έχουν αγοράσει μέχρι στιγμής. Θέλουμε, επίσης, να τους επιτρέψει να αγοράσουν μετοχές, καθώς και τα πωλούν. Και τελικά, θέλουμε να τους επιτρέψει να δουν την ιστορία όλων των συναλλαγών που έχουν κάνει. Στη συνέχεια, τέλος, αφού έχετε εφαρμόσει όλα αυτά, τότε είστε ελεύθεροι να εφαρμόσουν ένα επιπλέον χαρακτηριστικό. Θα πάμε σε αυτά. Αυτοί μπορεί να είναι είτε επιτρέποντας στους χρήστες να πάρετε επιπλέον μετρητά με την κατάθεση επιπλέον μετρητά, ή θα μπορούσατε να τους επιτρέπει να αλλάξετε τον κωδικό πρόσβασής τους, ή κάτι τέτοιο, email τους μια απόδειξη όταν αγοράζουν ή να πωλήσει ένα απόθεμα. Υπάρχει ένας περιορισμένος κατάλογος των χαρακτηριστικών που θα μπορούσε να εφαρμόσει τον εαυτό σας, έτσι ώστε να είναι η τελευταία εκεί. Δεδομένου ότι αυτό είναι μια ιστοσελίδα, εσείς έχετε επίσης μια μεγάλη ελευθερία για να το προσαρμόσετε. Κάνουμε παρέχουν κάποια κώδικα CSS, αλλά είστε σίγουρα ελεύθεροι να το τσίμπημα, να φανεί καλύτερο, αλλά υποκείμενο είναι μια βασική λειτουργία έτσι ώστε πάντοτε να ανατρέχουν στο spec για το τι πραγματικά πρέπει να περιλαμβάνουν εκεί. Μετά το spec, θα πάμε να χρησιμοποιούν τη συσκευή ως επίσης ένα διακομιστή. Είναι πρόκειται να φιλοξενεί την ιστοσελίδα μας για μας, σε τοπικό διακομιστή του. Αν ακολουθήσετε αυτές τις οδηγίες και αποσυμπιέστε το PSET 7 διανομής κώδικα σε εικονική υποδοχής / τοπικό φάκελο υποδοχής σας,  τότε μπορείτε να επισκεφθείτε μόνο http://localhost/ στο Google Chrome στη συσκευή, και στη συνέχεια θα φτάσει τον κωδικό με τον οποίο έχετε γράψει PSET 7. Pset 7 έρχεται με μια δέσμη των κώδικα της διανομής, Κάναμε και ελπίζω - μέσω όλων των psets πριν από αυτό - συνηθίσει να μας διαβάζετε μέσω κώδικα της διανομής, κατανόηση τι λειτουργίες παρέχονται ήδη, και πώς μπορεί να είμαστε σε θέση να χρησιμοποιήσει αυτές και οι άλλες λειτουργίες που θα πάμε να υλοποιούν. Σε αυτή την περίπτωση, έχουμε 3 φακέλους. Έχουμε ένα φάκελο HTML, ένας φάκελος περιλαμβάνει και ένα φάκελο προτύπων. Τι θα πάμε να κάνουμε με αυτό το PSET είναι το είδος του διαχωρισμού της σκέψης - η σκέψη προγραμματισμού - του PHP κώδικα με την πραγματική οπτική πλευρά. Θα έχουν ένα PHP αρχείο που κάνει όλες της σκέψης, διαβάζει στη βάση δεδομένων, εκτυπώνει τα πράγματα, αν έχει καταστάσεων - πράγματα - και τότε αυτό θα περάσει τα στοιχεία στο αρχείο μας πρότυπο - ή αρχείο template.php. Τι που θα κάνετε είναι να διαβάσετε τα δεδομένα και στη συνέχεια θα την εκτυπώσετε. Μπορούμε να τη θεραπεία πρότυπα ως "χαζή" υπό την έννοια ότι δεν θέλουμε πραγματικά να τους να κάνει πολλή δουλειά για τον υπολογισμό πράγματα. Θέλουμε ελεγκτές μας να το κάνουμε αυτό. Ένα μικρό κομμάτι σε αυτό - ας ρίξουμε μια ματιά σε μερικά από τον κώδικα της διανομής. Εδώ έχουμε index.html αρχείο μας, και είναι αρκετά άδειο. Ουσιαστικά αυτό που κάνει - λέει, καλά, θα πάω να απαιτούν την configuration.php αρχείο. Εμείς δεν βλέπουμε ότι εκεί, αλλά είναι βασικά καλώντας το αρχείο configuration.php, και την εκτέλεση αυτού. Αφού το κάνει αυτό, πρόκειται να καταστήσει το χαρτοφυλάκιο. Rendering είναι μια συνάρτηση, έτσι ώστε κάθε φορά που είμαστε σε έναν ελεγκτή, θα καλέσουμε render, θα δώσει το αρχείο και στη συνέχεια, τα δεδομένα που είμαστε περνώντας, έτσι ώστε να θα καλέσει σε portfolio.php--είδος του περάσματος σε αυτά τα δεδομένα έτσι ώστε το χαρτοφυλάκιο μπορεί να ασχοληθεί με αυτό. Και τώρα, εδώ, έχουμε login.php φόρμα μας.  Αυτός είναι ο ελεγκτής που παίρνει ουσιαστικά τη φροντίδα της υλοτομίας μέσα Εδώ, ελέγχει αν μια μορφή υποβλήθηκε σε αυτό το αρχείο και ασχολείται με την επικύρωση της υποβολής. Θα εξετάσουμε αυτή τη λειτουργία συγγνώμη. Όταν θέλουμε να εκτυπώσετε ένα μήνυμα σφάλματος, συγγνώμη που χρησιμοποιούμε και που θα ανακατευθύνει το χρήστη σε μια συγκεκριμένη σελίδα που θα εκτυπώσει το συγκεκριμένο μήνυμα λάθους που υποδεικνύουν. Συνεχίζοντας, θα ερωτήματα στη βάση δεδομένων - we'll μπει περισσότερο από ότι αργότερα. Στη συνέχεια, θα δείτε ότι εδώ κάτω αν μια φόρμα δεν υποβλήθηκε, τότε καθιστά μια φόρμα. Αυτό σημαίνει ότι θα πάει να login_form.php, οπότε ας ρίξουμε μια ματιά σε αυτό. Login.php είναι πραγματικά όπου βλέπουμε τον κώδικα HTML που ασχολούνται με την πραγματική οπτική πλευρά. Εδώ έχουμε μια ετικέτα εισόδου για το όνομα χρήστη, μια είσοδος για τον κωδικό πρόσβασης, καθώς και ένα κουμπί υποβολής. Αυτό είναι στην πραγματικότητα, όπου η οπτική πλευρά και η μορφή HTML πρόκειται να πραγματοποιηθεί. Εδώ, λέει ότι πρόκειται να υποβληθεί από μια ορισμένη μέθοδο, που ονομάζεται μετά. Θα μπει οι διαφορές μεταξύ των μεθόδων - δημοσιεύσετε σε σχέση με πάρει, υπάρχει κάτι που ονομάζεται επίσης θέσει - θα μπει σε αυτές τις μεθόδους αργότερα, αλλά για το συμφέρον αυτού του PSET, Θα ήθελα πολύ να σας ενθαρρύνω να χρησιμοποιήσετε θέση. Γνωρίζουμε ότι ουσιαστικά μόλις το έντυπο αυτό υποβάλλεται - από login_form.php-- τότε θα πάει στη δράση - login.php-- βασικά περάσει σε όλες αυτές τις παραμέτρους από αυτές τις μορφές σε login.php. Τα αποτελέσματα από αυτή τη μορφή που περιέχονται σε αυτό το post associative array. Οι δείκτες των διαφόρων στοιχείων του πίνακα μετα είναι ακριβώς αυτό που έχετε ορίσει εδώ. Λέτε ότι το όνομα αυτής της εισόδου είναι το όνομα χρήστη. Το όνομα αυτό το ένα κωδικό πρόσβασης. Ομοίως, μπορείτε να δείτε το όνομα χρήστη και τον δείκτη της associative array εκεί. Αν πάμε στο φάκελο περιλαμβάνει, έχουμε αυτό το αρχείο λειτουργίες που θα είναι πολύ χρήσιμο. Όλες αυτές οι λειτουργίες υλοποιούνται για εσάς. Δεν χρειάζεται να εφαρμόσουν συγκεκριμένα κάποια από αυτές τον εαυτό σας, αλλά από όπου και αν πρόκειται να είναι αρκετά χρήσιμο. Έχουμε ζητήσει συγγνώμη, η οποία όπως είπα και πριν, θα είναι ουσιαστικά εκτυπώσετε ένα μήνυμα σφάλματος για σας σε μια συγκεκριμένη σελίδα - apology.php. Στη συνέχεια, έχουμε χωματερή, οπότε αν σας καλέσει μόλις χωματερή και στη συνέχεια να περάσει στη μεταβλητή, τότε θα σας μεταφέρει σε μια σελίδα που θα εμφανίσει ότι η μεταβλητή για εσάς. Στη συνέχεια, έχουμε αποσύνδεση, η οποία θα ολοκληρωθεί ουσιαστικά μια συνεδρία ορισμένες χρήστη. Lookup πρόκειται να είναι χρήσιμα. Επειδή έχουμε να κάνουμε με εισαγωγικά και τα αποθέματα, θα πάμε να είναι σε θέση - και είναι ουσιαστικά πραγματικό χρόνο. Πρέπει να γνωρίζουμε ποιες είναι οι τιμές μετοχών, έτσι έχουμε την λειτουργία αναζήτησης η οποία ασχολείται με την τεκμηρίωση της Yahoo αποθεμάτων. Όταν κοιτάζω προς τα πάνω ένα συγκεκριμένο σύμβολο ενός αποθέματος, θα σας επιστρέψουμε το σύμβολο της μετοχής καθώς και το όνομα και την τρέχουσα τιμή του εν λόγω αποθέματος. Αυτή είναι η λειτουργία αναζήτησης. Στη συνέχεια, έχουμε να κάνουμε με mySQL, έτσι θα πάμε να θέλουν να εκτελέσει ορισμένα ερωτήματα σχετικά με SQL βάση δεδομένων μας. Έχουμε να αντιμετωπίσουμε το ερώτημα - το είδος της αφηρημένης μερικά από εκείνο το έξω. Εμείς πάμε για να περνά σε όλη την σειρά του SQL ερωτήματος μας - και όλες τις μεταβλητές που πηγαίνουν σε αυτό - και τι είναι αυτό που κάνει είναι πραγματικά εκτελέσει ότι για μας. Αντί να χρειάζεται να γράψετε όλα αυτά έξω κάθε φορά που θέλετε να ερώτημα - με να πάρει όλα τα αποτελέσματα από αυτό το ερώτημα - τότε μπορείτε να καλέσετε μόνο το ερώτημα λειτουργία, και ότι θα επιστρέψει σε σας - ανάλογα με το τι είστε με τη χρήση για το ερώτημά σας - πιθανώς μία σειρά από όλα τα αποτελέσματα που ταιριάζουν με το ερώτημα ή παρόμοιο. Περισσότερα για αυτό αργότερα όμως. Τέλος, έχουμε ανακατευθύνουν τα οποία, όπως υποδηλώνει το όνομα, σας ανακατευθύνει σε μια άλλη σελίδα. Και τότε έχουμε καθιστούν, που θα πάμε να ζητούν μια-δυο φορές. Όταν είστε σε έναν ελεγκτή, σας καλούν να καταστήσει στη σελίδα πρότυπο και στη συνέχεια να περάσει τις αξίες που το πρότυπο στη συνέχεια θα ασχοληθεί με. Οι τιμές αυτές είναι κατά πάσα πιθανότητα πρόκειται να ασχολούνται με τον τύπο της εξόδου που θέλετε για να εμφανιστεί στη σελίδα σας πρότυπο. Εντάξει. Αυτοί είναι οι λειτουργίες, και υπάρχει πολύ περισσότερο σε αυτό το κώδικα της διανομής. Σας ενθαρρύνω να περάσει μέσα από αυτό και να εξερευνήσετε μόνοι σας. Επίσης, το spec θα περπατήσουν πιθανώς μέσω κάποια άλλα στοιχεία του κώδικα της διανομής. Εδώ είναι μια σύνοψη των λειτουργιών που βρέθηκαν στο functions.php. Εντάξει. Το πρώτο καθήκον είναι να επιτρέψει στους χρήστες να εγγραφούν στην ιστοσελίδα. Αυτή τη στιγμή, υπάρχει μια σύνδεση μορφή στην ιστοσελίδα της, και σας παρέχονται με λίγους χρήστες με τους κωδικούς πρόσβασης. Μπορείτε να χρησιμοποιήσετε τα ονόματα και συνδεθείτε, αλλά θέλετε να επιτρέπουν στους ανθρώπους να κάνουν τις δικές τους ονόματα και οι ίδιοι προσθέτουν στην ιστοσελίδα. Η διάταξη για την εγγραφή είναι αρκετά παρόμοια με τη μορφή σύνδεσης, εκτός από το όνομα χρήστη δεν είναι προ-υπάρχουσες, και ο χρήστης πρέπει επίσης να παρέχει ένα νέο κωδικό πρόσβασης, και τότε συνήθως έχουμε μια επιβεβαίωση κωδικού πρόσβασης. Μόλις ο χρήστης εισάγει όλες τις πληροφορίες αυτές, θέλουμε να τα προσθέσετε στη βάση δεδομένων των χρηστών μας. Εμείς πάμε για να έχουμε μια βάση δεδομένων - μια βάση δεδομένων SQL - ότι θα πάμε για την αναφορά. Σε αυτή τη βάση δεδομένων, θα έχουμε έναν πίνακα με όλους τους χρήστες περιέχει το όνομα χρήστη, τον κωδικό πρόσβασης τους, καθώς επίσης και πόσα χρήματα που έχουν. Στο μητρώο, θέλουμε να τους επιτρέψει να καταχωρεί τις πληροφορίες αυτές. Θέλουμε να εμφανίσει αυτή τη μορφή. Θέλουμε να βεβαιωθείτε ότι ο κωδικός πρόσβασής τους - ότι μπήκαν ένα, και στη συνέχεια, επίσης, ότι οι κωδικοί πρόσβασης ταιριάζουν όταν εισέρχονται σε αυτό δύο φορές. Μετά από όλα αυτά γίνεται - αν υποτεθεί ότι ελέγχονται τα σφάλματα - τότε θέλουμε να προσθέσουμε εκείνους τους χρήστες στη βάση δεδομένων μας. Τέλος, αφού έχετε εγγραφεί, είναι αρκετά βολικό, αν δεν χρειάζεται να συνδεθείτε ξανά τη στιγμή που έχετε εγγραφεί, έτσι θα πάμε να συνδεθείτε με την ιστοσελίδα, αν έχετε εγγραφεί σε επιτυχία. Το πρώτο καθήκον είναι να εμφανιστεί η μορφή, και αυτό είναι πραγματικά πρόκειται να είναι - όλη αυτή η διαδικασία εγγραφής θα πρέπει να διαμορφωθεί αρκετά στενά μετά το login εκτός από login.php αντί να έχετε register.php. Αντί login_form.php--που είναι το πρότυπο - θα έχετε εγγραφείτε μορφή. Θα ήθελα να προσθέσω ένα ακόμα πεδίο - ένα πεδίο επιβεβαίωσης κωδικού πρόσβασης - και όχι μόνο το όνομα ενός και έναν κωδικό πρόσβασης. Στη συνέχεια, θα θελήσετε να ελέγξετε αν οι κωδικοί πρόσβασης ταιριάζουν ή είναι κενά. Έχουμε τον ελεγκτή - register.php--η οποία πρόκειται να αναλάβει τη φροντίδα του να κάνει αυτούς τους ελέγχους. Όταν μια φόρμα υποβάλλεται μέσω της μεθόδου μετά, τότε το σύνολο των μεταβλητών αυτών περιέχονται εντός της συστοιχίας μετά. Θέλετε να βεβαιωθείτε ότι η τιμή στην σειρά μετά τον κωδικό του δείκτη αντιστοιχεί στο στοιχείο επιβεβαίωσης. Θέλετε να βεβαιωθείτε ότι δεν είναι κενό, και θέλετε να βεβαιωθείτε ότι είναι το ίδιο. Ένα βολικό πράγμα για PHP είναι ότι δεν χρειάζεται να χρησιμοποιήσετε σειρά συγκρίνουν πια. Μπορούμε να χρησιμοποιήσουμε την ίση ισούται με χειριστή-  να ελέγχει αν χορδές είναι ίση με ένα άλλο. Για την αντιμετώπιση των λαθών, θα θελήσετε να ζητήσει συγγνώμη. Για να ζητήσω συγγνώμη, μπορείτε απλά να καλέσετε τη λειτουργία  και στη συνέχεια, καθορίστε έναν τύπο του μηνύματος που θέλετε να εξόδου. Στη συνέχεια, θέλετε να προσθέσετε το χρήστη στη βάση δεδομένων. Μέχρι τώρα, όλοι έχουμε κάνει είναι απλά τοπικές συναλλαγές με τα αποτελέσματα της φόρμας. Τώρα, εμείς πραγματικά θέλουμε να τα προσθέσετε στη βάση δεδομένων μας. Για το σκοπό αυτό, πρέπει πρώτα να βεβαιωθείτε ότι το όνομα δεν είναι κενή. Καταλάβετε ότι σε ένα δικτυακό τόπο, δεν μπορείτε να έχετε πολλούς χρήστες με το ίδιο όνομα χρήστη, έτσι θα θελήσετε να σιγουρευτείτε ότι όταν εισάγετε κάτι στη βάση δεδομένων σας - εισάγετε ένα νέο χρήστη - τότε δεν έχετε μια σύγκρουση ανάμεσα σε ένα προϋπάρχον όνομα χρήστη και το όνομα χρήστη που ένας χρήστης προσπαθεί να υποβάλει. Για το σκοπό αυτό, τη στιγμή που θα εκτελέσει ένα ερώτημα - εισάγοντας ένα συγκεκριμένο χρήστη με τον κωδικό τους και ένα αρχικό ποσό των μετρητών - τη στιγμή που θα την ονόμαζα ερώτημα, τότε πραγματικά θα mySQL επιστρέψει false αν αποτύχει. Η δομή του είναι τέτοια χρήστες ότι το όνομα χρήστη είναι μια μοναδική αξία, έτσι δεν μπορείτε να έχετε περισσότερες από μία. Κατά την προσπάθειά σας και να εισαγάγετε μια νέα γραμμή με το όνομα χρήστη που υπάρχει ήδη, αυτό πρόκειται να επιστρέψει false - σαν μια Boolean τιμή ψευδής. Ένα δύσκολο πράγμα εδώ είναι ότι θα θέλετε να ελέγξετε αν το αποτέλεσμα είναι το αποτέλεσμα του ερωτήματός σας. Αν αυτό αποτύχει, τότε θα θελήσετε να ελέγξετε με το triple-ισούται με χειριστή. Αυτό είναι που πραγματικά συμβαίνει για να ελέγξετε εάν υπάρχει μια αποτυχία ή όχι, λαμβάνοντας υπόψη ότι σε μια απλή ισούται-ισούται, θα ήταν αλήθεια αν η σειρά ήταν άδειο. Το αποτέλεσμα μιας αποτυχίας, αν υπάρχει μια σύγκρουση μεταξύ usernames είναι η πραγματική αξία ψευδής. Εδώ είναι το πώς μπορείτε να εισάγετε σε μια βάση δεδομένων. Εδώ είναι το ερώτημα που θα τρέξει αυστηρά σε SQL. Ένα πράγμα είναι ότι μπορείτε πραγματικά να επισκεφθείτε το δικτυακό τόπο που διαχειρίζεται βάση δεδομένων SQL σας και παίζουν εκεί εισάγοντας χειροκίνητα είτε τις τιμές ή σειρές. Θα εξάγει ό, τι η παραγωγή είναι SQL. Μπορείτε επίσης να εκτελέσετε εντολές SQL στη βάση δεδομένων σας  και στη συνέχεια να δούμε ποια είναι η σύνταξη θα μπορούσε να είναι, και στη συνέχεια να μεταφράσουμε σε λειτουργία το ερώτημα που έχουμε στην PSET 7, η οποία πρόκειται να είναι πολύ παρόμοια με τα ερωτήματα που λειτουργεί πραγματικά. Αν ήθελα να εισαγάγετε μια νέα γραμμή σε χρήστες τραπέζι μου, τότε θα ήθελα να καθορίσετε ένθετο σε χρήστες, που είναι το όνομα του πίνακα μου. Στη συνέχεια, θα ήθελα να καθορίσετε τα ονόματα των στηλών. Στη συνέχεια, θα ήθελα να παρέχουν τις τιμές μαζί με τον κωδικό μου. Οι κωδικοί πρόσβασης των χρηστών στο τραπέζι μας δεν είναι απλώς αποθηκεύονται ως string. Οι εντολές αυτές αποθηκεύονται ως η κρυπτογραφημένη έκδοση, έτσι θα θελήσετε να εκτελέσετε την λειτουργία κρύπτη σχετικά με την πραγματική κωδικό πρόσβασης, και ότι θα σας δώσει το σωστό τύπο για την αποθήκευση του πίνακα των χρηστών. Τρέχοντας αυτό θα εισάγει μια νέα γραμμή σε χρήστες τραπέζι σας. Για την αντιμετώπιση του ερωτήματος λειτουργία, πριν από το Γ χρησιμοποιήσαμε το σύμβολο του ποσοστού ως ένα σύμβολο κράτησης θέσης. Ομοίως, η ίδια η έννοια της ένα σύμβολο κράτησης θέσης ισχύει και εδώ. Με το ερώτημα, μπορείτε να καθορίσετε το σύνολο ερώτημα, εκτός όταν έχουμε να κάνουμε με τις μεταβλητές ως είσοδο σας στο ερώτημα, στη συνέχεια, αντί να κάνει τους βάζοντας μέσα - όπως όταν είχαμε printf δηλώσεις Γ. Θα βάλει το string και στη συνέχεια να έχουν ένα σύμβολο κράτησης θέσης εκεί, και στη συνέχεια, μετά από κάθε κόμμα, ποια μεταβλητή που είχαμε. Εδώ, θα πάμε να χρησιμοποιούν το σήμα ερωτηματικό ως σύμβολο κράτησης θέσης μας και στη συνέχεια να περάσει σε κάθε μεταβλητή, αντίστοιχα, προκειμένου, για τα σύμβολα κράτησης θέσης - όπου οι μεταβλητές πρέπει να πάνε. Μέχρι εδώ, το πρώτο ερωτηματικό θα πρέπει να αντικατασταθεί από την πραγματική όνομα χρήστη τότε το δεύτερο ερωτηματικό με τον κωδικό πρόσβασης. Στη συνέχεια, τέλος, αφού έχετε τα καταχωρηθούν και να προστεθούν τους στη βάση δεδομένων, τότε θέλετε να συνδεθείτε στο δικτυακό τόπο. Έχουμε είδος υπερ-μεταβλητή που ονομάζεται παγκόσμια σύνοδο. Συνεδρία παίρνει ένα συγκεκριμένο id, και ότι η id αντιστοιχεί στον χρήστη που είναι συνδεδεμένος in Τι θα θέλετε να κάνετε είναι να βρείτε τι αναγνωριστικό χρήστη τους είναι και που στη συνέχεια ότι id συνεδρίας ως αναγνωριστικό που συγκεκριμένου χρήστη. Μια λειτουργία που θα θέλετε να χρησιμοποιήσετε εδώ είναι μια εντολή SQL που θα ανακτήσει την τελευταία εισαχθεί αριθμός id από το τραπέζι σας. Στη συνέχεια θα καλέσει σειρές - it'll καλέστε το id - it'll εκχωρήσετε ένα όνομα στον αριθμό που επιστρέφει. Θα καλέσετε αυτό το id. Τώρα έχουμε τελειώσει μητρώο, και μπορούμε να προχωρήσουμε για να παραθέσω. Παράθεση επιτρέπει σε ένα χρήστη να εισάγει το όνομα ενός συγκεκριμένου αποθέματος, και στη συνέχεια θα επιστρέψει τις ιδιότητες του εν λόγω αποθέματος. Τι θα θέλετε να κάνουμε εδώ είναι να έχουμε έναν ελεγκτή και κάποια πρότυπα. Σε αυτή την περίπτωση, θα πάμε να έχουν ένα χειριστήριο το οποίο πρόκειται να κάνει όλες τις σκέψης για εμάς. Είναι πρόκειται να δούμε το σύμβολο και στη συνέχεια να περάσει σε αξίες με τα πρότυπα που θα εκτυπώσετε. Εμείς πάμε για να έχουν 2 πρότυπα εδώ. Εμείς πάμε για να έχουν 1 πρότυπο που παρέχει τη μορφή με την οποία οι χρήστες θα εισάγετε το όνομα του αποθέματος - το όνομα της μετοχής. Τότε είμαστε, επίσης, πρόκειται να θέλουν ένα άλλο πρότυπο που εμφανίζει αυτές τις αξίες. Μπορείτε να δείτε σε login για ένα παράδειγμα για το πώς θα έχετε μια φόρμα που δέχεται είσοδο, εκτός από εδώ, θέλουμε μόνο 1 τομέα. Δεν θέλουμε ένα όνομα χρήστη και έναν κωδικό πρόσβασης τομέα. Θέλουμε μόνο 1 πεδίο κειμένου που επιτρέπει στο χρήστη να εισάγει το όνομα ενός συγκεκριμένου αποθέματος. Στη συνέχεια, μπορείτε να στείλετε τα δεδομένα - από τη στιγμή που έχουν ανευρεθεί του εν λόγω αποθέματος - να quote_form.php. Αναζήτηση θα επιστρέψει το σύμβολο μιας μετοχής, το όνομα και μια τιμή. Εκείνοι που περιέχονται μέσα σε ένα associative array. Κοιτάξτε τη λειτουργία αναζήτησης μέσα στο functions.php για περισσότερες πληροφορίες σχετικά με τους τύπους επιστροφή εκείνων. Μεγάλη! Έτσι, τελικά, θα θέλετε να εμφανίσετε την πληροφορία διαθεσιμότητας προϊόντος. Θα θελήσετε πιθανώς να εμφανιστεί - εσείς θα θέλετε να έχουν πρόσβαση σε αυτές τις μεταβλητές. Μόλις έχετε την τιμή σε μια μεταβλητή - καθώς και το όνομα και το σύμβολο - τότε θα θέλετε να εμφανίσετε αυτές σελίδα πρότυπό σας. Ότι η σελίδα πρότυπο θα μπορούσε να ονομαστεί show_quote.php ή κάτι τέτοιο. Quote.php σελίδα σας θα καθιστούσε απόσπασμα παράσταση και στη συνέχεια να περάσει σε όλες αυτές τις αξίες. Στη συνέχεια, σε php σελίδα σας, μπορείτε πραγματικά να εκτυπώσετε αυτές τις τιμές στο HTML πλευρά της σελίδας. Μπορείτε να χρησιμοποιήσετε μόνο τη λειτουργία εκτύπωσης και να περάσει στην τιμή. Υπάρχουν 2 τρόποι - μπορείτε να συνδέσετε το είτε με τον φορέα εκμετάλλευσης dot, ή να χρησιμοποιήσετε ένα σύμβολο κράτησης θέσης. Οι χρήστες τελικά πρόκειται να αγοράζουν και να πωλούν τα αποθέματα. Θέλουμε να τους επιτρέψει κάποιο τρόπο να δει όλα τα αποθέματα που έχουν σήμερα. Εμείς πάμε για να καλέσετε ότι το χαρτοφυλάκιό τους. Χαρτοφυλακίου θα ήταν, κατά πάσα πιθανότητα για κάθε χρήστη, περιέχει μια δέσμη των σειρών Προσθήκη τον τύπο του μεριδίου που έχουν και στη συνέχεια, πόσοι από αυτούς που έχουν. Υπάρχοντα πίνακα μας - αυτή τη στιγμή έχουμε έναν πίνακα στη βάση δεδομένων των χρηστών μας. Που περιέχει όνομα ενός χρήστη καθώς και τον κωδικό τους και πόσα μετρητά έχουν. Δεν υπάρχει κανένας πραγματικός τρόπος για την αποθήκευση όλων των αποθεμάτων τους σε αυτό. Δεν είναι όπως μπορούμε να εισάγουμε νέες στήλες για κάθε απόθεμα. Αυτό θα ήταν μια πολύ, πολύ μεγάλη σειρά, γιατί έχουμε μια άπειρη ποσότητα των τύπων των αποθεμάτων που θα μπορούσαν να έχουν. Έτσι, αντί για το τι θα κάνουμε είναι μέσα στην ίδια βάση δεδομένων, θα έχουμε έναν πίνακα χρηστών, αλλά στη συνέχεια θα έχουμε επίσης έναν πίνακα του χαρτοφυλακίου. Ο πίνακας του χαρτοφυλακίου θα είναι σίγουρα συνδέεται με τον πίνακα των χρηστών, αλλά, αντίθετα, η δομή του πίνακα του χαρτοφυλακίου θα έχει την πληροφορία διαθεσιμότητας προϊόντος, πόσες μετοχές του εν λόγω αποθέματος, ο χρήστης έχει, καθώς και συγκεκριμένο αριθμό ενός χρήστη id. Έχετε τον πίνακα των χρηστών που έχει μια ταυτότητα, καθώς και το όνομα, το hash - που είναι ο κωδικός πρόσβασης, το κρυπτογραφημένο κωδικό πρόσβασης - και στη συνέχεια το ποσό των μετρητών που έχουν. Ο αριθμός id θα πρέπει να συνδέεται με τον αριθμό id από το χαρτοφυλάκιο. Το χαρτοφυλάκιο θα έχει ακριβώς το σύμβολο του αποθέματος, καθώς και τις μετοχές - ο αριθμός των μετοχών του εν λόγω αποθέματος που διαθέτει ο χρήστης. Στον εν λόγω πίνακα χαρτοφυλάκιο θα έχει βασικά όλες οι μετοχές που κατέχονται από όλους τους χρήστες στον ιστότοπό σας. Αργότερα, για να καθορίσετε μόνο ορισμένες μετοχές ενός χρήστη - μόνο το χαρτοφυλάκιό τους - θα ανακτήσετε τις τιμές από τον πίνακα του χαρτοφυλακίου σας, έτσι ώστε ο αριθμός id είναι ειδικά για αυτόν το χρήστη. Όταν εμφανιστεί το χαρτοφυλάκιο, θα θέλετε να καταγγείλετε το καθένα από τα αποθέματα στο χαρτοφυλάκιο ενός χρήστη. Θα ήθελα να αναφέρουν τον αριθμό των μετοχών και την τρέχουσα αξία των μετοχών αυτών. Ότι η σημερινή αξία των μετοχών αυτών δεν αποθηκεύεται στον πίνακα του χαρτοφυλακίου γιατί αυτό πρόκειται να είναι ενημέρωση - στο ελάχιστο - κάθε μέρα από το Yahoo. Για να πάρετε αυτές τις πληροφορίες, μπορείτε να αναφοράς το οποίο από το SQL ερώτημά σας. Ποια λειτουργία προβλέπει ότι για μας; Ποια λειτουργία θα πάρει την τιμή; Αυτό είναι αναζήτησης, έτσι ώστε χρησιμοποιώντας αναζήτηση σε ένα συγκεκριμένο σύμβολο θα σας δώσει πολλές πληροφορίες. Θα σας δώσω 3 κομμάτια των πληροφοριών - το όνομα, το σύμβολο, καθώς και την τιμή. Μόλις αναζήτηση ένα συγκεκριμένο σύμβολο, τότε μπορείτε να πάρετε την τιμή, και στη συνέχεια μπορείτε να χρησιμοποιήσετε την τιμή να εμφανίζεται στο χαρτοφυλάκιό σας. Το χαρτοφυλάκιο θα πρέπει να εμφανίσει επίσης το τρέχον υπόλοιπο σε μετρητά του χρήστη. Το πεδίο αυτό αποθηκεύεται στο τραπέζι των χρηστών σας. Έτσι, στη συνέχεια, να θυμόμαστε πως είμαστε ουσιαστικά να χρειάζεται να - είμαστε με διαφορετικούς τύπους αρχείων PHP. Εμείς πάμε για να έχουμε έναν ελεγκτή ο οποίος ουσιαστικά κάνει όλη τη σκέψη για σας. Και τότε έχουμε ένα πρότυπο στο οποίο το πρότυπο ασχολείται με την έξοδο των δεδομένων. Θα πρέπει να σκεφτούμε για το τι μεταβλητές ο ελεγκτής θα πρέπει να λάβει in Αν έχουμε να κάνουμε με ένα χαρτοφυλάκιο που εξάγει κάθε όνομα, το σύμβολο και ο αριθμός μετοχών, καθώς και την τρέχουσα τιμή μιας μετοχής, τότε θα θέλετε να βρείτε κάποιο τρόπο ουσιαστικά περνώντας - μπορείτε να περάσετε σε μια σειρά από αξίες που ταιριάζουν με αυτό. Ας πάμε σε ένα παράδειγμα για το πώς μπορείτε να ανακτήσετε όλα τα αποθέματα ανήκει σε συγκεκριμένο χρήστη. Αυτό δεν ασχολείται - ακόμη - με την τιμή της μετοχής. Αυτό θα κάνετε είναι να εκτελέσετε ένα ερώτημα. Θα λάβουν το σύμβολο, καθώς και από τις μετοχές - Παίρνω αυτό το τραπέζι, αλλά σε αυτή την περίπτωση, τι θα ήταν αυτό; Ποιο είναι το όνομα του πίνακα που έχουμε να κάνουμε με αυτό το σύμβολο έχει και μετοχές για ένα συγκεκριμένο χρήστη; Είναι είτε χρήστες ή χαρτοφυλακίου. Χαρτοφυλακίου. Τι θα κάνουμε αυτό είναι το ερώτημα χαρτοφυλάκιο για τα σύμβολα και μετοχές για ένα συγκεκριμένο χρήστη. Εδώ, θα ήθελα να πω, (SELECT σύμβολο, μετοχές ΑΠΟ TBL - αλλά αντί του πίνακα, πρόκειται να αντικαταστήσει ότι με χαρτοφυλάκιο. «Πού είναι βασικά κατάστασή μου. Εγώ λέω ότι το μόνο που θέλουν να πάρουν τις συνεταιριστικές πίνακες που αντιστοιχούν  σε αυτό το ακόλουθο όρο - id ίσων.  Στη συνέχεια βάζω ένα σύμβολο κράτησης θέσης εκεί και έπειτα id συνεδρίας. Αυτό θα κάνουμε είναι να πούμε για κάθε σειρά σε σειρές. Αυτό είναι ένα κομψό τρόπο, αντί πραγματικά να πρέπει να δημιουργήσει ένα για βρόχο που επαναλαμβάνεται σε όλα τα ευρετήρια, τότε σε PHP μπορείτε να έχετε ένα για κάθε loop-. Αν έχετε μια συγκεκριμένη σειρά, τότε μπορείτε να πείτε Πάω να καλέσω κάθε διαδοχικό στοιχείο - Πάω να καλέσω κάθε στοιχείο αυτό το όνομα. Έτσι, για κάθε ένα από αυτά τα στοιχεία, θα πάω να τους αποκαλούν αυτό, τότε μπορώ να το κάνω αυτό. Σε αυτό για το καθένα, έχετε σειρές ως πραγματική σειρά σας, και κάθε σειρά θα πάμε να καλέσετε σειρά. Κάθε φορά που εκτελεί το σώμα, θα ανεβαίνουν και θα ενημερώσει σειρά στο επόμενο στοιχείο σε σειρές. Τώρα, όσον αφορά την αγορά των αποθεμάτων, αυτό που θέλουμε να κάνουμε είναι να πάρει το απόθεμα που ο χρήστης θέλει να αγοράσει και το ποσό των μετοχών που ο χρήστης θέλει να αγοράσει, και στη συνέχεια - αν θέλουν - προσθέστε το απόθεμα στο χαρτοφυλάκιό τους. Προφανώς, αν πρόκειται να αγοράσετε κάτι, τότε αυτό πρόκειται να μειωθεί το ποσό των χρημάτων που έχουν, έτσι ώστε πρόκειται να μειώσει τα μετρητά τους. Εμείς πάμε για να ασχολούνται με την ενημέρωση του χαρτοφυλακίου, καθώς και τον πίνακα των χρηστών, το οποίο περιέχει τα μετρητά. Αλλά πρώτα, θα πρέπει να πάρετε το πραγματικό απόθεμα και το ποσό των μετοχών που θέλει ο χρήστης. Γι 'αυτό, θα χρειαστείτε μια φόρμα HTML που θα ζητήσει για το σύμβολο του αποθέματος που θέλετε να αγοράσετε, καθώς και τον αριθμό των μετοχών. Στη συνέχεια, θα θελήσετε να προσθέσετε. Θα θελήσετε να επιλέξετε ορισμένες αξίες. Έχουμε περάσει αυτό το λίγο ήδη, αλλά όταν προσπαθείτε να λάβετε ορισμένες σειρές - ανακτήσετε ορισμένες γραμμές από τον πίνακα SQL, αυτή είναι η ακόλουθη σύνταξη. Έχετε να επιλέξετε, και στη συνέχεια, αν έχετε ορίσει ένα αστέρι, που θα επιστρέψει το σύνολο ουσιαστικά, για ολόκληρη τη σειρά σας. Κατόπιν πάλι, έχετε την κατάσταση κατά την οποία, στη συνέχεια, να καθορίσετε - Θέλω μόνο το όνομα χρήστη να είναι ίσο με το ταχυδρομείο-στην, έτσι θα ανακτήσει μόνο τη γραμμή σε χρήστες που αντιστοιχεί στο mail-in. Όταν ένας χρήστης θέλει να προσθέσει ένα μερίδιο σε ένα χαρτοφυλάκιο, θα πρέπει να ελέγξετε για λίγα λάθη. Θέλετε να βεβαιωθείτε ότι ο χρήστης μπορεί να αντέξει οικονομικά πραγματικά το απόθεμα, έτσι θα θελήσετε να ελέγξετε τα μετρητά τους. Πριν, χρησιμοποιήσαμε αστέρι για να ανακτήσει μια ολόκληρη σειρά από έναν πίνακα του SQL. Αλλά εδώ, μπορούμε πραγματικά να καθορίσετε ακριβώς ότι θέλω μόνο 1 τιμή - Θέλω μόνο μετρητά. Μέχρι εδώ, θα επιστρέψει τα χρήματα για το χρήστη με αριθμό id 1. Αν ένας χρήστης έχει ήδη αγοράσει ένα ορισμένο απόθεμα, αλλά στη συνέχεια, αγοράζει περισσότερο από το εν λόγω απόθεμα, τότε στο χαρτοφυλάκιό σας - δεν θέλετε μια ξεχωριστή γραμμή, μια άλλη γραμμή που περιέχει αυτό το νέο συναλλαγή. Μπορείτε πραγματικά θέλετε να ενημερώσετε το ποσό. Το μόνο που αλλάζει είναι πραγματικά το ποσό των μετοχών που κατέχει ο χρήστης. Εάν χρησιμοποιείτε το ένθετο σε ερώτημα - έτσι απλά εισάγετε στο χαρτοφυλάκιό σας όλες αυτές τις τιμές - αριθμός id του χρήστη, καθώς και το σύμβολο της μετοχής που αγοράζετε και οι μετοχές, τότε θα ήθελα επίσης να καθορίσετε, καλά, αν έχω τρέξει σε ένα διπλό κλειδί - σε αυτή την περίπτωση, το αντίγραφο κλειδί δεν είναι μόνο id του χρήστη, αλλά και το σύμβολο της μετοχής - επειδή μπορείτε να έχετε μόνο - παραδοχή μας είναι ότι μπορείτε να έχετε μόνο 1 σειρά  που αντιστοιχεί σε 1 συγκεκριμένο σύμβολο. Έτσι, για το διπλό κλειδί - αν πέσετε σε σύγκρουση εκεί - είστε ακριβώς πρόκειται να ενημερώσετε μετοχές σε νέα τιμή του. Μετοχές ισούται με ό, τι είχαμε πριν συν τον αριθμό των μετοχών που ο χρήστης αγοράζει. Τώρα που έχουμε ενημερώσει τον πίνακα του χαρτοφυλακίου, θα θέλετε να ενημερώσετε μετρητά του χρήστη. Αυτό είναι στον πίνακα των χρηστών, έτσι θα πάμε να αφαιρεθεί ένα ορισμένο ποσό από τα διαθέσιμα. Προφανώς, πρόκειται να είναι μετρητά ισούται με μείον ταμειακά διαθέσιμα - και στη συνέχεια, ένα ορισμένο ποσό. Για να ενημερώσετε τα μετρητά, θα κάνατε - αν ήθελα να πάρει χρήματα από το ταχυδρομείο-στην, τότε θα ήθελα να εκτελέσετε αυτό το ερώτημα - «Ενημέρωση των χρηστών και στη συνέχεια ρυθμίστε την στήλη μετρητά σε μετρητά - Θα αφαιρέσει 9.999 δολάρια μόνο αν το όνομα είναι ίσο με το ταχυδρομείο-in. Όμως, στην περίπτωση αυτή, δεν θέλουμε να αφαιρέσουμε 9.999 ειδικά. Θέλουμε να ορίσετε, επίσης, θέλουμε να αφαιρέσουμε την τρέχουσα τιμή της μετοχής πολλαπλασιάζεται με τον αριθμό των μετοχών που αγοράζετε. Τώρα έχουμε τους επέτρεψε να δουν όλα τα αποθέματα που έχουν, καθώς αγοράσετε περισσότερα αποθέματα. Έχουμε, επίσης, στο παρελθόν τους επέτρεψε να δούμε την τρέχουσα τιμή μιας μετοχής. Εδώ θέλουμε να μπορέσουν να τα πουλήσουν. Πρώτα θέλουμε να εμφανίσετε βασικά - θέλουμε να τους επιτρέψει να δουν όλα τα αποθέματα που έχουν, έτσι και εδώ θέλουμε να εμφανίσετε όλες τις γραμμές από το χαρτοφυλάκιο. Εάν επιλέξουν να πωλήσει ένα ορισμένο απόθεμα, τότε θα πάμε να υποθέσουμε ότι θέλουν να πουλήσουν όλα. Δεν πρόκειται ακριβώς για την πώληση του 50% των μετοχών τους, από όπου και αν πρόκειται να πουλήσει το 100% από αυτό. Μπορούμε να διαγράψετε μόνο ολόκληρη τη σειρά από το χαρτοφυλάκιο. Μπορούμε να διαγράψει τις μετοχές της δεδομένης χρήστη του ορισμένα σύμβολο. Υπάρχει η σύνταξη γι 'αυτό. Στη συνέχεια, θέλουμε να ενημερώσετε τα μετρητά. Εμείς πάμε για να προστεθεί στο μετρητά ίση με το ποσό των μετοχών που πωλούν πολλαπλασιάζεται με την τρέχουσα τιμή της μετοχής - δεν είναι η τιμή στην οποία το αγόρασε, αλλά η τιμή στην οποία βρίσκονται - η τρέχουσα τιμή, όταν είναι αυτό που πωλούν. Για την αναφορά την τρέχουσα τιμή μιας μετοχής, θα θελήσετε να χρησιμοποιήσετε αναζήτησης, η οποία θα σας δώσει την τιμή μιας μετοχής κατά την τρέχουσα χρονική στιγμή. Τώρα έχουμε μείνει με την ιστορία, που θέλετε να επιτρέψετε σε ένα χρήστη να παρακολουθεί όλες τις συναλλαγές τους - θέλει να δει κάθε φορά που πωλείται κάτι, κάθε φορά που αγόρασε ένα απόθεμα. Θέλουμε να καθορίσετε το χρόνο κατά τον οποίο το έκαναν αυτό, καθώς και πόσοι έχουν αγοράσει και ό, τι υλικό ήταν. Μήπως έχουμε κανένα ρεύμα, υπάρχουσα δομή που ορίζει ότι; Λοιπόν, έχουμε χαρτοφυλάκιο, το οποίο εμφανίζει τα αποθέματα αριθμό που ο χρήστης έχει για ένα δεδομένο ποσοστό. Αλλά είμαστε διάρθρωση του χαρτοφυλακίου με τον τρόπο που θα ενημερώνει όταν αγοράζουμε πολλά, λαμβάνοντας υπόψη ότι η ιστορία θα πρέπει - αν έχετε αγοράσει την Apple, 10 μετοχές του, και στη συνέχεια πωλούν σε 5, τότε θα θέλετε να δείτε τα χωριστά ως ξεχωριστές δράσεις, ξεχωριστές γραμμές. Ότι η εν λόγω ενέργεια για να απεικονίσει ότι, στον πίνακα του χαρτοφυλακίου μας θα ήταν απλά μια ενημέρωση για τη συγκεκριμένη γραμμή,  γι 'αυτό πρόκειται πιθανώς να θέλετε έναν άλλο πίνακα. Στη βάση δεδομένων μας, έχουμε τον πίνακα των χρηστών μας, έχουμε τον πίνακα του χαρτοφυλακίου μας, και τώρα θα θελήσετε πιθανώς ένα τραπέζι ιστορία. Ο πίνακας ιστορία μπορείτε να παρακολουθείτε την τρέχουσα ημερομηνία, καθώς και το συγκεκριμένο σύμβολο αποθεμάτων, καθώς και τον αριθμό των μετοχών, και στη συνέχεια, σε ποιες ενέργειες είναι - αν αγόραζαν αυτές τις μετοχές ή αν ήταν να τα πωλήσει. Για την αντιμετώπιση ημερομηνία, υπάρχουν δύο τρόποι που μπορείτε να το κάνετε αυτό. PHP έχει έναν τρόπο να παρακολουθείτε την ημερομηνία, την οποία μπορείτε να δείτε τον εαυτό σας. Στην SQL μπορείτε επίσης να χρησιμοποιήσετε είτε τώρα είτε τρέχον timestamp. Αυτό είναι στο χέρι σας. Απλά βεβαιωθείτε ότι κάθε φορά που ένας χρήστης αγοράζει ή πωλεί, θα σας ενημέρωση μετρητά τους στον πίνακα των χρηστών, θα πρέπει να την αναπροσαρμογή των γραμμών στον πίνακα χαρτοφυλάκια, τότε θα πρέπει επίσης να ενημέρωση την ιστορία, έτσι είναι θα υπάρξουν 3 ξεχωριστές SQL ερωτήματα που θα πρέπει να ζητούν εκεί. Έχουμε ένα σωρό λειτουργίες τώρα. Μόλις μερικές υπενθυμίσεις που στο αρχείο ευρετηρίου σας, θα θελήσετε να συνδέσετε τουλάχιστον σας - αλλά θα θελήσετε να επιτρέψετε σε ένα χρήστη να συνδεθεί με το buy.php σελίδα. Αυτό πρόκειται να επιτρέψει σε έναν χρήστη - buy.php είναι ο υπεύθυνος της επεξεργασίας, έτσι ώστε να πρόκειται είτε να σας στείλουμε - αυτό πρόκειται να σας στείλει σε μορφή που σας επιτρέπει να δούμε τα πράγματα. Έχουμε ιστορία. Έχουμε αποσυνδεθείτε, να πάρει ένα απόσπασμα και στη συνέχεια πωλούν. Αυτά είναι στο ελάχιστο ό, τι θέλετε να δείτε. Όσον αφορά το χαρτοφυλάκιο, το πραγματικά φαίνεται στην σελίδα ευρετηρίου. Αν πάμε στο ευρετήριο, εδώ βλέπουμε ότι καθιστά portfolio.php και περνά στην associative array - βασικά ο τίτλος ισούται με χαρτοφυλάκιο. Έτσι, αυτό είναι ο ελεγκτής. Αν πάμε στο πρότυπο του portfolio.php, τότε το μόνο που έχει είναι - ουσιαστικά εμφανίζει μια εικόνα που λέει, OH, αυτό το site είναι υπό κατασκευή. Αργότερα, όταν περνάτε σε - εσείς θα πρέπει να περνούν σε βασικά πιο συγκεκριμένες πληροφορίες. Αντί ακριβώς τον τίτλο, θα πρέπει πιθανώς να περνάει σε περισσότερα πράγματα. Μόλις έχετε αυτές τις αξίες, τότε portfolio.php μπορεί να ασχοληθεί με αυτές τις αξίες και την εκτύπωσή τους σε οποιοδήποτε είδος της παραγγελίας. Μόλις εφαρμοστούν όλα αυτά, θα πρέπει επίσης να εφαρμόσει 1 επιπλέον χαρακτηριστικό. Αυτό μπορεί είτε να επιτρέπει στον χρήστη να αλλάξει τον κωδικό πρόσβασής τους, για να επαναφέρετε τον κωδικό πρόσβασής τους, αν έχουν ξεχάσει - έτσι για την επαναφορά του κωδικού πρόσβασης, τότε θα πρέπει πιθανώς να θέλετε να επεξεργαστείτε μητρώο, έτσι ώστε να τους επιτρέπει να ορίσετε ένα μήνυμα ηλεκτρονικού ταχυδρομείου, οπότε αν ξεχάσετε τον κωδικό πρόσβασής τους, τότε μπορούν να πάρουν αυτό. Μπορούν πιθανώς εισάγετε το username τους, και στη συνέχεια ένα μήνυμα ηλεκτρονικού ταχυδρομείου θα αποσταλεί σε αυτούς με έναν σύνδεσμο για να είναι σε θέση να επαναφέρετε τον κωδικό πρόσβασής τους. Μπορείτε να έχετε κάτι που επιτρέπει στους χρήστες για να πάρει τα έσοδα κάθε φορά που αγοράζουν ή πωλούν κάτι, και στη συνέχεια, τελικά, τους επιτρέπει να προσθέσετε μετρητά στην ιστοσελίδα τους. Ακριβώς για να επιστρέψουμε στην έννοια των ελεγκτών και τα πρότυπα λίγο. Θα έχετε κάτι σαν ένα - έτσι θα έχετε έναν ελεγκτή εδώ. Αυτή τη στιγμή, ψάχνουμε στο login.php παράδειγμα. Όταν έχουμε έναν ελεγκτή, κατά βάση πρόκειται να λάβει 2 περιπτώσεις. Όταν έχουμε ελεγκτές, είμαστε σε αυτό το κομμάτι ότι είμαστε, επίσης, το είδος της αντιμετώπισης όταν έχουμε φόρμες, καθώς και. Ο ελεγκτής θα έχει βασικά επιμέρους δράσεις - ένα, αν μια φόρμα έχει ήδη υποβληθεί, και στη συνέχεια, δύο, αν ο χρήστης έρχεται σε αυτή τη σελίδα για πρώτη φορά και χρειάζεται ακόμη στην είσοδο που σχηματίζονται. Πάω να μεταβείτε σε αυτή την περίπτωση για πρώτη φορά πριν ανεβαίνοντας στην πρώτη περίπτωση έχει τη μορφή μέσα Εδώ λέμε, αν η φόρμα έχει υποβληθεί με τη θέση μέθοδο - μην ανησυχείτε γι 'αυτό το κομμάτι. Μην ανησυχείτε γι 'αυτό πάρα πολύ, αλλά καταλαβαίνω ότι ουσιαστικά η λειτουργία αυτή ασχολείται με αν μια φόρμα έχει υποβληθεί ή όχι. Αυτή η συνθήκη είναι αληθής, αν ένας χρήστης έχει υποβάλει τη φόρμα. Αν όχι, τότε θα πάμε να θέλετε να καλέσετε login_form.php καθιστούν, και στη συνέχεια να περάσει στον τίτλο. Αυτός ο τίτλος είναι απλά βασικά θα εμφανίζονται στην κεφαλίδα. Αυτό που κάνει είναι βασικά λέει, εντάξει - αλλά, αν ένας χρήστης πηγαίνει στο login.php και δεν έχει πράγματι συνδεθεί, τότε θέλω να τους στείλει στη σελίδα που έχει αυτή τη μορφή η οποία τους επιτρέπει να εισάγετε το όνομα χρήστη και τον κωδικό πρόσβασης. Στη συνέχεια, πάω να login_form, και στη συνέχεια, που έχει τη σημερινή μορφή. Στη συνέχεια, μόλις ο χρήστης ισχυρίζεται ότι η μορφή, από όπου και αν πρόκειται να το υποβάλλει στην login.php με τη μέθοδο POST. Στη συνέχεια, είμαι πραγματικά πρόκειται να τεθεί αυτό το τμήμα της αν-άλλος βρόχος μου. Στη συνέχεια, είναι εδώ που ασχολούμαστε με τις τιμές που έχουν εισαχθεί στη φόρμα. Είναι εδώ ότι έχουμε να κάνουμε με αυτά. Στη συνέχεια, τη στιγμή που θα ασχοληθεί με αυτές τις αξίες - αν έχουμε να κάνουμε με - να πούμε ότι έχουμε να κάνουμε με τη σελίδα quote.php όπου κάποιος μπορεί να εισάγει ένα απόθεμα που που θέλετε να αναζητήσετε, και στη συνέχεια να δούμε ότι η οθόνη - αυτό είναι το είδος παρόμοιο εδώ. Εδώ έχουμε μια φόρμα σύνδεσης - you'd έχουν πιθανώς μια μορφή απόσπασμα - αλλά στη συνέχεια, μόλις ο χρήστης έχει υποβάλει στην πραγματικότητα οι πληροφορίες, τότε θα θέλετε ο ελεγκτής να περάσει σε ένα άλλο πρότυπο που θα τους δείξουμε ότι η πραγματική ενημέρωση. Μέχρι τότε ακριβώς γύρω από εδώ, τότε θα χρειαστεί κατά πάσα πιθανότητα - γύρω από το τέλος της κατάστασής σας εδώ - το αν η μέθοδος είναι ίση μετα - τότε θα θελήσετε πιθανώς να καταστήσει μια άλλη σελίδα - το απόσπασμα show - που σας στέλνει σε αυτή τη σελίδα - show_quote.php-- και στη συνέχεια σε αυτό το αρχείο θα αναφέρει τις αξίες αυτές. Μήπως αυτό έχει νόημα; Έχουμε έναν ελεγκτή που βασικά ασχολείται με τις 2 περιπτώσεις - αν έχετε εισέλθει σε μια μορφή ή όχι. Εάν δεν έχετε εισέλθει σε μια φόρμα, τότε θα σας ανακατευθύνει σε αυτή τη μορφή, η οποία θα σας βάλει στη συνέχεια πίσω σε αυτή τη σελίδα. Στη συνέχεια, αφού έχετε πληροφορίες στον ελεγκτή, ότι το σώμα θα ασχοληθεί με αυτό πληροφορίες ανάλογα με τις ανάγκες - είτε αναζητώντας τιμές για το απόθεμα, και στη συνέχεια μία φορά ότι είναι κοίταξε αυτές τις αξίες και τους έχει σε μια όμορφα διαμορφωμένη σειρά, τότε μπορεί να περάσει ότι η σειρά στη σελίδα του προτύπου  που ασχολείται με την έξοδο αυτών των πληροφοριών. Και πάλι, αφού διαδίκτυο είναι, αυτό πρόκειται να είναι διασκέδαση. Είμαστε έξω από το C έτσι δεν είμαστε περιορίζεται στο ASCII και την έξοδο του τερματικού σταθμού, έτσι ώστε να έχουν τη διασκέδαση με αυτό. Μπορείτε να το κάνετε ως οπτικό όπως εσείς θέλετε. Μπορείτε να επιτρέψετε στους χρήστες να εκατομμύρια δολάρια εισόδου σε έναν χρόνο, ή να τους περιορίσει και να σημαίνει πραγματικά και θα τους επιτρέψουν να εισέλθουν μόνο 1 λεπτό σε μια στιγμή ή κάτι τέτοιο. Σίγουρα είναι σίγουρος να έχει τη διασκέδαση με αυτό. PHP κώδικα είναι λίγο πιο απλό στο ότι είναι λίγο πιο εύκολο να χαράξει ψευδοκώδικα σας για την πραγματική εφαρμογή. Έτσι, σίγουρα έχει τη διασκέδαση με αυτό, γιατί στην πραγματικότητα είναι το τελευταίο κομμάτι μας σε CS50. Με αυτό, αυτό ήταν Walkthrough 7. Μόλις τελειώσετε βλέποντας το πέρασμα και τελείωσε PSET σας, τότε αυτά ήταν επίσης psets, και τώρα είμαστε στον τελικό προϊόν - μετά παίρνουμε μέσα από κουίζ 1. Στη συνέχεια, ελπίζουμε ότι μπορείτε να χρησιμοποιήσετε τα εργαλεία που έχετε μάθει από τα psets - όχι μόνο η σύνταξη, αλλά περισσότερο η αφηρημένη ιδέα για το πώς να πάρετε μια ορισμένη - αρέσει, θέλω να κάνω αυτό και μετά την εφαρμογή πραγματικά αυτό. Μαθαίνοντας πώς να αγωνιστεί με τη σύνταξη κώδικα και διανομής. Ανάγνωση κώδικα των άλλων ανθρώπων, και στη συνέχεια την ερμηνεία ότι η χρήση προ-υπάρχουσες λειτουργίες. Έτσι, καλή τύχη με την τελευταία PSET. Είναι μια ευχαρίστηση να οδηγήσει τα περάσματα. Ελπίζω να έχουν πάει χρήσιμο για σας. Αυτά ήταν Walkthroughs, και ευχαριστώ πάρα πολύ. [CS50.TV]