PHP - Variáveis não definidas ao abrir pagina. Como evitar?

Olá Pessoal!

As vezes, construo alguma coisa em php que, durante o uso todo tá certinho, redondo, contudo, quando a página carrega do zero, várias mensagens aparecem de variaveis não definidas. Tudo volta ao normal quando utilizo o select da pagina para filtrar os dados.

Como evitar estas mensagens? Já utilizei algumas alternativas mas que não ficaram boas.

Exemplo de mensagens:

Notice: Undefined index: idMaterial in C:\xampp\htdocs\sisagenda\contEstoque.php on line 79

Notice: Undefined variable: codprod in C:\xampp\htdocs\sisagenda\contEstoque.php on line 100

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\sisagenda\contEstoque.php on line 102
Preencha os campos de busca.
Notice: Undefined index: idMaterial in C:\xampp\htdocs\sisagenda\contEstoque.php on line 129

Como disse: basta acionar o select e escolher uma opção que tudo funciona redondo. Tenho apenas que evitar que elas apareçam.

Código do problema:

    <?php
    include "conectame.php";

        $sql = "SELECT * FROM produtos WHERE tipo = 'P'";
        $rs = mysql_query($sql) or die(mysql_error());
    ?>
    
    
    Edição de Dados de Agendamento
    

    
     
    
    

Controle de Estoque


Escolha ... <?php while($row = mysql_fetch_array($rs)){ echo ("$row[codprod] - $row[nome]"); } echo ""; ?>

<?php if(isset($_POST['submit'])){ $sql = mysql_query("select * from produtos where codprod='".$_POST['idMaterial']."'") or die(mysql_error()); while($row = mysql_fetch_array($sql)){ $codprod = $row['codprod']; $emb = $row['Embalagem']; $nome = $row['nome']; $fab = $row['fabricante']; echo ""; echo""; echo ""; echo""; echo ""; echo""; } } echo "
Produto:"; echo $nome; echo"Embalagem:"; echo $emb; echo"Fabricante:"; echo $fab; echo"
"; echo""; echo "
"; ?>

Entradas

<?php $pesq = "SELECT * FROM entradas WHERE cod_prod = $codprod"; $sql = mysql_query($pesq); $numlinhas = mysql_num_rows($sql); if ($numlinhas > 0) { $totalentrada = 0 ?> <?php while($row = mysql_fetch_array($sql)){ $data=date("d/m/Y", strtotime($row['DATAMOV'])); $valor = 'R$ ' . number_format($row['VALOR'], 2,',','.'); $valorcli = 'R$ ' . number_format($row['VR_CLIENTE'], 2,',','.'); echo ""; echo""; echo""; echo""; echo""; echo""; echo""; echo""; echo ""; } } else { echo "Preencha os campos de busca."; } $sumqtde = mysql_query("SELECT SUM(QUANTENTRADA) FROM entradas where cod_prod='".$_POST['idMaterial']."'"); while($sum = mysql_fetch_array($sumqtde)){ $somaentradas = number_format($sum['SUM(QUANTENTRADA)'], 0,',','.'); } ?>
Data QuantEntr Destino Cod_Est Valor Vr_Cliente Fornecedor
$data$row[QUANTENTRADA]$row[DESTINO]$row[COD_EST]$valor$valorcli$row[FORNECEDOR]

Saídas

<?php $pesq = "SELECT * FROM saidas WHERE cod_prod = $codprod"; $sql = mysql_query($pesq); $numlinhas = mysql_num_rows($sql); if ($numlinhas > 0) { ?> <?php while($row = mysql_fetch_array($sql)){ $data=date("d/m/Y", strtotime($row['DATAMOV'])); echo ""; echo""; echo""; echo""; echo""; echo ""; } } else { echo "Preencha os campos de busca."; } $sumsaida = mysql_query("SELECT SUM(QUANTSAIDA) FROM saidas where cod_prod='".$_POST['idMaterial']."'"); while($sum = mysql_fetch_array($sumsaida)){ // $soma = 'R$ ' . number_format($sum['SUM(QUANTSAIDA)'], 2,',','.'); $somasaidas = number_format($sum['SUM(QUANTSAIDA)'], 0,',','.'); } ?>
Data Quant.Saida Destino Cod_Est
$data$row[QUANTSAIDA]$row[DESTINO]$row[COD_EST]

<?php echo ""; echo ""; echo ""; echo "
Total de entradas: ".($somaentradas)."Total de saídas: ".($somasaidas)."
"; echo "Total de estoque atual de ".$nome.": ".($somaentradas - $somasaidas); ?>

Nota: a indentação não ficou das melhores. Ainda vou me acostumar com este editor.

Boa tarde Messias,

Analisando seus fontes, tem bastante pontos de melhorias que serão necessários.

Da uma estudada no padrão MVC e também eu sugiro você utilizar a framework CodeIgniter para PHP, ela é muito produtiva e fácil.

Outro ponto é a segurança do Site, você precisa tratar as
variáveis do POST, contra os ataques XSS e SQL injection, utilizando as funções
de PHP strip_tags, addslashes, htmlspecialchars e outras tratativas.

Você poderia utilizar PDO, ao invés de mysqli… Seu site esta muito vulnerável a SQL Injection

Valeu Vinicius.
Vou observar com cuidado sua sugestão.

Obrigado.

Valeu ninja.

Vou dar uma olhada e ver o que posso fazer para prevenir invasões.

Obrigado!