Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Drumente

Mostrar nome associado em vez de codconcelho

Recommended Posts

Ola a todos.

Eu tenho 2 tabelas no mysql, uma com o nome concelho e outra com o nome escolas e as linhas pertencentes são estas:

 

Tabela concelho:

(primary key) codconcelho;

nome;

 

Tabela escolas:

(primary key) codigo;

escola;

(secondary key ligada a codconcelho) concelho;

 

Eu tenho uma tabela que mostra os dados da tabela escola ao usar um recordset, mas eu

queria que em vez de mostrar o codconcelho associado na tabela concelho, mostrasse o nome.

O codigo e este:

 

<?php require_once('../Connections/ligbd.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
 if (PHP_VERSION < 6) {
	$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
 }

 $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

 switch ($theType) {
	case "text":
 	$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
 	break;	
	case "long":
	case "int":
 	$theValue = ($theValue != "") ? intval($theValue) : "NULL";
 	break;
	case "double":
 	$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
 	break;
	case "date":
 	$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
 	break;
	case "defined":
 	$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
 	break;
 }
 return $theValue;
}
}

$currentPage = $_SERVER["PHP_SELF"];

$maxRows_RsEscolas = 10;
$pageNum_RsEscolas = 0;
if (isset($_GET['pageNum_RsEscolas'])) {
 $pageNum_RsEscolas = $_GET['pageNum_RsEscolas'];
}
$startRow_RsEscolas = $pageNum_RsEscolas * $maxRows_RsEscolas;

mysql_select_db($database_ligbd, $ligbd);
$query_RsEscolas = "SELECT * FROM escolas ORDER BY nome ASC";
$query_limit_RsEscolas = sprintf("%s LIMIT %d, %d", $query_RsEscolas, $startRow_RsEscolas, $maxRows_RsEscolas);
$RsEscolas = mysql_query($query_limit_RsEscolas, $ligbd) or die(mysql_error());
$row_RsEscolas = mysql_fetch_assoc($RsEscolas);

if (isset($_GET['totalRows_RsEscolas'])) {
 $totalRows_RsEscolas = $_GET['totalRows_RsEscolas'];
} else {
 $all_RsEscolas = mysql_query($query_RsEscolas);
 $totalRows_RsEscolas = mysql_num_rows($all_RsEscolas);
}
$totalPages_RsEscolas = ceil($totalRows_RsEscolas/$maxRows_RsEscolas)-1;

mysql_select_db($database_ligbd, $ligbd);
$query_RsConcelho = "SELECT * FROM concelho";
$RsConcelho = mysql_query($query_RsConcelho, $ligbd) or die(mysql_error());
$row_RsConcelho = mysql_fetch_assoc($RsConcelho);
$totalRows_RsConcelho = mysql_num_rows($RsConcelho);

$queryString_RsEscolas = "";
if (!empty($_SERVER['QUERY_STRING'])) {
 $params = explode("&", $_SERVER['QUERY_STRING']);
 $newParams = array();
 foreach ($params as $param) {
	if (stristr($param, "pageNum_RsEscolas") == false && 
 	stristr($param, "totalRows_RsEscolas") == false) {
 	array_push($newParams, $param);
	}
 }
 if (count($newParams) != 0) {
	$queryString_RsEscolas = "&" . htmlentities(implode("&", $newParams));
 }
}
$queryString_RsEscolas = sprintf("&totalRows_RsEscolas=%d%s", $totalRows_RsEscolas, $queryString_RsEscolas);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
<link href="../mm_health_nutr.css" rel="stylesheet" type="text/css" />
</head>

<body>
<table border="0">
 <tr>
	<td width="20"> </td>
	<td class="pageName" width="180">Escolas...</td>
	<td width="150"> </td>
	<td width="300" align="right"><a href="insescolas.php">Insere novo</a></td>
 </tr>
</table>


<table width="650" border="0">
 <tr>
	<td width="20"> </td>
	<td>
