Karbust 1 Denunciar mensagem Publicado 26 de Maio Boas Estou aqui a desenvolver um site para a PAP, mas estou com dificuldades numa função... O objetivo da função é obter e guardar o id e o nome (desse id) num array e dar return. Tenho esta função: function get_categories() { global $connection; $result[] = array(); $cmd = "SELECT * FROM hardware_types"; $query = mysqli_query($connection, $cmd); if($query) { for($y = 1; $query->num_rows; $y++) { $result[$y] = mysqli_fetch_row($query)->type_name; } return $result; } } Mas está sempre a arrebentar: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 40 bytes) Estrutura da tabela: id_type type_name 1 CPU 2 GPU 3 PSU 4 Mobo 5 RAM 6 HDD 7 SSD 8 Caixa 9 Cooler 10 Monitor 11 Router 12 Headset 13 Rato 14 Teclado 15 Tapete 16 Repetidor 17 Router 18 Switch 19 Cabo 21 Nenhum Alguém me pode dar uma ajuda? Obrigado Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
washalbano 5 Denunciar mensagem Publicado 26 de Maio Olá! O que é PAP? Conecte-se assim: <?php // variáveis para conexão em localhost $host = 'localhost'; // define o host do banco de dados $user = 'root'; // user do banco de dados $password = ''; // senha do banco de dados $database = 'scriptbrasil'; // nome do banco de dados // estabelecer conexão com o mysql $sqli = new mysqli($host, $user, $password); // verificar se houve erro na conexão if ($sqli->connect_error) { // se houve erro, mostra erro na tela echo "<p>Erro ao Conectar: $sqli->connect_error</p>"; } // alterar o tipo de codificação da conexão com o banco de dados, para utf8 if (!$sqli->set_charset('utf8')) { echo "<p class='error'>O charset não é utf8: $sqli->error</p>"; } // selecionar/abrir o banco de dados para trabalhar if (!$sqli->select_db($database)) { // se o banco de dados não for encontrado echo "<p class='error'>Banco de dados não encontrado, chefe!</p>"; } Proceda com a busca assim: <?php // monte sua query de busca, selecionando apenas as informações necessárias: $query = "SELECT id_type, type_name FROM hardware_types"; // execute a query $result = $sqli->query($query); // verifique se houve algum erro na execução da query if ($sqli->error) { // se houve, mostre o erro na tela echo '<p class="error">Falha ao executar query, chefe!</p>' . $sqli->error; // se não houve erro algum e algum resultado foi encontrado } elseif ($result->num_rows) { // busca os dados em formato de array associativo $dados = $result->fetch_all(MYSQLI_ASSOC); } else { // se nenhum resultado foi encontrado echo '<p class="warning">Nenhum tipo de hardware cadastrado, chefe!</p>'; } Debugar a variável $dados: echo '<pre>'; var_dump($dados); echo '<pre>'; 1 Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
Karbust 1 Denunciar mensagem Publicado 26 de Maio PAP é o Projeto de Aptidão Profissional, é um trabalho que temos de apresentar para terminar um curso profissional aqui em Portugal... E obrigado, funcionou! Depois para aceder foi usar algo deste género: get_categories()[$i][type_name] Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
HappyHippyHippo 1177 Denunciar mensagem Publicado 27 de Maio se num_rows for zero, quantos ciclos serão efectuados ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
washalbano 5 Denunciar mensagem Publicado 27 de Maio zero Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
HappyHippyHippo 1177 Denunciar mensagem Publicado 27 de Maio 49 minutes ago, washalbano said: zero e se não for ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
washalbano 5 Denunciar mensagem Publicado 27 de Maio (editado) Creio que não entendi. O que são "ciclos efetuados"? se num_rows = 0 não há resultados se num_rows for maior que zero, serão retornados quantos registros existirem. Editado 27 de Maio por washalbano Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
HappyHippyHippo 1177 Denunciar mensagem Publicado 27 de Maio 7 hours ago, washalbano said: Creio que não entendi. O que são "ciclos efetuados"? 14 hours ago, Karbust said: for($y = 1; $query->num_rows; $y++) { $result[$y] = mysqli_fetch_row($query)->type_name; } novamente, já vimos que se não haver registos, não serão executados ciclos, mas se houver ? quantos ciclos são efectuados ? 1 IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
washalbano 5 Denunciar mensagem Publicado 27 de Maio o método fetchAll, busca todos os registros encontrados, sem a necessidade de usar estruturas de repetição, veja:http://php.net/manual/pt_BR/mysqli-result.fetch-all.php Por isso, se num_rows retornar true, é maior que zero, indicando que há resultados, logo: // se algum resultado foi encontrado if ($result->num_rows) { // busca os dados(TODOS ENCONTRADOS) em formato de array associativo $dados = $result->fetch_al l(MYSQLI_ASSOC); } Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
Karbust 1 Denunciar mensagem Publicado 27 de Maio (editado) 5 horas atrás, HappyHippyHippo disse: novamente, já vimos que se não haver registos, não serão executados ciclos, mas se houver ? quantos ciclos são efectuados ? Eu tinha me esquecido de meter $y = $query->num_rows no segundo parâmetro, por isso é que estava a estoirar... Eu agora ando mais do C# e já me esqueci de algumas coisas em PHP... Editado 27 de Maio por Karbust Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
HappyHippyHippo 1177 Denunciar mensagem Publicado 27 de Maio 4 hours ago, Karbust said: Eu tinha me esquecido de meter $y = $query->num_rows no segundo parâmetro, por isso é que estava a estoirar... Eu agora ando mais do C# e já me esqueci de algumas coisas em PHP... Isso é problemático... Primeiro a condição de paragem continua errada Segundo, isto é igual seja no php ou c# 1 IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites