Jump to content
looord

PHP e SQL

Recommended Posts

looord

Boa noite,

Eu e um colega estamos com dificuldades num trabalho. Estamos a usar o Xamp para fazer um trabalho sobre uma associaçao de caça, ele começou por fazer uma base de dados usando Sql e foi fazendo algumas das funcionalidades em php.

o problema surgiu, quando ele exportou os ficheiros e a base de dados, eu não consigo , por exemplo listar os dados de uma tabela da base de dados no php , a tabela aparece vazia, como se não acedesse à base de dados. (penso que nao seja esse o problema visto que o login funciona).

Este é o codigo do ficheiro que não consigo utilizar

(o meu colega utiliza um mac, eu uso windows)

<?
ob_start();
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Design by TEMPLATED
http://templated.co
Released for free under the Creative Commons Attribution License
Name	 : Skeleton
Description: A two-column, fixed-width design with dark color scheme.
Version : 1.0
Released : 20130902
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link href="http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400,600,700,900" rel="stylesheet" />
<link href="default.css" rel="stylesheet" type="text/css" media="all" />
<link href="fonts.css" rel="stylesheet" type="text/css" media="all" />
<link href="default_ie6.css" rel="stylesheet" type="text/css" />
</head>
<body>


<div id="page" class="container">
<div id="header">
<div id="logo">
<img src="images/logo_ass.png" alt="" />
<h1><a href="#">AC</a></h1>
<span>Associação de Caça</span>
</div>
<!--MENU-->
<div id="menu">
<ul>
			 <li><a href="inscrever_evento_cacador.html" accesskey="1" title="">Inscrever em evento</a></li>
 <li><a href="cacador.php" accesskey="2" title="">Voltar</a></li>
			 <li><a href="logout.php" accesskey="3" title="">Logout</a></li>
</ul>
</div>
</div>

<!--imagem principal-->
<div id="main">
<div id="banner">
<img src="images/banner.jpg" alt="" class="image-full" />
</div>

<?php

include("basedados.h");

$query = "select * From evento order by id_evento";
$resultado = mysqli_query($ligacao,$query);
$informacao = mysqli_fetch_array($resultado);
?>
<table border="2">
<tr>
<td>
id_evento
</td>
<td>
tipo_evento
</td>
<td>
preco
</td>
<td>
data
</td>
<td>
portas
</td>
<td>
localizacao
</td>
</tr>
<?
while( $informacao = mysqli_fetch_array($resultado) ){
$id_evento = $informacao["id_evento"];
$tipo_evento = $informacao["tipo_evento"];
$preco = $informacao["preco"];
$data = $informacao["data"];
$portas = $informacao["portas"];
$localizacao = $informacao["localizacao"];
?>
<tr>
<td>
<?echo("$id_evento");?>
</td>
<td>
<?echo("$tipo_evento");?>
</td>
<td>
<?echo("$preco");?>
</td>
<td>
<?echo("$data");?>
</td>
<td>
<?echo("$portas");?>
</td>
<td>
<?echo("$localizacao");?>
</td>
</tr>
<?
}
?>
</table>
<br>
</table><br/>

Share this post


Link to post
Share on other sites
tiago.f

Olá,

quantos registos tem a tabela? Se só tiver 1 então não vais ver nada porque tens

$informacao = mysqli_fetch_array($resultado);
[...]
while( $informacao = mysqli_fetch_array($resultado) ){
$id_evento = $informacao["id_evento"];
[...]

O que faz com que o 1º registo seja ignorado (não fazes nada com ele).

ps: já agora o ficheiro basedados.h é um ficheiro php certo? (e não um ficheiro header de C como a extensão sugere....)

Edited by tiago.f

Share this post


Link to post
Share on other sites
looord

a tabela tens 2 registos (2 eventos sobre caça)

o ficheiro basedados.h é a conecao à base de dados:

<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$ligacao = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $ligacao ){
 die('Could not connect: ' . mysqli_error());
}
//Seleciona a base de dados
mysqli_select_db($ligacao, 'ac');
?>

