Jump to content
Sir Pereira

Vários Queries de SQL

Recommended Posts

Sir Pereira

Boas pessoal,

estou a criar a página inbox.php da minha página, que irá listar as mensagens recebidas bem como processar umas que são enviadas para não estar a criar mais uma página desnecessária para fazer o INSERT na BD.

E estou com uma dúvida. Na página inbox ainda faço uns quantos queries à BD, tanto de SELECT para fazer JOIN para ir à procura de algum valor, por exemplo, tenho o id de um SQL anterior, e a seguir vou fazer um JOIN para saber um valor (nome por ex.) com o id anterior.

E faço isto umas 2 ou 3 vezes.

Faz algum mal?

Pessoalmente não me sinto bem a fazer isto, mas não estou a ver nenhuma solução mais optimizada.

Agradeço sugestões, abraço,.

Share this post


Link to post
Share on other sites
ruimcosta

Podes mostrar o codigo, para termos uma melhor percepção?


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
Sir Pereira

O código está bem abadalhocado, vai ter de ser reformulado a partir do momento em que estiver funcional, estou agora a fazer umas experiências com um join que estou a fazer listar as mensagens do inbox. Mas aqui vai. :medo:

<?php require('../config.php');

require_once(ROOT_DIR.'/tpl/topo.php');

?>
</head>