<?php if ($totalRows_RsEscolas > 0) { // Show if recordset not empty ?>
 <p class="bodyText">Registros <?php echo ($startRow_RsEscolas + 1) ?> a <?php echo min($startRow_RsEscolas + $maxRows_RsEscolas, $totalRows_RsEscolas) ?> de <?php echo $totalRows_RsEscolas ?>
 </p>
 <table border="1" cellpadding="0" cellspacing="0">
	<tr>
 	<td width="200" class="subHeader">Código</td>
 	<td width="250" class="subHeader"><strong>Escola</strong></td>
 	<td width="250" class="subHeader">Concelho</td>
	</tr>
	<?php do { ?>
 	<tr>
 	<td><?php 
				echo $row_RsEscolas['codigo'];
				$cc=$row_RsEscolas['codigo'];
			?></td>
 	<td><a href="verescolas.php?cd=<?php echo"$cc";?>"><?php echo $row_RsEscolas['nome']; ?></a></td>
 	<td><?php echo $row_RsConcelho['nome']; ?></td>
 	</tr>
 	<?php } while ($row_RsEscolas = mysql_fetch_assoc($RsEscolas)); ?>
 </table>
 <table border="0">
	<tr>
 	<td><?php if ($pageNum_RsEscolas > 0) { // Show if not first page ?>
 	<a href="<?php printf("%s?pageNum_RsEscolas=%d%s", $currentPage, 0, $queryString_RsEscolas); ?>">Primeiro</a>
 	<?php } // Show if not first page ?></td>
 	<td><?php if ($pageNum_RsEscolas > 0) { // Show if not first page ?>
 	<a href="<?php printf("%s?pageNum_RsEscolas=%d%s", $currentPage, max(0, $pageNum_RsEscolas - 1), $queryString_RsEscolas); ?>">Anterior</a>
 	<?php } // Show if not first page ?></td>
 	<td><?php if ($pageNum_RsEscolas < $totalPages_RsEscolas) { // Show if not last page ?>
 	<a href="<?php printf("%s?pageNum_RsEscolas=%d%s", $currentPage, min($totalPages_RsEscolas, $pageNum_RsEscolas + 1), $queryString_RsEscolas); ?>">Próximo</a>
 	<?php } // Show if not last page ?></td>
 	<td><?php if ($pageNum_RsEscolas < $totalPages_RsEscolas) { // Show if not last page ?>
 	<a href="<?php printf("%s?pageNum_RsEscolas=%d%s", $currentPage, $totalPages_RsEscolas, $queryString_RsEscolas); ?>">Último</a>
 	<?php } // Show if not last page ?></td>
	</tr>
 </table>
 <?php } // Show if recordset not empty ?>
<?php if ($totalRows_RsEscolas == 0) { // Show if recordset empty ?>
 <p class="bodyText">Ainda não Existem Escolas</p>
 <?php } // Show if recordset empty ?>
</td>
 </tr>
</table>
</body>
</html>
<?php
mysql_free_result($RsEscolas);

mysql_free_result($RsConcelho);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estive a ver o seu código e conclui que pretende mostrar na pesquisa o nome do conselho através da variável $row_RsConcelho['nome'].

 

Em primeiro lugar tenho a lhe perguntar porquê que não junta ambas as tabelas numa só, pois teria resolvido logo o problema.

Segundo, se pretende usar 2 tabelas a solução está apenas da forma como cria as consultas. Pelo que percebi a "secondary key" vai buscar o valor da "primary key" da tabela concelho.

 

Se estou correcto no que afirmei anteriormente saberei dar-lhe a resposta que pretende. Para isso basta segui as minhas instruções.

 

 

Passo 1: Copie e elimine o código responsável pela consulta à tabela concelho.

 

Passo 2: Cole o código dentro da célula que mostra o nome do conselho.

 

Passo 3: Definir a instrução $IDcodconcelho = $row_RsEscolas['concelho']; antes do código da consulta do Passo 2.

 

Passo 4: $query_RsConcelho = sprintf("SELECT * FROM concelho WHERE codconcelho = $IDcodconcelho");

 

Passo 5: Após substituir o código anterior na consulta da tabela conselho a variável $row_RsConcelho['nome'] já mostrará correctamente.

 

 

O que tentei explicar é que você tem de fazer uma consulta específica à tabela concelho onde o parâmetro a pesquisar é fornecido pela secondary key. Após isso a $row_RsConcelho['nome'] passa a estar definida.

 

Para facilitar mostro o código abaixo de como este deve ficar na célula que mostra o nome do conselho.

 

<?php 

$IDcodconcelho = $row_RsEscolas['concelho'];

mysql_select_db($database_ligbd, $ligbd);
$query_RsConcelho = sprintf("SELECT * FROM concelho WHERE codconcelho = $IDcodconcelho");
$RsConcelho = mysql_query($query_RsConcelho, $ligbd) or die(mysql_error());
$row_RsConcelho = mysql_fetch_assoc($RsConcelho);
$totalRows_RsConcelho = mysql_num_rows($RsConcelho);

echo $row_RsConcelho['nome']; 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.