O problema é que no mac do meu colega, o código funciona e no meu computador não.

Share this post


Link to post
Share on other sites
tiago.f

Deves também usar mysql_fetch_assoc em vez de mysql_fetch_array, se queres usar:

$id_evento = $informacao["id_evento"];

em vez de

$id_evento = $informacao[0];

Share this post


Link to post
Share on other sites
looord

Tentei trocar o fetch_array pelo assoc, mas continua a imprimir a tabela vazia

Share this post


Link to post
Share on other sites
looord

Já consegui resolver o problema, agora precisava criar uma combo box com dados do sql, mas por algum motivo, a combo box aparece vazia:

$query = "select U.nome, from utilizador U where U.tipo_utilizador != 1";
$resultado=mysqli_query($ligacao,$query);
echo '<select name=”nome”>';

//para todas as linhas da tabela
while($row = mysqli_fetch_array($resultado))
{
echo '<option value="' .$row['nome'].  '</option>';
}
echo '</select>';

Share this post


Link to post
Share on other sites
tiago.f

E qual era o problema?

Quanto à combobox :

- FETCH_ASSOC

- estas a gerar HTML inválido com esse echo dos <option>

Share this post


Link to post
Share on other sites
looord

ja tenho a combo box a funcionar, mas agora precisava de selecionar o valor da combox e apagar na base de dados :

<?php 
ob_start();
session_start();
require("basedados.h");

$query = "select * From utilizador";
echo "<table border='1'>
 <tr>
 <th>n_socio</th>
 <th>username</th>
 <th>nome</th>
 <th>password</th>
 <th>tipo_utilizador</th>
 <th>morada</th>
 <th>telemovel</th>
 <th>email</th>
 <th>n_cidadao</th>
 <th>n_cacador</th>
 </tr>";
$resultado = mysqli_query($ligacao,$query);
while($row = mysqli_fetch_array($resultado)){// vai buscar ha base de dados os dados nela guardada e poem os na tabela
 //echo "<tr><td>".$row['img_capa']."</td>";
			    //IMAGENS SINCRONIZAÇÂO!!!!!!!!!!!!!!!
 echo "<td>".$row['n_socio']."</td>";
 echo "<td>".$row['username']."</td>";
 echo "<td>".$row['nome']."</td>";
 echo "<td>".$row['password']."</td>";
 echo "<td>".$row['tipo_utilizador']."</td>";
 echo "<td>".$row['morada']."</td>";
 echo "<td>".$row['telemovel']."</td>";
 echo "<td>".$row['email']."</td>";
 echo "<td>".$row['n_cidadao']."</td>";
 echo "<td>".$row['n_cacador']."</td>";
 echo "</tr>";
}
echo "</table>";
?>  


<html>  
 <form action="presidente_apaga_utilizadores.php" method="post">
   Selecione o ID a apagar:
 <select name="id">
  <option value=""></option>
 </form>
   <?php
    require("basedados.h");
    $sql="SELECT nome FROM utilizador where tipo_utilizador !=1";
    $result = mysqli_query($ligacao, $sql);
    while($row = mysqli_fetch_array($result)){
	 $nome = $row["nome"];;
	 echo '<option value="' . $nome .'">' . $nome . '</option>';
    }
   ?>

 </select>
   <input type="submit" value="Submit"><br>

  <?php

  if ($submit) {
   require("basedados.h");
   $sql = "DELETE FROM username WHERE username = $submit";
   $resultado = mysql_query($sql);
   echo " Registo Apagado!<p>";
  }
   ?>
</html>

Vou explicar melhor: o que eu queria era que quando o utilizador seleciona-se um dos nomes que são apresentados na combobox e clica-se no botão submit, na base de dados fosse eliminado o utilizador.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.