<body onload="UR_Start()">
	<div id="barra_topo">
		<span id="ur" class="hora"></span>
		<?php include(ROOT_DIR.'/tpl/menu_topo.php'); ?>
		<?php include(ROOT_DIR.'/tpl/menu_dir.php'); ?>
	</div><!-- barra_topo -->

                <div id="blc_geral">

	<h1 class="titulo">Caixa de Entrada</h1>

				<?php

					if (
					(isset($_GET['envia'])) AND
					($_GET['envia'] == true) AND
					(isset($_GET['tipo'])) AND ($_GET['tipo'] == 'categoria') AND
					($_POST['de']) AND (is_numeric($_POST['de']))
					AND ($_POST['para']) AND (is_numeric($_POST['para']))
					AND ($_POST['assunto']) AND ($_POST['mensagem'])) {
                                                    

						foreach(array_keys($_POST) as $key) {
							$limpo[$key] = mysql_real_escape_string($_POST[$key]);
						}

						// SE FOR O TIPO ESCOLHIDO DO POST DO SELECT DO NOVA.PHP FOR = INDIVIDUAL ENTAO
						// ATRIBUI A VARIAVEL $_SESSION['id'] À VARIAVEL Q VAI PARA A BD
						if ($limpo['de'] == $_SESSION['id']) {
							$de_tipo = 'individual';
						} else {
							$de_tipo = 'categoria';
						}


                                                       $sql_select_users = mysql_query("
                                                        SELECT scie_users.id AS user_id,scie_users.cargo AS user_cargo,scie_users_cats.id AS cat_id,scie_users_cats.valor AS cat_valor
                                                        FROM scie_users,scie_users_cats
                                                        WHERE scie_users_cats.id = '$limpo[para]' AND scie_users.cargo = scie_users_cats.valor
                                                        ");

                                                        if ($sql_select_users) {

							while ($dados = mysql_fetch_assoc($sql_select_users)) {

                                                                    $sql_enviamsg = mysql_query("
                                                                    INSERT INTO scie_msgs (de,para,de_tipo,para_tipo,assunto,msg)
                                                                    VALUES('$limpo[de]','$dados[user_id]','$de_tipo','$_GET[tipo]','$limpo[assunto]','$limpo[mensagem]')
                                                                    ");

							}

                                                                echo '<div style="background:#000;padding:5px;color:#FEFEFE;font:14px Helvetica,Arial,sans-serif;">A mensagem foi enviada com sucesso!</div>';


						} else {
							echo mysql_error();
						}


					} elseif (
					(isset($_GET['envia'])) AND
					($_GET['envia'] == true) AND
					(isset($_GET['tipo'])) AND ($_GET['tipo'] == 'individual') AND
					($_POST['de']) AND (is_numeric($_POST['de']))
					AND ($_POST['para']) AND (is_numeric($_POST['para']))
					AND ($_POST['assunto']) AND ($_POST['mensagem'])
					) {


                                                    
						foreach(array_keys($_POST) as $key) {
							$limpo[$key] = mysql_real_escape_string($_POST[$key]);
						}

						// SE FOR O TIPO ESCOLHIDO DO POST DO SELECT DO NOVA.PHP FOR = INDIVIDUAL ENTAO
						// ATRIBUI A VARIAVEL $_SESSION['id'] À VARIAVEL Q VAI PARA A BD
						if ($limpo['de'] == $_SESSION['id']) {
							$de_tipo = 'individual';
						} else {
							$de_tipo = 'categoria';

						//SE O TIPO ESCOLHIDO NO POST DO SELECT DO NOVA.PHP FOR = CATEGORIA ENTÃO VAI BUSCAR O VALOR
						// DA CATEGORIA À BD
							$sql_detipo = mysql_query("SELECT
                                                                scie_users.id,scie_users.cargo,scie_users_cats.valor,scie_users_cats.id AS cat_id
							FROM scie_users,scie_users_cats WHERE
							scie_users.id = '$_SESSION[id]'
							AND scie_users.cargo = scie_users_cats.valor");

							if ($sql_detipo) {
									while ($dados = mysql_fetch_assoc($sql_detipo)) {
										$limpo['de'] = $dados['cat_id'];
									}
							} else {
									echo mysql_error();
							}
						}





						$sql_enviamsg_cat = mysql_query("
                                                                INSERT INTO scie_msgs (de,para,de_tipo,para_tipo,assunto,msg)
                                                                VALUES('$limpo[de]','$limpo[para]','$de_tipo','$_GET[tipo]','$limpo[assunto]','$limpo[mensagem]')
                                                                ");

						if ($sql_enviamsg_cat) {
							echo '<div style="background:#000;padding:5px;color:#FEFEFE;font:14px Helvetica,Arial,sans-serif;">A mensagem foi enviada com sucesso!</div>';
						} else {
							echo mysql_error();
						}












					}



				// LISTA INBOX
				$sql_list_msgs = mysql_query("SELECT scie_users.id,scie_users.nome AS user_nome,scie_msgs.de_tipo AS msg_detipo,scie_msgs.hora AS msg_hora,scie_msgs.assunto AS msg_assunto,scie_msgs.de,scie_msgs.id AS msg_id,scie_msgs.para FROM scie_msgs,scie_users,scie_users_cats WHERE scie_msgs.para = '$_SESSION[id]' AND ((scie_msgs.de = scie_users.id) OR (scie_msgs.de = scie_users_cats.id)) ORDER BY scie_msgs.hora DESC");


				if ($sql_list_msgs) {
                                            if (mysql_num_rows($sql_list_msgs) <= 0) {
                                                echo "Não tens mensagens na sua caixa de entrada!";
                                                exit;
                                            }
                                        }

				?>

				<?php
					if (
					(isset($_GET['marcarcomonaolido'])) AND
					($_GET['marcarcomonaolido']) AND (is_numeric($_GET['marcarcomonaolido']))) {

						// ESPAÇO PARA CÓDIGO SQL PARA SE HOUVER UM ID NUMERICO COM A VARIAVEL
						// MARCAR COMO NAO LIDO ENTÃO ELE VAI FAZER UPDATE AO VALOR READ
						// DO ID DA MENSAGEM PASSADO POR GET DA TABELA MENSAGENS

						//echo $_GET['marcarcomonaolido']." - ".gettype($_GET['marcarcomonaolido']);

					}
				?>

							<table class="inbox">
								<thead>
									<tr>
										<th class="data">Data</th>
										<th class="de">De</th>
										<th class="titulo">Título</th>
										<th>Acção</th>
									</tr>
								</thead>

								<tbody>


<?php
					if ($sql_list_msgs) {
						while ($dados = mysql_fetch_assoc($sql_list_msgs)) {
?>
                                                                                <tr><!-- item -->
										<td class="data">
											<?php echo $dados['msg_hora']; ?>
										</td>

										<td class="de">

                                                                                        <?php
                                                                                            if ($dados['msg_detipo'] == 'individual') { ?>
                                                                                                <a href="<?php echo HTTP_DIR; ?>/users/perfil.php?id=<?php echo $dados['de']; ?>"><?php echo $dados['user_nome']; ?></a>
                                                                                        <?php

                                                                                            }

                                                                                        ?>
										</td>

										<td class="titulo">
											<a href="<?php echo HTTP_DIR; ?>/msgs/ver.php?id=<?php echo $dados['msg_id']; ?>"><strong><?php echo $dados['msg_assunto']; ?></strong></a>
										</td>

										<td class="accao">
											<ul class="accao">

												<li>
													<a href="<?php echo HTTP_DIR; ?>/msgs/inbox.php?marcarcomonaolido=<?php echo $dados['msg_id']; ?>">Marcar como lido</a>
												</li>

												<li>
													<a href="<?php echo HTTP_DIR; ?>/msgs/eliminar.php?id=<?php echo $dados['msg_id']; ?>">Apagar</a>
												</li>

											</ul>
										</td>
									</tr><!-- item -->

		<?php
                                }
                                } else {
				echo mysql_error();
			}
		?>

                                                                        </tbody>
                                                                </table>

	</div><!-- blc_geral -->

<?php require_once(ROOT_DIR.'/tpl/footer.php'); ?>

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.