Larback - Retornando conhecimento

Sempre pode piorar, use a imaginação.

Paginação e UPload

O exemplo abaixo mostra como paginar resultados em PHP e como fazer upload de imagens. O arquivo que faz a conexão como banco não foi postado... se vc não sabe como fazer uma conexão ao banco não deveria estar lendo esse artigo, comece por algo mais básico. Esse script usa duas tabelas, a saber: CREATE TABLE `estados` ( `sigla` varchar(2) DEFAULT NULL, `descricao` varchar(30) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 e CREATE TABLE `clientes` ( `codigo` int(11) NOT NULL AUTO_INCREMENT, `nome` varchar(200) DEFAULT NULL, `cpf` varchar(20) DEFAULT NULL, `endereco` varchar(200) DEFAULT NULL, `numero` varchar(200) DEFAULT NULL, `bairro` varchar(200) DEFAULT NULL, `complemento` varchar(200) DEFAULT NULL, `uf` varchar(2) DEFAULT NULL, `foto` varchar(250) DEFAULT NULL, PRIMARY KEY (`codigo`)) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
<style type="text/css">
input{
    border:1pt black solid;
  }
  td{
    font-family:'verdana';
  }
</style>
<form action="cadCli.php" 
method="post" enctype="multipart/form-data">
<table>
<tr bgcolor='#cccccc'><td colspan=2 align='center'>
<font face='verdana' size='2'>Cadastro de Clientes</td></tr>
<tr><td>C&oacute;digo</td><td><input type="text" size="8" value="Autom&aacute;tico" readonly /></td></tr>
<tr><td>Nome</td><td><input type="text" name="txtnome" size="50" /></td></tr>
<tr><td>CPF</td><td><input type="text" name="txtcpf" size="24" /> </td></tr>
<tr><td>Foto</td><td><input type="file" name="flfoto" /> </td></tr>
<tr bgcolor="#cccccc"><td colspan="2"> </td></tr>
<tr><td>Endere&ccedil;o</td><td><input type="text" name="txtendereco" size="50" /></td></tr>
<tr><td>N&ordm;</td><td><input type="text" name="txtnumero" size="10" /> 
                        Bairro <input type="text" name="txtbairro" size="24"/></td></tr>
<tr><td>Compl.</td><td><input type="text" name="txtcomplemento" size="24" /> </td></tr>
<tr><td>Estado</td><td><select name="cbouf" />

<?php
include("conexao.php");
  $rs=mysql_query("select * from estados order by sigla");
  if (mysql_num_rows($rs)>0){
    while($ln=mysql_fetch_array($rs,MYSQL_ASSOC)){
      echo "<option value='".$ln['sigla']."'>".$ln['descricao']."</option>";
    }
  }
  else
    echo "<option value=''>Cadastre um estado primeiro</option>";
?>
</select>

 </td></tr>
<tr><td colspan="2" align="right">
          <input type="submit" value="Adicionar" name="cmdAdd" />
          </td></tr>
</table>
</form>

<hr color="grey">
<form action="cadCli.php" method="get">
Nome:<input type="text" name="txtPNome" size=50>
<input type="submit" name="cmdPesquisar" value='Pesquisar'><br />
<input type='radio' name='optParametro' value='I' checked>No começo
<input type='radio' name='optParametro' value='Q'>Qualquer parte
</form>
<hr color="grey">


<?php
if (isset($_POST['cmdAdd'])){
$nome = $_POST['txtnome'];
$cpf = $_POST['txtcpf'];
$endereco = $_POST['txtendereco'];
$numero = $_POST['txtnumero'];
$bairro = $_POST['txtbairro'];
$complemento = $_POST['txtcomplemento'];
$uf = $_POST['cbouf'];


$sql = "insert into clientes (nome,cpf,endereco,numero,bairro,complemento,uf)
values ('$nome','$cpf','$endereco','$numero','$bairro','$complemento','$uf')";

mysql_query($sql) or die(mysql_error());

$codigoChave = mysql_insert_id();

$arq=isset($_FILES['flfoto']) ? $_FILES['flfoto'] : false;
if ($arq) {
    if(!eregi("(jpg|jpeg|png|gif|bmp)", $arq["type"])) {
		echo ("<table><tr><td>&nbsp;</td><td><font face='verdana' size='1'>
     O arquivo enviado não é uma imagem válida. 
     A imagem deve ser um arquivo JPG, GIF, PNG ou BMP.
     </font></td></tr></table>");
		mysql_query("delete from clientes where codigo=$codigoChave");
		die("");
	}
	
	$id_imagem="fotos/" .$codigoChave.".". $arq['name'];
	if(move_uploaded_file($arq['tmp_name'],$id_imagem)){
		mysql_query("update clientes set foto='$id_imagem' where codigo=$codigoChave");
		echo "<font face='verdana' size='1'>Cliente inclu&iacute;do com sucesso.</font>";
	} 		 
	
}
}

if (isset($_GET['cmdPesquisar'])) {
  $QTOS_POR_PAGINA=2;
  $pNome = $_GET['txtPNome'];
  $parametro = $_GET['optParametro'];
  $parametro =="I" ? $condicao = " where nome like '$pNome%' " 
  : $condicao = " where nome like '%$pNome%' " ;
  $sql = "select codigo, nome, foto from clientes " .$condicao;
  $pagina = $_GET["pagina"]; 
  if (!$pagina) { 
    $inicio = 0; 
    $pagina=1; 
  } else { 
    $inicio = ($pagina - 1) * $QTOS_POR_PAGINA; 
  }
  $rs = mysql_query($sql);
  $QTE_PAGINAS = ceil(mysql_num_rows($rs)/$QTOS_POR_PAGINA);
  $sql .= " limit $inicio, $QTOS_POR_PAGINA";
  $rs = mysql_query($sql);
  echo "<table style=\"border:1pt black dotted;\">
    <tr bgcolor='#dcdcdc'>
    <td>C&oacute;digo</td><td>Nome</td><td></td></tr>";
  while ($ln = mysql_fetch_array($rs,MYSQL_ASSOC)){
    echo "<tr><td>". $ln['codigo']."</td><td>".$ln['nome'].
    "</td><td><img src='".$ln['foto']."' width=80 /></td></tr>";
  }
  echo "</table>";
  for ($i=1;$i<=$QTE_PAGINAS;$i++){ 
       if ($pagina == $i)  
          echo "[$pagina] "; 
       else  
echo "<a href='cadCli.php?pagina=$i&txtPNome=$pNome&optParametro=$parametro&cmdPesquisar'>" . $i . "</a> "; 
    } 
}
?>
Só pra lembrar... os <BR> não fazem parte do código... são parte de um BUG que um dia eu corrigirei. Mas é fácil de vc saber quando é um BR de verdade e quando é o BUG... os BR pra valer estão escritos dentro dos padrões da W3C ou seja <br /> Bons estudos.