[Música tocando] ALLISON Buchholtz-AU: Tudo bem, todos, bem-vindo de volta à seção. Espero que todos tenham tido um ótimo Fim de semana do Dia das Bruxas, ou Halloweekend, como eu gosto de dizer, tudo descansado e recuperado. E felizmente não está nevando mais. É realmente ensolarado lá fora. Eu estava muito feliz com isso. Não está pronto para arrastar as minhas botas de inverno. Esperemos que, pset6 fui muito bem. Se você está cansado de C, eu estou feliz quer dizer que você é feito com C para agora. Temos plena transição em programação web, assim você estará trabalhando em HTML, PHP, talvez um pouco de JavaScript. Eu não sei o que semana seguinte pset é, por isso eu não posso garantir o seu próximo pset vontade ser, mas pset desta semana é CS50 Finanças, que é basicamente implementar o tipo de página web que lhe permite comprar e vender estocar e manter o controle deles. E é muito legal, porque todos do que é gerado dinamicamente. Você pode ter diferentes usuários que cada um tem a sua própria informação, e você vai ser implementação de tudo isso. Leva um tempo. Eu definitivamente acho que isso é mais fácil Série de Exercícios do que C, mas leva mais tempo. Você está aprendendo uma nova língua, PHP, que é muito semelhante a C, mas é claro que vai exigir você olhar para cima sintaxe e entender como converter entre as línguas. Mas eu não acho que há qualquer coisa Super conceitualmente difícil sobre este pset. É só aprender a nova língua e recebendo através de todos esses pequenos pedaços. Se vocês tiver lido a especificação, é muito longo. Eu acho que este é igual a 21 páginas, se bem me lembro. É uma longa spec. Então, se você ainda não leu ele-- 22. 32. Uau. Então, eu estava fora por 50% lá. Assim, 32 páginas. Por isso é muito tempo. Há muitas peças, mas nenhum das peças deve ser tão ruim assim. É apenas um monte. Então, definitivamente começar cedo se possível, como de costume, mas eu acho que ele deve se sentir um pouco mais agradável do que especialmente as Série de Exercícios como recuperar e redimensionar que são apenas muito difícil de quebrar a cabeça por aí. Então, com isso, vamos mergulhar em. Eu não tenho a sua agenda deslize hoje, mas estamos vai ser falando sobre PHP. Eu vou te dar uma espécie de curso intensivo sobre algumas coisas que você pode querer saber sobre PHP. Diferentes coisas sintaxe, coisas para olhar para fora. Nós vamos estar falando um pouco sobre SQL. Apenas coisas muito simples lá, e, em seguida, também MVC É Model View Controller, que é como seu pset está configurado, de modo que a compreensão de como obras vai ser super útil. Tudo certo. Então PHP. Vocês deveriam ter feito algo muito, muito simples com PHP, que é essa coisa de fundo aqui, onde apresentou alguma forma na top aqui que tinha algum nome que você entrada, e como diria Olá, Ben, ou Olá, Allison, e ele iria aparecer. Portanto, este é realmente o que deveria ter parecia de seu pset, no caso de vocês queriam saber ou não chegou a descobrir isso. Mas nós temos esses pontos de interrogação aqui que indicam que este é PHP. Eles envolvê-la e, em seguida, htmlspecialcharge, lembre-se, é apenas, certificar-se de que você está seguro de qualquer ataque de injeção louco ou se alguém tenta colocar personagens maliciosos loucos em seu campo de nome, não faz como se o servidor ou outros enfeites. E então se notar, este HTML forma tinha um método de $ _GET, que, se nos lembrarmos de nossos superglobals do PHP, $ _GET, $ _POST, estaremos entrando em aqueles em um pouco. Mas nós sabemos que temos algum nome aqui que corresponde ao nome que apresentou. Portanto, esta é apenas uma espécie de como o muito simples colaboração PHP HTML que vocês tiveram de pset seis. Mas isso realmente não responder o que é PHP. Obviamente que é uma língua, mas nós não temos realmente conversamos sobre isso nesta seção, por isso há um pouco mais sobre o PHP realmente é. Então PHP é apenas PHP pré-processador de hipertexto. É realmente considerada uma linguagem de programação porque tem lógica, ao passo que se que lembro de ter falado sobre HTML, chamávamos isso de uma linguagem de marcação contra uma linguagem de programação HTML, porque é estritamente modificação do modo como as coisas parecem na página. É só modificando se algo corajoso, ou se é uma forma, elemento, ou algo parecido. Ele não tem qualquer lógica. Ela não tem laços ou condições. Você não pode erro de verificação de coisas. Você quer mostrar coisas de uma certa maneira ou pedir coisas a partir do utilizador. É isso aí. Assim, com o PHP, ele realmente não nos permitem para fazer todas essas coisas mais lógicas, como validar a entrada ou manipulá-lo de alguma maneira. Nós podemos combiná-lo com HTML, como acabamos de viu em sua última pset e agora, e que nos permite criar estas páginas web dinâmicas. Então, se vocês Ever eu não sei se você era como eu, mas no ensino médio eles tivessem nos tirar desta classe de TI, onde criamos apenas páginas HTML, e eles eram estáticas e clique em torno de para outras coisas, mas nunca mudou. Com os dinâmicos, o que podemos fazer é, como com CS50 Finanças, você vai ter diferentes usuários. Dependendo esses usuários ' preferências, eo que eles estão comprando ou o que eles estão vendendo por suas ações, você está indo para exibir coisas diferentes. Portanto, se há algum característica de identificação para o usuário usando este página web, podemos dinamicamente decidir o que mostrar para eles. Não é a mesma coisa para todos os pessoa, que se tivéssemos acesso a HTML, a página seria o mesmo para cada pessoa que visitou. PHP nos permite personalizar as páginas. E, então, pode colocá-los em o mesmo ficheiro, o qual, como no caso antes aqui, vimos que temos HTML todos aqui e depois temos este pouco de PHP. Podemos fazer assim, ou com CS50 Finanças, se vocês têm olhado para o files-- e devemos ter tempo para percorrer um par deles em conjunto no final do que section-- pode ver como você pode realmente mantê-los separados, que é realmente uma coisa melhor para fazer. So. Bater curso. Todas as coisas rápidas e simples você pode precisar saber para PHP. Declarando variáveis. Esse azul é um pouco chato, mas espero que vocês possam vê-lo. Se não, eu vou escrever na placa de giz. As variáveis ​​que declaram. Uma coisa a saber é que, ao contrário de C, PHP é vagamente ou tipagem dinâmica, o que significa que você não precisa contar uma variável que tipo ele é. Você pode simplesmente dizer alguma variável é igual a tudo o que você quer que ele, e ele vai decidir o tipo de essa variável em tempo de execução para você. Como você vai ver, isso pode criar algumas coisas muito interessantes. Mas para a maioria dos propósitos, você Não é necessário especificar o tipo. Você pode, e você pode digitar lançar coisas como você normalmente não veria se você quiser forçá-lo a ser um certo tipo, mas você não precisa. Ele não vai gritar com você se você acabou de declarar uma variável e não especificar um tipo para ele. Portanto, caso você não pode ler isto-- Eu sei que não é o melhor. Eu pensei que iria aparecer o melhor-- maneira que você inicializar qualquer variável é apenas com um sinal de dólar, o que você quer que ele seja chamado, e então o que você está atribuindo a ela. Portanto, neste caso, este é cerca de US $ var = 3. Então, se nós nunca usar $ var em algum lugar, ela só vai ser o mesmo que colocar 3 lá. Ok? Assim, qualquer variável, apenas sinal de dólar, o que quer que deseja chamar sua variável, e tudo o que você quer que ele igual. Pouco mais frio. Menos de escrever para inicializar uma variável, certo? Isso faz sentido para todos? Apenas rápida diferença sintaxe entre C e PHP. Arrays são muito mais frio em PHP. Podemos dar-lhes as chaves. Assim, a maneira de pensar sobre é que, se alguma vez queria acessar um elemento dentro de um array, que precisávamos saber o Índice dele, certo? Então, nós sabemos que com C, que pode acessar o primeiro elemento fazendo suporte de matriz zero, ou se deseja que o primeiro elemento, suporte matriz um. E se quiséssemos algo lá, nós só poderia tem para percorrer, a menos que nós realmente sabia o índice. Uma coisa que é realmente legal com matrizes PHP é que eles são o que chamamos associativo. Assim, podemos associar alguns chave para algum valor, e na verdade estamos indo a-- Eu vou te mostrar como podemos usar isso em um segundo. Mas, basicamente, se você quiser inicializar uma matriz assim, Você tem cerca de US $ array. Assim, da mesma forma, é apenas alguma variável que estamos criando. Isto poderia ser chamado tudo o que você queria. Isto poderia ser de US $ exemplo. Apenas uma outra variável. O que o torna uma matriz é o sintaxe suporte que nós temos aqui. Assim como C. normal e nós tem alguma chave para algum valor. Então key1 vai a Valor1, key2 dois vai para valor2. Estes pares são separados com um vírgula, assim como matrizes normais. No entanto. Um Big. Chaves são opcionais. Você não tem que usá-los. E se você não fizer isso, então é apenas normal. Pergunta? Ou, oh. AUDIÊNCIA: Bem, sobre a direita. Onde está a memória vem? Pode também ser o mesmo como [Inaudível] e da pilha? É que também usando PHP? Como quando estamos ligando-os? ALLISON Buchholtz-AU: Com PHP, nós não tendem se preocupar com onde o nosso memória está vindo. Nós não gastar muito tempo falando sobre isso, por isso não é realmente nada você precisa se preocupar. Então chaves são opcionais. Da mesma forma, se você não faz quero fazer este associado, você só quer uma matriz normal, onde matriz zero é o primeiro elemento e uma matriz é a segunda elemento, você pode fazê-lo exatamente como você faria em C. Você tem alguma variável que vai ser a sua matriz, e é igual a estes suportes aqui. Sim. AUDIÊNCIA: Será que ela tem a mesmo ponto de notação. Tipo, eu posso fazer como uma matriz ++, e que aponta para a segunda. ALLISON Buchholtz-AU: Você pode fazer-- Bem, você pode ter algum iterator, i, que você pode fazer i ++ e fazer um matriz de i da mesma maneira. Mas é isso. Assim, como no presente caso, matriz de 1 seria igual 20. Mesmo tipo de notação de indexação. Esta é, basicamente, apenas uma coisa implícita aqui, onde ele diz que zero, zero a 10, de 1 a 20, 2 a 30. É apenas chaves implícitas para ele. O que muda com o PHP é que agora você tem o poder reatribuir aquelas chaves fazer o que você gostaria. Então, uma coisa é aqui. Então, eu tenho apenas alguns exemplos aqui que eu escrevi para vocês porque eu sinto como exemplos sempre ajudar mais do que apenas o resumo. Assim, neste caso aqui, nós tem alguma matriz associativa que é o meu primeiro nome, o meu sobrenome, e eu estou fazendo eco, que é apenas para todos os fins aqui vai imprimir para a saída aqui. E diz, OK. Imprima o valor que corresponde à matriz na chave Allison. E eu também pode enviar a vocês todo este código depois da aula. Então, quando executamos esse, o que fazer você acha que vai acontecer? O que vai imprimir? AUDIÊNCIA: Seu sobrenome. ALLISON Buchholtz-AU: Meu sobrenome. Ele faz. Bem aqui. Imprimir. Então, se mudássemos isso e nós foram para adicionar alguém à nossa lista-- Então, digamos que temos Emma aqui, e nos associamos a sua última nome-- Vamos ver se eu soletrar esse direito. AUDIÊNCIA: Yeah. ALLISON Buchholtz-AU: Sim. AUDIÊNCIA: Bom trabalho. ALLISON Buchholtz-AU: Lovely. Então, agora, se temos isso aqui e queríamos encontrar o seu sobrenome, você tem isso lá. Então você pode apenas pensar nisso como substituir esta chave aqui. Você está apenas a substituição do índice. Então, ele permite que você apenas busca através de um conjunto muito mais fácil. Você não precisa saber o índice. Enquanto essa chave que você está procurando para existe em algum lugar na matriz, PHP vai encontrá-lo e ele irá retornar o valor associado a ele. Por isso, dá-lhe muito mais poder com suas matrizes. Sim. AUDIÊNCIA: Se você tem as duas chaves mesmo, será que vai dar-lhe um erro? ALLISON Buchholtz-AU: É deve dar-lhe um erro, sim. Isso faz um pouco mais sentido para vocês? E, do mesmo modo, temos uma matriz aqui que não tem nenhuma tecla. Também esta é uma sintaxe que você pode querer estar ciente de, porque você vai tem que usar isso em seu pset. Sempre que você está fazendo uma echo, você tem estas citações, e sempre que você está se referindo a parte de uma matriz, você tem que ter estes chaves em torno deles. É meio chato, mas você só tem que fazê-lo. Assim, apenas algo para manter em mente. Se você estiver executando em erros de, Eu sei que isso existe na minha matriz mas está jogando erros para mim, tente colocar as cintas em torno dele e ele deve funcionar. Portanto, neste caso aqui, este é um matriz normal C que estamos acostumados. Tem três, cinco e seis, e nós apenas pretende imprimir o primeiro elemento, por isso deve imprimir três. E eu corri de tudo isso, por isso espero que nada mudou. Vemos na parte inferior aqui, ele só imprime três. Legal. Isso faz sentido para todos? As matrizes de associação. Muito mais frio do que matrizes normais. Este é entendermos que fez David mostrar-lhe a implementação de PHP pset6 durante palestra em tudo? Está bem. Então, eu vou lhe mostrar. Eu não sei o que fora do t-- AUDIÊNCIA: Ele fez na semana passada. ALLISON Buchholtz-AU: Foi na semana passada? AUDIÊNCIA: Yeah. ALLISON Buchholtz-AU: Yeah. Então ortográfico pode ser feito em seis linhas, como com PHP, e parte da energia de que É esta matriz associativa onde você pode apenas carregar cada palavra, e você tem que igual a verdadeiro ou falso. E para que você possa dizer, oh. Retorno dicionário em alguma palavra, e se ele está lá, ele irá retornar verdadeiro. Caso contrário, não encontrará ele e ele vai retornar falso. Assim, um tipo de coisa pouco fria. Tudo certo. Portanto, estas são as matrizes de associação. Eles são muito legal. Eu realmente gosto deles. E, obviamente, isto-- Ah. Está bem. Agora ele está trabalhando. Talvez. Está bem. Outra coisa. Assim, com a igualdade, a uma coisa legal para se manter em mente. Com PHP, porque é digitado de forma dinâmica, o tipo pode mudar, dependendo de quando executá-lo, como você está executando-o. Na verdade, tenho alguns cool exemplos que eu vou mostrar para vocês. Mas == apenas verifica a existência de igualdade após tipo de malabarismo. Então se você tem algo que é como o personagem e um número 1, PHP iria dizer-lhe que aqueles que são iguais porque podem manipular os tipos de dois deles até que seja igual, que talvez para o seu caso está bem. Se você precisa ver se eles são o mesmo tipo de valor e do mesmo tipo, você quer este ===. E eu acho que você não tem nenhuma caso em que você precisa usar esse em sua pset, mas para um monte de você que vai continuar a fazer páginas da web para seus projetos finais e as coisas, é uma coisa boa saber que == e === são diferentes, e é uma boa distinção de entender. Está bem. So. Loops foreach. Eles são uma forma de iterar através de um array. Então, assim como matrizes tornou-se muito mais legal em PHP, sua forma de interagir através de um conjunto, eu acho, também se torna muito mais frio e muito mais poderoso. Então, ao invés de ter que criar alguns para i é igual a 0 e tudo, e, em seguida, atualizar essa i como você passar por, temos esse loop foreach incrível. Então aqui está o general padrão estrutura destes dois. Então você quer ter alguma variedade foreach como o valor que você deseja interagir como. Então esse é o nome da matriz variável que você deseja fazer referência, e isto é o que você quer chamá-lo de dentro do loop. Ok? Portanto, este corresponde a cada elemento da matriz, e você usar esse valor dentro deste loop. Eu tenho um exemplo. Eu sei que os exemplos são muito melhor. E assim isso é se existem sem chaves, de modo que este é como se só temos um onde as chaves são os índices normais para a sua matriz. Ou este também é o caso em se você não tem nenhum uso para as chaves. Se você não se preocupam com as chaves e você só quer para percorrer com os valores para cada um desses em qualquer ordem, isso é bom. Você pode usar a estrutura. Caso contrário, se existem teclas, o nosso $ Valor só muda a $ valor de chave. Por isso, apenas muda a um par de valores chave. E então, podemos nos referir a $ key e US $ valor dentro do nosso loop. Ok? So. Exemplo. Torná-lo mais agradável. Está bem. Portanto, temos um presente aqui, que temos alguma é-- Você também pode criar uma matriz como este por ter alguma variável igual a matriz com parênteses, ou você pode apenas fazer suporte. Você deve fazer o suporte, mas esta é uma outra maneira de fazê-lo. Portanto, temos aqui alguns matriz de três elementos de um, dois e três, e nós temos o nosso foreach. Observe este corresponde ao matriz que estamos iterando, e é isso que estamos chamando cada coisa em nossa matriz. E tudo isso está fazendo é que é vai imprimir cada valor. Então, se nós executá-lo, percebemos que nós têm valor um, valor dois, valor três. E, do mesmo modo que tipicamente matrizes precisam ser de um tipo, matrizes não tem que todos ser do mesmo tipo aqui. Portanto, agora temos alguns int. Temos duas cordas. Assim, suas matrizes podem ficar muito mais poderoso e talvez um pouco Messier pouco, dependendo sobre a maneira que você quer olhar para ele. Assim, podemos mudar este para o que quisermos. Usamos valor. Essa é apenas a coisa padrão que usamos. Mas, apenas importante saber que podemos chamar este contador como se quiséssemos. E, enquanto eles combinam, Obviamente, todo mundo está feliz. Se você quiser executar um PHP executar algo parecido com este comando linha você sabe que este aqui, você acabou de fazer PHP, e, em seguida, qualquer arquivo que você deseja executar. Então, se você quer mexer com PHP, e mais a lógica e você realmente não precisa ver como em um navegador web, você pode apenas executá-lo em na linha de comando como essa e echo imprime o que quer que você gosta. Está bem. A outra maneira que nós temos é assim. Portanto, este é um caso em que talvez você queira para usar tanto a chave e o valor, Eu sei que estas são como exemplos de super inventados mas eu espero que eles fazem um pouco mais clara. Portanto, temos aqui alguns matriz novamente, mas desta vez, em vez de ter apenas você sabe que não há nenhuma chave. Temos chaves para cada uma delas. Então, um vai ser um, b corresponderá a dois, e c corresponderá a três. E, neste caso, se nós escrevê-lo desta forma, temos acesso a ambos chave e valor de cada uma delas. Então, quando executamos esse, obtemos cada um deles. Então, ele imprime as nossas chaves e os valores correspondentes. Outra coisa legal é que, e eu sei disse como este não tem as chaves, mas sempre tem implicitamente uma chave, porque se você não delegar uma chave, é claro, o seu chaves são apenas seus índices ou índices para que pudéssemos sempre também fazer um presente. Assim. Vou imprimir. Portanto, neste caso, se você observar, temos as nossas chaves implícitos de zero, um, dois e aqui. E da mesma forma com um presente, você pode sempre dizer r como valor, e você só tem acesso ao valor. Você não se importa sobre o seu chaves, mesmo que o seu tem teclas, se você não se preocupam com eles, você não necessariamente precisa colocá-los em seu loop foreach. Será que isso faz sentido para todos? AUDIÊNCIA: Você pode apenas chamar as chaves, também? ALLISON Buchholtz-AU: Sim, você totalmente poderia fazer isso também. Na verdade, espera. Aguente. seria ele-- No. Se você quer a chave, em seguida, você precisa fazer a chave para o valor. AUDIÊNCIA: Adicionar valor. ALLISON Buchholtz-AU: Yeah. E você nunca usar o valor é tudo. AUDIÊNCIA: OK. ALLISON Buchholtz-AU: Se você basta colocar uma coisa lá dentro, que vai assumir que você está falando sobre o valor, não a chave. Ótima pergunta. Tudo certo. Legal. Na verdade, espera. Deixe-me ver o que eu tenho. Então, antes de entrar em poste e conseguir, eu só quero mostrar a vocês um pouco sobre como é dinamicamente digitado, o que é bem legal. Eu tenho tudo isso. Eu tenho como quatro exemplos aqui em cima, e eu vou enviar-lhe todo este código depois da aula. Portanto, temos aqui alguma variável a. Isso é apenas 1 mais 1, certo? E vamos para imprimir o que é isso igual a, e então nós temos algum tipo. E alguém tem alguma palpites sobre que tipo ele vai ser? AUDIÊNCIA: Um int. ALLISON Buchholtz-AU: Sim, é um int. Por isso, apenas adiciona-los juntos. É um int. Tudo de bom. Portanto, esta próxima, temos que parecem ser strings. Quando corremos isso, ele pensa, oh. Você está realmente tentando apenas adicionar coisas. Você só ficou confuso. Então, eu estou indo só para corrigi-lo para você. Você quis dizer int. Eu sei que você quis dizer int. Portanto, esta é uma das maneiras que você pode ver, PHP tem uma mente própria. Mesmo que explicitamente dito, olha, estes são strings. Eu quero dizer a string um. Mas ele diz que, oh, mas você está tentando adicioná-los, por isso você deve dizer que é um inteiro. Apenas confie em mim. Por isso, diz que é um número inteiro, e adiciona-los como normal. Então legal se você está indo para obter preguiçoso com suas coisas, ou se você quiser adicionar alguma coisa. A grande questão é que, se você acha que volta para pset2, algo que era usuário introduzido, direito, que pensamos é um char ou string em primeiro lugar. Agora não temos explicitamente digo, oh, fazem deste um int. PHP seria como, oh sim. Eu sei que você significou um int. Parvo você. Você não quis dizer uma corda. Então, nesse caso, agora que temos isso, o que vocês acham que ele vai fazer aqui? Temos uma corda e um int agora. AUDIÊNCIA: Ainda é um int. ALLISON Buchholtz-AU: Ainda é um int. E a razão é-- eu colocaria mais exemplos, mas a diversão de um presente. A razão por que está fazendo isso é porque é como se você está tentando adicionar coisas. Então, se você está tentando adicionar coisas, eu vou assumir, razoavelmente, você tem algo razoável que você pode adicionar. Eu estou indo só para torná-lo um int, e nós apenas estamos indo para adicioná-lo, como de costume. E, em seguida, da mesma maneira, I acho que vocês começa a idéia. Nós também temos este aqui, que é apenas carboniza, e ele faz a mesma coisa. É como, você bobo usuário. você sabe que quer um int. AUDIÊNCIA: Se colocarmos uma carta, vontade ele faz o valor [inaudível], ou não? ALLISON Buchholtz-AU: Oh, que é uma boa pergunta. Vamos ver. Não, ainda é um int. Portanto, é um pouco louco. Esta é apenas uma espécie de lhe mostrar PHP às vezes pode se comportar de irrational-- Não totalmente irracional, mas pode se comportar de maneiras que você realmente não espera. Assim, quando em dúvida, verifique os tipos de coisas. Esta função gettype pode ser super útil. Normalmente, se você está fazendo alguma coisa com pontos positivos ou quaisquer operadores matemáticos, que vai assumir nada razoável é apenas um int. Então, você tem de char 1, ou um seqüência 1, ou o real int 1, que vai assumir isso. Se você quiser distribuir os papéis qualquer coisa, você pode totalmente. Você poderia fazer algo assim dobrar aqui, eu acredito. E, nesse caso, ele vai dizer: oh. Eu vou fazer isso porque um duplo você explicitamente disse que é um casal. Você pode sempre explicitamente fazer o PHP fazer alguma coisa, mas. AUDIÊNCIA: Aguarde, por isso é um plus um lá? ALLISON Buchholtz-AU: Oh. Lá. Era apenas um eco. Essa foi minha culpa. Assim, você pode dizer explicitamente que a fazer algo de um certo tipo, mas a maior parte do tempo, ele vai decidir dinamicamente que em tempo de execução. Então, ele vai manter a atravessar e ele vai ser como, OK. O que faz mais sentido para que isso seja? Deve realmente ser uma string? Deve ser um int? Caso seja uma bóia? Deve ser um casal? E vai decidir isso por você. Você pode forçá-lo a fazer o que você quer, mas- AUDIÊNCIA: Será que o tornam mais lento? ALLISON Buchholtz-AU: Bem, Quero dizer, C é muito eficiente. Eu acho que é definitivamente mais lento porque ele tem para o processo de como ele vai. C, tenho quase certeza de que é mais rápido. Mas, obviamente, há uma monte de coisas legais em aqui que não temos que se preocupar. Então, se estamos procurando através de uma matriz, nós não tem que realmente criar alguma pesquisa através da matriz. Podemos apenas pedir a chave e PHP vai cuidar dele. Legal. Impressionante. Parece que o fim dos meus exemplos. Vocês nunca vão esquecer isso agora. Você vai ser como, oh, PHP é apenas como a mãe que é como não, não, não. Eu sei o que você quer dizer. Eu sei o que você quer. Está bem. Portanto, esta é, espero, útil para o seu pset, pelo menos no início, porque você é tudo sobre como lidar com formas e coisas do usuário. Portanto, há duas maneiras que nós passar em torno de informações com PHP e HTML quando estamos passando entre essas duas coisas. Portanto, temos $ _GET, que é passado através da URL, e temos $ _POST, que é passado na mensagem corpo, e por isso consideramos que é escondido. Mas uma coisa a entender é que nenhum destes são considerados seguros. Se você tem alguém que é interceptando as mensagens que vão frente e para trás entre você eo servidor, eles ainda podem obter esses dados. Eles apenas tem que olhar um pouco mais difícil. Não é realmente isso-- é apenas escondido da URL. É ainda no corpo da mensagem, porém, por isso, se eles têm acesso a isso, ele é realmente apenas como-- É como a diferença entre algo sendo escrito na parte exterior do um ser envelope e algo escrito sobre um pedaço de papel para dentro. Não é tão difícil de abrir o envelope e obter o pedaço de papel no interior. Com certeza, seria muito mais fácil acabei de ler o exterior. Mas isso é como você pode tipo de pensar neles. Nenhuma destas são realmente considerado seguro. Ok? Concedido, realmente não importa para o seu pset porque você não está lidando com segredos comerciais, mas é tipicamente um coisa que nós realmente gostaria de enfatizar, porque as pessoas pensar, oh, bem, é escondido. Deve ser super seguro. Não. Não é seguro. É apenas um pouco menos insegura, eu acho. Ou não seguro. Então, nós realmente temos um exemplo. Como você sabe, eu amo ensinar mais com exemplos. Eu sinto que isso ajuda melhor. Então, nós temos alguma forma simples aqui que, na verdade, se vocês estão sempre confuso sobre PHP, este é realmente pequeno, mas é, na verdade php.net realmente boa documentação. Eu realmente gosto dele. Eu estava usando-o para se preparar para esta seção, para que eu possa lo veterinário para você. Este é um exemplo a partir deles sobre como $ _POST e $ _GET trabalho. A única diferença entre os dois destes, além de onde a informação é exibido, se é na URL ou no corpo, é também que o método é. Assim, no seu formulário para HTML-- Este é uma forma de HTML muito simples. Alguém pode me dizer o que ele faz? AUDIÊNCIA: Pergunte para o seu nome e idade. ALLISON Buchholtz-AU: Exatamente. Então, nós temos algumas ações de formulário. Isso nos permite saber que é algum tipo ato. E o que vai acontecer é, quando bateu em Enviar, ele vai chamar action.php, o que é que é isso, e ele vai chamá-lo com um método de $ _ POST. Portanto, neste caso, o seu informações está escondido. e é apenas o seu nome, alguns tipo de entrada chamado nome, alguns idade, input type = "text", que também chamamos de idade. E então, se nós batemos em Enviar, Enviar chamará action.php. Então, quando nós realmente bateu apresentar, nós sabe que ele postou, por si só, e nós vamos realmente ver isso no seu conjunto de problemas que espero que nos encontremos começa a caminhar por um pouco. E tudo o que está fazendo aqui é POST é alguma variável superglobal que falamos durante a palestra. E como você pode pensar em $ _POST é que é apenas uma matriz associativa. Ok? Portanto, esta é uma chave, esta é alguma chave, e qualquer que seja a entrada do usuário torna-se um valor para cada um deles. Ok? Então, se fôssemos escrever o que essa matriz realmente parecia logo depois que o formulário, que faria ter, este é o nosso $ _POST, e alguns array onde nós temos algum nome. Vamos apenas dizer que vou fazer o meu nome, e então nós temos alguns idade, 21. Woo. Então, isso é tudo o $ _POST é. $ _ POST é apenas uma matriz associativa, OK? Ele apenas diz, OK. Quais são as coisas que nós pediu do usuário? Quais são as variáveis que estamos passando em torno de que nós pedimos para desta forma? E então o que são as valores associados a isso? Portanto, neste caso, se eu submeteu com um nome de Ally e uma idade de 21 anos, isso é o que $ _POST parece. Ok? E é isso que este Arquivo PHP tem acesso. Tudo certo? Portanto, neste caso, trata-se apenas como recebendo qualquer outra coisa de nossa matriz. Em vez de um índice em nosso array, temos alguma chave. Então, isso vai dar me o valor em nome da chave. Então, isso vai ser Ally, e isso aqui vai me dar o valor de US $ _POST onde o chave é idade, que será 21. Você vai ser fazendo isso um pouco. Sim, a partir do qual parte? AUDIÊNCIA: Quando você era apontando para a parte inferior. ALLISON Buchholtz-AU: Esta parte inferior? Está bem. Então, você entende este é o nosso HTML formar, e nós temos algum método $ _POST, que importa. Isso também poderia ser de US $ _GET, mas para este efeito, nós apenas estamos indo para dizer que é $ _POST. Quando nos enviar este formulário, este é parte de um arquivo PHP que é chamado. Portanto, este arquivo PHP está indo agora para executar dada a informação do nosso HTML formulário. Então o que ele está fazendo é, quando nós Enviar bater no formulário HTML, ele está passando-lhe esta superglobal, que é apenas uma matriz associativa. É isso. É como passar isso para o arquivo. E o que ele diz é: OK, aqui está o $ _POST. É a sua matriz associativa. Fazer com ele o que quiser. E nós estamos dizendo, OK. Dê-me o valor pelo nome, e me dar o valor em idade. Então, essas são apenas as teclas, e esta é a nossa matriz. Será que isso faz sentido? AUDIÊNCIA: Mhmm. ALLISON Buchholtz-AU: Awesome. AUDIÊNCIA: Se você tem de voltar a apresentar o forma isso basta escrever sobre os dados? ALLISON Buchholtz-AU: Yeah. Mhmm? AUDIÊNCIA: Por que você tem para especificar que é um int? ALLISON Buchholtz-UA: Neste caso, o usuário está apenas forçando-o a ser um int. AUDIÊNCIA: OK. ALLISON Buchholtz-AU: eu não sei se você realmente precisa que, mas para os seus propósitos, eles decidiram que eles queriam que fosse um int. Eles estão apenas typecasting-lo. Talvez eles estão usando-o como outra coisa mais tarde. Este é apenas um trecho. Sim? AUDIÊNCIA: E se eles digitado 12, T-W-E-L-V-E, para a idade? ALLISON Buchholtz-AU: Se eles tentou digitar isso como um int? AUDIÊNCIA: Yeah. ALLISON Buchholtz-AU: I esquecer o que faz. Eu acho que poderia tentar converter o primeiro personagem a um int, ou ter o valor e converter isso, mas eu esqueço exatamente o que. Seja uma coisa divertida de escrever um programa e tentar. Faça algumas linhas. OK, então este é um dos principais as coisas que você vai estar fazendo. Eu vou andar espero através de um par de arquivos do pset com vocês. Parece que vamos tem tempo, para que possamos fazer isso. Mas você vai ser fazendo um monte de coisas como este, onde você está passando coisas de um formulário HTML para esta forma PHP que irá, em seguida, executar um conjunto de instruções sobre os dados que foram fornecidos. Isso é, literalmente, a essência do seu pset. Sim. AUDIÊNCIA: The type = "submit", que faz um botão no formulário HTML. Existe uma maneira de chamar que o botão de uma coisa? Então você seria como name = "submit"? Ou é esse botão só vai ser esvaziar agora, porque você só deu-lhe um tipo, não um nome. ALLISON Buchholtz-AU: Eu acho que é só vai estar vazio no momento. Podemos definitivamente olhar no pset, porque nós definitivamente estar a olhar para o inscreva tipo de coisa. Mas sim, você definitivamente pode especificar o texto que você quer em seu botão. OK, então SQL. Quando você está comprando e vendendo ações, Você precisa manter o controle desses. Então, a maneira que nós vamos fazer é que com o SQL, que é apenas um banco de dados. Pense nisso como uma mesa onde você está mantendo toda esta informação sobre seus diferentes usuários. E vocês são realmente vai criar um destes. É muito legal. E há apenas quatro coisas principais que você precisa saber para este pset, e são de atualização, para que basicamente atualizar os dados. Isso pressupõe que ele já está lá. Se ele não estiver lá, ele vai a bater-lhe com um erro, então talvez você queira dar uma olhada. E você vai atualizar on-- I deve verdade- eu tiver tempo, Vou escrever um par destes. Eu realmente vai dar a vocês um par de amostra, comandos SQL completos, porque estes são apenas o principal queridos, mas você pode juntá-las. Então, eu vou fazer isso e vou enviar que para você com essas notas. Então, se você quiser atualizar alguma coisa, precisa dizer a ele o que você está atualizando e onde você está atualizando-o. Assim, um comando SQL típico seria atualização ID onde algo é igual a alguma coisa. Ou como endereço atualização onde ID é igual a 3, e isso iria atualizar o campo endereço de seu usuário que tem uma identificação de três. Ok? Então, se você vai para SQL e W3Schools, eles têm exemplos impressionantes. Na verdade, eu poderia puxar alguns até daqui a pouco. E, em seguida, inserir, você é apenas inserção de determinados valores lá. Então, se você está tentando criar alguma nova entrada, então você está criando um novo usuário, você poderia fazer inserção em qualquer que seja o seu banco de dados é chamado, e você teria todos esses valores. Então você tem seleto, selecionar valores para ver. Então, se você está tentando verificar a ver se um usuário existe ou você está tentando agarrar específico informações sobre um usuário você vai estar usando select. E, em seguida, apagar, eu acho, é bastante simples lá. Você só está excluindo algo a partir da tabela. E, na verdade, deixe-me realmente puxar se alguns exemplos para vocês. Ah, olha, é minha página 61. Então, se vamos para W3Schools, espero que seja novamente. Sim, o amor. Vamos para SQL. Então, isso é algo aqui. Então, essa é uma forma muito simples SELECT. Cara, eu amo essa função. Assim, você pode ter SELECIONAR algum campo dos clientes. Neste caso, os clientes refere-se a banco de dados on-line que você está usando, assim que o seu quadro é chamado, e estrela significa apenas selecionar tudo. Dá-me a cada um. Então, eu só quero dar a vocês uma alguns exemplos de onde isso é. Portanto, temos SELECT, UPDATE. Então aqui é o tipo de sintaxe geral. Então atualização, qualquer que seja sua nome da tabela é, em seguida, definir é o lugar onde você está indo realmente ser o que os dados que você está mudando. Portanto, este poderia ser-- Let me dar um exemplo aqui. Então, isso vai ser-- Está bem. Então, eu criei um pequeno banco de dados para nós. Nós vamos ter alguma identificação, alguns anos, e alguns nomeados. Então ID vai ser um ano de '15, e nós apenas estamos indo para torná-lo de mim. Quem quer ser o segundo pessoa em nossa mesa? Qualquer um. Eu só vou escolher Emma porque rápida do seu nome. Emma, ​​que ano você está? AUDIÊNCIA: Que ano? ALLISON Buchholtz-AU: Yeah. AUDIÊNCIA: '16. ALLISON Buchholtz-AU: '16. Você só vai ser minha cobaia para hoje. OK, então nós temos essas duas pessoas. Na verdade, deixe-me fazer isso. Vamos dizer que eu a ouvi errado, e eu na verdade, disse que ela é um ano mais novo. Ela é '17. O que queremos fazer aqui, se nós queria atualizar ano de Emma estar correta usando esse, o que tínhamos fazer é que diria que atualizar dados até aqui. E tudo isso pode estar em uma linha, mas desde que eu estou comprimido para o espaço aqui, Eu vou escrever aqui. E queremos definir. Portanto, esta é a mesa que está atualizando. SET vai ser o que coluna ou quais os dados que estamos realmente mudando. O que está mudando é o ano, de modo vamos dizer SET ano = 16, e então onde nos diz que o usuário ou que linha que estamos realmente atualizar isso. Então, onde? Temos duas opções aqui. Quais são os dois? Estes são únicos, certo? Assim, os nossos nomes são únicos e nosso ID é único, então o que são as duas opções para onde poderíamos fazer isso? Vou dar-lhe um. Poderíamos fazer WHERE ID = 2, ou podemos fazer o que se vamos desligar esse paradigma aqui. AUDIÊNCIA: [inaudível]. ALLISON Buchholtz-AU: Exatamente. Assim, poderíamos também fazer name = Emma. E qualquer um deles iria funcionar. E nós corremos este, que seria como, OK. Nós vamos mudar isso. Você é, na verdade, 16 anos, então agora você está certo de novo. OK, então isso seria super útil em sua pset onde talvez alguém decidiu para comprar 100 ações da Apple, e, em seguida, eles eram como, só brincando. Eu só quero 90 partes. E assim que vender 10 deles, para que preciso atualizar a quantidade de stocks que eles têm. Então, atualizando os estoques, atualizar a tabela. Está bem. Então, isso é um exemplo lá. Essa é a sintaxe de atualização. DELETE. Oh. Inserir em nossa é outra. Então, este aqui é muito semelhante. Poderíamos simplesmente dizer, neste caso vamos adicionar alguém. Podemos acrescentar Ben esse tempo. Nós INSERT INTO, e nós quero o nome de nossa mesa. Neste caso, é de dados. E então nós apenas queremos, você vai VALORES dizer, eo que você vai fazer é, na verdade você precisa ter certeza de que você tem algo para cada linha que você deseja. Você simplesmente colocá-los em ordem. Portanto, neste caso, diríamos 3. Você tem 18 anos, Ben certo? AUDIÊNCIA: 19. ALLISON Buchholtz-AU: 19? AUDIÊNCIA: 19. ALLISON Buchholtz-AU: '19 do seu ano? Você se forma em '18, certo? AUDIÊNCIA: Oh. ALLISON Buchholtz-AU: ano da graduação. AUDIÊNCIA: OK. ALLISON Buchholtz-AU: Eu era como, você está já planejando tirar um ano aqui? Então, '18, temos Ben. Portanto, neste caso, ele iria passar por, que iria criar uma nova entrada aqui. Legal. Não é tão ruim, certo? Um monte de que isso vai ser sintaxe para vocês. Conceitos deve vir, espero que, com relativa facilidade. A sintaxe é a única coisa que pode ser um pouco complicado. E então o nosso último é DELETE, e como você percebe, Eu recomendo este site. É ótimo. Há uma tonelada de coisas. Assim, da mesma forma que tínhamos alguns UPDATE, DELETE é muito semelhante. Em vez disso, temos Excluir dados. Portanto, neste caso, o nosso último que eu vou escrever aqui. Vamos dizer que queria me excluir. Eu não posso escrever hoje. EXCLUIR a partir de qualquer mesa em que estamos, de dados. E na verdade existem três maneiras poderíamos escolher para me excluir. Vocês podem me dizer o que os três formas são, como você poderia me apagar? ID é igual a 1, onde ID é igual a 1. Nós poderíamos fazer em ano é igual a 15, ou em que o nome é igual a Allison. é claro, não são apenas três maneiras diferentes, porque estes são todos originais. Tipicamente, em sua mesa, e, especialmente, em sua pset, você vai definir um dos estas colunas de ser único. Ele provavelmente vai ser um único ID número, porque se você realmente have--, ele pode realmente deixar de ter dois. Não me lembro se ele vai deixar você tem dois a mesma coisa. AUDIÊNCIA: Em seguida, ele teria mudar seu comportamento. ALLISON Buchholtz-AU: Ele faria. Isso vai causar um comportamento que é inesperado, que você realmente não pode prever. Então, você vai definitivamente ter uma coluna em seu banco de dados que será único, e é, geralmente, você pode definir lo para que ele é como uma identificação única, e ela só vai atualizar todos os vez que você inserir na tabela. Toda vez que você criar um novo linha, ele será automaticamente incrementar e dar-lhe algum ID único. Então dica para o seu pset. Está bem. Assim que é SQL. Então, agora vamos falar sobre a última coisa, o que se coaduna realmente muito bem com o seu pset, se ele iria para a frente. Então, MVC, controlador de vista do modelo. Isto é realmente apenas uma maneira para manter as coisas organizadas. Da mesma forma com C pedimos que vocês para criar funções e coisas separadas fora, esta é apenas uma maneira de separar código quando você está fazendo desenvolvimento web. Por isso torna as coisas muito mais elegante e simplificada, e este é realmente o caminho que seu pset é realmente configurar, por isso se você gosta ou não, você está indo para aprender, mesmo se você não acha que você está aprendendo. E uma coisa é, ele também permite que você fazer muito mais como uma colaboração do usuário. Então, quando eu tomei CS50, eu fiz um site para o meu projeto final, e eu era como, eu vou lidar com o material do banco de dados. Eu vou fazer de volta o material final, e meu companheiro de quarto que eu estava levando com ele era muito artística. Ela faz cenografia, e ela queria fazer tudo bonito. Então eu sou como, OK. Você pode cuidar de todo o material front-end. E a coisa é, como vamos ver muito em breve, esse controlador de vista do modelo permite que você separar completamente esse código tão que eu poderia trabalhar em implementação de nossas páginas, e manipular informações na nossa base de dados, e ela só poderia fazer as coisas bonita, e nós dois estávamos muito felizes, porque temos de fazer o que nós dois queríamos e nós não ter de lidar com o outro. Então, nós saíamos juntos. Nós gostamos de sair. Eu simplesmente não queria lidar com todo o CSS e outras coisas HTML. Eu estava como, você torná-la bonita. Eu vou lidar com o banco de dados. Então nós temos isso realmente legal, grande mesa pequena. Eu amo tabelas. E, basicamente, o modelo pode pensar é apenas a sua base de dados. Eu era o modelo de pessoa para o meu projeto. É tudo sobre o armazenamento de informação e organização de dados. Por isso, é o que gostamos de chamar de volta final. Então vocês vão estar lidando com o banco de dados SQL e os arquivos de dados. Esse é o seu modelo. O seu ponto de vista, como você pode pensar, tipo de faz sentido, é o que o usuário realmente vê. É a interface do usuário. É esse componente para a frente. Então é isso que meu companheiro de quarto tem que trabalhar o tempo todo. Ela estava super feliz. Então, isso é tudo do HTML, e há muito pouco PHP. Se você está apenas falando o que está sendo exibida para o usuário, estamos falando de hipertexto. Estamos falando de como ele se parece. Nós não estamos falando de lógica, ou condições, ou outros enfeites. Tudo isso fica manipulados pelo controlador, OK? Então, que lida com as solicitações do usuário e obtém a informação. Então, uma coisa que você deve saber sobre seu pset é que, em seus pontos de vista, tudo o que é, na verdade, exibição de informações nunca deve ser tomada chamadas para o seu modelo. Tudo que é tratada em seu controlador. Seu controlador é aquele mediação entre estes dois. Ele vai pedir o modelo para determinadas informações. Ele pode interagir sobre que informações, descobrir o que você realmente precisa de ele, o que fazer com ele, e então ele vai passar apenas a informação de que precisa o ponto de vista para você imprimi-lo fora ou exibi-lo ao usuário, OK? Porque vemos a vista como tudo o que está virada para o utilizador, por isso vai ser muito mais fácil para eles para descobrir, oh, se você está fazendo alguma chamada para o seu modelo e você está pedindo a todos os usuários que começam com a letra A, e você está fazendo que, na sua opinião, quem pode ver sua página web pode potencialmente acessar isso. Você não necessariamente quer isso. Você não quer que as pessoas vejam mais na base de dados do que o que eles devem estar vendo. Apenas suas preferências específicas. Assim, o controlador manipula tudo isso. Assim, todos os seus arquivos .php que vamos ver você pode considerar seus arquivos do controlador. E é aí que você está realmente vai ser pedindo as coisas do seu banco de dados, e iteração ou manipulando como necessário antes passá-lo para ser visualizado. É um pset muito legal, na minha opinião. Eu acho que é um pouco mais como gratificação instantânea, porque você implementar um monte de pequenas coisas pequenas, e cada coisa deve funcionar por conta própria. Não gosta, fazer tudo e depois ver se funciona. Como com software onde você é como, eu sou realmente esperando que este é certo, porque se não for, há um grande número de coloca ele poderia estar errado. Tudo certo. Basta ter certeza de que eu disse tudo o que eu precisava dizer sobre MVC. Sim. Legal. Assim, em CS50 Finanças, temos nosso modelo, como eu disse aqui. Vai ser MySQL e phpMyAdmin. Eu posso definitivamente puxar aqueles até então vocês tem a chance de olhar para ele. Como eu disse antes, o SQL banco de dados atua como seu modelo, e você pode enviar o que chamamos de consultas, que são apenas esses tipos de coisas. Estes são chamados de uma consulta. Esta é uma consulta, onde você é apenas pedindo o seu banco de dados para alguma coisa, ou você está mudando o seu banco de dados, de algum modo. Isso é tudo o que é. E você faz isso com o funções que lhes demos aqui. Você também pode manipular los à mão via phpMyAdmin, que nós definitivamente podemos dar uma olhada. Vou criar uma amostra banco de dados com vocês. Está bem. Assim, o controlador. Portanto, neste caso, se você aviso prévio, tudo isso é PHP. Observe que é uma espécie de seu principal coisa de sua controladora é que ele deverá ser principalmente o PHP. Se você tiver HTML em seu controlador, realmente não sei o que está acontecendo lá. Da mesma forma, como eu disse, se você conseguem [inaudível] com o HTML, Estou muito interessado. Então o que temos aqui é que você tem alguma consulta. A consulta é uma função que nós construímos para vocês. É como um wrapper para fazer consultas para seu banco de dados um pouco mais fácil. Se você não tem isso, a sintaxe para na verdade, falar com o seu banco de dados SQL seria diferente, por isso, apenas fornecê-lo para vocês. Nós gostamos de fazer a vida fácil. Portanto, neste caso, vocês podem me diga o que esta linha está fazendo? SELECT * de alguma mesa. AUDIÊNCIA: Selecione tudo a partir desta tabela. ALLISON Buchholtz-AU: Exatamente. Então ele está dizendo, dá-me tudo a partir desta tabela. E está armazenando-o em algum resultado variável. E isso, diz, se o resultado não é igual a falsa, então o que fazemos cada um isso. Então, se não há nada aqui, se o seu mesa de vazio ou ele simplesmente não existe, ele vai retornar falso. Portanto, neste caso, estamos apenas fazendo Certifique-se de que algo estava realmente devolvido para nós. E então, aqui, temos nosso loop foreach grande que estamos interagindo sobre o nosso resultado, e nós estamos chamando-linha, e dizemos tornar este modelo onde seus dados é este resultado. Ok? Então, é só o processamento a linha do resultado. Caso contrário, ele grita. Então, este é um exemplo do controlador. Como você pode ver, este é o só lugar-- Sim, desculpe? AUDIÊNCIA: Por que há um e comercial antes de linha? ALLISON Buchholtz-AU: Um comercial antes da linha. Estamos apenas repetindo. Isso também é um endereço de-- AUDIÊNCIA: Então, é como C referência. ALLISON Buchholtz-AU: É certificando-se de que você está realmente modificando o original e não uma cópia. É da mesma forma com C, onde estamos passando por referência aqui, apenas para ter certeza. AUDIÊNCIA: Não é == em vez de não = em PHP? ALLISON Buchholtz-AU: Não é o ==. AUDIÊNCIA: Porque é igual em C é apenas-- ALLISON Buchholtz-AU: Não é apenas =. Sim, não. Não é ==. Porque == em PHP verifica igualdade com alternância, concedido, mas a qualidade extra. Então, não é == em PHP. É um dos pouco diferenças de sintaxe. Sim. Então, nós estamos apenas repetindo através de cada linha, e render, se vocês ler através de seu spec, é apenas uma outra função que é realmente vai processar todo o HTML e exibi-lo em sua navegador para você. Está bem. Então, nós gostamos de pensar de seus controladores como o que lida com a lógica de negócios. Como você pode ver aqui, aqui é onde nós estamos tendo os nossos dados a partir da tabela, estamos processando ele, de alguma forma, e então nós estamos passando-off. Quando fazemos prestar algum modelo, algum modelo é o nosso ponto de vista, e estamos passando só os dados que ele deve ficar. Nem todos os dados. Apenas os dados que nós queremos que ele chegar. Ok? Basicamente os dados após o processamento. Portanto, este é o ponto de vista, este é o modelo de soma que nós temos, e tudo isso está fazendo é, você pode ter um pouco de PHP em sua opinião. Não é como se um não PHP em vista. Você deve apenas ter muito PHP mínimo, tendo em vista, e você nunca deve ser consultar na sua opinião. Você nunca deve estar falando para seu banco de dados na sua opinião. Essa é a grande diferença. Então, o que está acontecendo aqui é que temos PHP que está interagindo através da linha. Portanto, neste caso, uma vez que foram iterar cada linha e prestação de alguma coisa, isso foi provavelmente como uma matriz bidimensional onde temos alguma linha que é, em si, uma matriz, porque nós estamos interagindo por isso novamente. E nós estamos apenas imprimir o nome da linha, em seguida, acabar com ela. Você não deve precisar isso no foreach. Eu nunca vi isso antes, na verdade. Eu só faço o foreach. OK, então essa é a vista. Vamos ver se podemos caminhar através um pouco de sua pset. Temos 15 minutos, então eu tenho certeza que você rapazes gostariam que mais do que apenas terminando mais cedo. Deixe-me ver se eu posso trazer isso. Então, eu não sei quantos de vocês já baixei e ainda outros enfeites, mas temos nome de usuário aqui, e nós temos alguma senha. E, infelizmente, a direita agora o banco de dados está vazio, então nós realmente precisamos para criar um banco de dados. Bem, isso é estranho. Não esperava isso. Erros técnicos. Dificuldades técnicas. Temos algumas pset7. Legal. Então, uma coisa que você pode fazer é, com um query-- eu vou criar uma tabela. Portanto, este vai ser o que users-- você pode fazer aqui é, se temos some-- Realmente agora? Está bem. Obviamente, eu não estou fazendo tão quente. Oh. Eu sei por quê. Porque eu nunca criou minhas tabelas reais. Então, quando você começa com um banco de dados, você obviamente tem que decidir quais são os as coisas que eu preciso ter aqui? Então, se nós simplesmente sair nossa tabela de dados aqui, tivemos alguma identificação, que pode apenas ficar um int. E se olharmos para cá, não há uma coisa legal isso-- índice Então. Se você fizer primário, ele vai fazer a coisa que sua tabela é organizada por, e que também irá torná-lo único. Portanto, neste caso, nós vamos fazer isso primário, e eu vou fazer este nome, então vamos torná-lo um varchar como de 26 letras, porque por que não? E então você pode ir para salvar, em seguida, se você ver, temos alguns usuários aqui. Então, se nós queríamos fazer uma inserir, poderíamos fazê-lo Desta forma, ou se você queria prática com seu queries-- Oh menino. Eu nunca usei isso em sempre. Aproveito esta volta. Você pode editar esta em seu próprio país ou apenas inserindo manualmente informações com algo parecido, você pode mudar qualquer um destes se você quisesse make-- Se você quiser de repente se livrar de nome, você pode cair, você pode fazer todas essas coisas. Se você precisa de cada vez alterar manualmente sua tabela, Eu sugiro fazê-lo em phpMyAdmin contra a tentar para descobrir o SQL consultas em geral. Quando você iniciar o seu pset, você vai ter que trabalhar aqui, assim se acostumar com isso. E então quando você realmente quiser para inserir as coisas em seu mesa-- Eu realmente me pergunto onde isto é, porque there's-- Aqui está. Isso é o que eu queria. Então, se você vai para SQL, você poderia realmente ver, como vemos aqui, temos consultas SQL. Então, se nós queria escolher algo ou se quiséssemos inserir algo, podemos fazer inserir na usuários, certo? Acho que você precisa a barra invertida. Uma coisa a saber é que, se você está sempre usando isso, você tem que usá-los de volta apóstrofos, que são tipicamente, se você estiver em um Mac, logo acima guia. Assim, uma boa coisa para saber. Você pode inserir os usuários, e nós temos os nossos valores, certo? Portanto, temos valores e os nossos valores neste caso, seria apenas, só temos um ID para que poderia fazer um, se quiséssemos. Isso é estranho. Está bem. Então, isso é apenas como uma breve pouca coisa com o SQL, mas pode ser mais útil para realmente olhar para alguns dos arquivos aqui. Então, vá para Downloads. Ah, e não de downloads. Assim, apenas uma rápida passagem o que está em cada uma dessas pastas. Inclui, só temos coisas que configurar seu navegador, temos essas constantes, e temos estas funções. Se você está interessado em nenhum deles, Eu recomendo olhar funções. Um deles que é super útil, na verdade é este aqui, de despejo. Então, se você usar isso, ele vai realmente apenas imprimir qualquer que seja variável que você gostaria que ele. Então, se você está tendo problemas para descobrir o que essa matriz se parece, ou o que esses dados realmente, como ele é formatado, esta é uma grande coisa para usar. Especialmente quando você tem um usuário com ações múltiplas, este vai ser algo grande para usar. Porque pode ser formatted-- Eu sei que pelo menos para mim, quando eu fiz este pset, foi formatado de forma que eu não tinha muito esperar. Então eu estava tentando iterar ele e tentando manipulá-lo, mas eu realmente não entender o que eu estava fazendo. Então, se você só despejá-lo, ele vai imprimi-lo para o navegador, e você pode ver exatamente como ele é formatado. Ele normalmente vai imprimi-lo como um matriz com suas chaves e seus valores. Por isso, pode ajudar lá. Ele também pode ajudar a fazer Certifique-se de que você é realmente agarrando os dados você pensou que eram. Então, se você fosse como, minha mesa definitivamente diz que há um usuário com esse ID, mas quando você vai para despejar o variável, ele não está lá, você obviamente sabe que é onde um erro vai ser. Esta é uma das melhores ferramentas para depuração, na minha opinião. E depois há uma par de outras coisas aqui, mas a maior parte, essa é a que eu quero chamar a sua atenção, porque ele é muito útil. Público, o que temos aqui é, isto é todas as nossas coisas CSS. Então, CSS, fontes, nossas imagens, outros enfeites. Isto é tudo que você não tem que modificar. Vocês podem pensar se esta tem coisas como CSS nas fontes, isso seria um modelo, ou uma visão, ou um controlador? AUDIÊNCIA: [inaudível] ALLISON Buchholtz-AU: Seria ter mais de um ponto de vista, certo? Isso é manipulação de todos coisas, como estão as coisas. Então, se abrirmos este aqui, vemos que tudo o que está acontecendo aqui é que estamos tornando algo. Ok? Então, isso seria muito qualificar-se como uma visão para isso. Portanto, esta é apenas tomando alguns, está chamando alguns portfolio.php que temos, e está passando em título e carteira. E está apenas tornando isso. Na verdade, eu retiro o que disse. Este é um controlador, porque render, lembre-se, torna a vista. Assim portfolio.php neste caso seria o seu ponto de vista. Desculpe, pessoal. Portfolio.php vai ser o seu ponto de vista, e isso seria apenas ser o seu controlador para isso. E se dermos uma olhada neste último aqui, modelos, modelos são todos os seus pontos de vista aqui. Portanto, se olharmos, obviamente vemos um monte de HTML aqui. Então, este é apenas mostrar o que a página de login deve ser parecida. Você percebe que tem alguma formar grupos, têm submeter. Veja como você decidir o que É apresentada na ali. Você tem algum tipo de botão = "submit", e então você tem o que você quer para exibir no botão. Então é assim que você gostaria de fazer isso mostrar-se como o que você gostaria. E vemos aqui temos alguns nome de usuário, senha alguma, e quando nós realmente bater em Enviar, que vai ser algum post, e ele vai postar o que? Qual é o controlador para este ponto de vista? Quando bateu apresentar, o que vai ser chamado? Nós sabemos? É aqui, então login.php. Algo que vocês são vai implementar. Assim, você sempre pode dizer o que vai ser chamado depois de bater Enviar por essa primeira linha aqui. O que a ação é forma. Quando este formulário é enviado, quais as medidas que vamos tomar? Chamamos login.php, e nós chamá-lo com este método de pós, que tem a informações ocultas. Ok? Portanto, este é o seu ponto de vista, e então, obviamente, se fomos para login.php-- Do temos ainda? Sim. Assim como vemos aqui, este tem muito mais lógica. É tudo nosso PHP aqui. Estamos tentando ver se era $ _GET, se ele foi de US $ _POST, validando as coisas, consulta, todo este material. Então esses são apenas os três coisas diferentes aqui. você não tem que mudar as coisas. Você estará criando coisas no molde, possivelmente, mas, tanto quanto o HTML ou o styling de nada disso vai, você pode deixá-lo como simples ou tão complicado como você gostaria. Algumas pessoas ficam realmente para ele e fazer alguns sites bastante impressionantes. Você não tem que fazer isso. Se você tiver tempo, é uma coisa muito legal. Você pode mexer com CSS e HTML e começar uma sensação muito melhor para ele, mas não se sentem pressionados a. Há muito para você fazer no back-end com a implementação de login, e registrar, e todas essas coisas. Portanto, esperamos que ajuda um pouco. Vocês têm alguma dúvida sobre qualquer coisa que tenha ido mais, quaisquer outros recursos? Vou mandar todos meu exemplo de código PHP para vocês, e, em seguida, sinta-se livre para tomar imagens ou outros enfeites deste. Também é online. Você sempre pode apenas assistir novamente. Então, se é isso, todos bem? Sim. AUDIÊNCIA: Eu só quero para confirmar, quando estamos fazendo select em SQL, o estrela significa tudo, certo? ALLISON Buchholtz-AU: Sim. AUDIÊNCIA: E então se você não tem a estrela, se você quiser tomar a partir de um específico linha, então você acabou de colocar o nome de-- ALLISON Buchholtz-AU: O nome da fila eo que você quer você quer o valor de. AUDIÊNCIA: E então a data. ALLISON Buchholtz-AU: O que quer que você está procurando, sim. Da mesma forma, se você fizer APAGAR * from alguma mesa, ele vai apagar tudo. Assim, * é apenas um selvagem cartão para tudo. AUDIÊNCIA: OK. ALLISON Buchholtz-AU: Cool. Impressionante. Bem, temos uma grande segunda-feira, rapazes. Vejo você na próxima semana. Boa sorte em sua pset.