Ajuda em php?

Olá… preciso de uma ajuda…

Preciso fazer uma paginação de fotos?.
essas fotos vão estão em diretórios,(que serão como galerias)
preciso que o programa varra o diretório e coloque numa <table> todas as fotos em miniaturas de 80×80(na proporção), e ao clicar na foto ele abra grande pra a visualização(isso consigo em js sem problemas).

Também nesse programa preciso que cada célula da tabela tenha um checkbox embaixo, para poder selecionar a foto…e ao paginar e voltar a seleção do checkbox deve continuar, e no fim da pagina um botão para enviar, que ao acionar deve mandar um e-mail indicando as fotos que foram selecionadas.

É bem a ideia de um e-commerce de fotos.
Pra ter uma idéia…
é +/- isso que quero
exemplo

Até já tentei fazer pegando partes de códigos na net mas não deu certo, pois não conseguir integrar, nem fazer a paginação.

Infelizmente tenho que fazer em PHP pois a hospedagem do meu cliente não aceita java, e ele não quer pagar a mais para isso…!

alguem poderia me ajudar ??

Olá guilherme_ha, td bem?

PHP é muito fácil, não precisa se assustar com a linguagem, tem muito conteúdo na web e você poderá fazer o sistema que o seu cliente quer.

Faça assim para varrer o diretório, colocar as fotos numa tabela e colocar o checkbox embaixo:

<table width='100%' border='0'>

	<?php
	$dir = '../fotos'; //diretório onde estão as imagens
	$handle=opendir($dir);
	$i=0;
	$j = 0;
		while ($file = readdir($handle)) {
			if (eregi("jpg$",$file) || eregi("gif$",$file) || eregi("png$",$file)){
				if($i == 0 || $j == 5)
				{
				  $j = 0;
				  echo('<tr>');
				}
	?>
	
	<td>
		<img src="<?php echo($dir . '/' . $file) ?>" border='0' width="80">
		<!-- ache (por favor, não deixe assim ) uma classe para thumbs aqui, 
		para redimensionar automaticamente -->
		<br>
		<input type="checkbox" name="nome_foto" id="nome_foto" value="<?php echo($file) ?>" />
		<?php echo($file) ?>&nbsp;
	</td>
	
	<?php
	if($j == 4)
	{
		echo('</tr>');    
	}
	$j=$j+1;
	$i=$i+1;
	};
	};
	closedir($handle);
	?> 

	</table>

Olá…
muito obrigado pela ajuda…
funcionou certinho…

Agora como faço uma paginação simples ?
tipo minha tabela vai ser de 5 col. por 10 lin.

so que há umas 200 fotos no diretório…
então vou precisar paginar…
eu até baixei uns exemplo na net… e até consegui fazer carregar as imagens
só que nao funcionou o principal… a paginacao…
segue o codigo pra vc ver se é facil de acertar…

se você pode me ajudar
tem msn ou e-mail de contato mais rapido ???

Mais uma vez muito obrigado…!!

arquivo sgallery.class.php

[code]
<?
Class sGallery{

var $dirs;
var $name;
var $images = array();
var $thumbs = array();
var $nimg;
var $nthu;

var $error = array();
var $hcolor;
var $fcolor;
var $bcolor;
var $border;
var $nav;

function sGallery($name=&quot;&quot;, $d=&quot;.&quot;){
	$this-&gt;dirs = $d;
	$this-&gt;nimg = 0;
	$this-&gt;nthu = 0;
	$this-&gt;name = $name;
	$this-&gt;style();

	if(!($d = opendir($this-&gt;dirs.&quot;/images&quot;))) array_push($this-&gt;error,&quot;<b>ERROR:</b> Can't open image dir<br>&quot;);
	while ($f = readdir($d)) {
		if (eregi(&quot;\.jpg&quot;,$f) || eregi(&quot;\.jpeg&quot;,$f) || eregi(&quot;\.png&quot;,$f)){ 
			array_push($this-&gt;images,&quot;$f&quot;);
			$this-&gt;nimg++;
		}
	}
	if(!$this-&gt;nimg) array_push($this-&gt;error,&quot;<b>ERROR:</b> No files found in image dir<br>&quot;);

	if(!($d = opendir($this-&gt;dirs.&quot;/thumbs&quot;))) array_push($this-&gt;error,&quot;<b>ERROR:</b> Can't open thumb dir<br>&quot;);
	while ($f = readdir($d)) {
		if (eregi(&quot;\.jpg&quot;,$f) || eregi(&quot;\.jpeg&quot;,$f) || eregi(&quot;\.png&quot;,$f)){ 
			array_push($this-&gt;thumbs,&quot;$f&quot;);
			$this-&gt;nthu++;
		}
	}
	if(!$this-&gt;nthu) 
        array_push($this-&gt;error,&quot;<b>ERROR:</b> No files found in thumb dir<br>&quot;);
	if($this-&gt;nimg != $this-&gt;nthu) 
        array_push($this-&gt;error,&quot;<b>ERROR:</b> images != thumbs<br>&quot;);
}

function style($hcolor = &quot;NULL&quot;, $bcolor = &quot;NULL&quot;, $fcolor = &quot;NULL&quot;, $border=0, $nav=&quot;auto&quot;){
	$this-&gt;hcolor = $hcolor;
	$this-&gt;fcolor = $fcolor;
	$this-&gt;bcolor = $bcolor;
	$this-&gt;border = $border;
	$this-&gt;nav    = $nav;
}

function show($p, $nc, $nr, $k){
	if(!$p)   $p = 0;
	if(!$nc) $nc = 0;
	if(!$nr) $nr = 0;
	
	if(count($this-&gt;error)){
		echo &quot;&lt;pre&gt;Some errors were found.<br>The gallery wont run until they are solved:<br><br>&quot;;
		foreach($this-&gt;error as $er)
			echo $er;
		echo &quot;&lt;pre&gt;&quot;;
	}else{
		if($k == &quot;&quot;) 
			$this-&gt;showpage($p, $nc, $nr);
		else
			$this-&gt;showimage($p, $k);
	}
}

function showpage($p=0, $nc=5, $nr=5){
	if($p==&quot;&quot;) $p=0;
	$nip = $nc * $nr;
	$np = floor($this-&gt;nthu/$nip);

	$fi = $p * $nip;
	$li = (($p + 1) * $nip) - 1;
	if($li &gt;= $this-&gt;nthu) $li = $this-&gt;nthu-1;

	//echo &quot;&lt;pre&gt;p:$p<br>nc:$nc<br>nr:$nr<br>nip:$nip<br>np:".($np+1)."<br>fi:$fi<br>li:$li&lt;/pre&gt;";

	echo "&lt;table border='$this-&gt;border' width='100%' cellspacing='0' cellpadding='0'&gt;&lt;tr&gt;&lt;td width='100%' ";
	if($this-&gt;hcolor != &quot;NULL&quot;) echo &quot;bgcolor='#$this-&gt;hcolor'&quot;;
	echo &quot;&gt;&nbsp;<b>&middot $this-&gt;name</b>&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width='100%' ";
	if($this-&gt;bcolor != &quot;NULL&quot;) echo &quot;bgcolor='#$this-&gt;bcolor'&quot;;
	echo &quot;&gt;&lt;table border='0' width='100%' cellpadding='0' cellspacing='5'&gt;&quot;;

	if(eregi(&quot;\?k=&quot;,$_SERVER['REQUEST_URI'])) {
		$aurl=split(&quot;?k=&quot;,$_SERVER['REQUEST_URI']);
	}else if(eregi(&quot;\&k=&quot;,$_SERVER['REQUEST_URI'])) {
		$aurl=split(&quot;&k=&quot;,$_SERVER['REQUEST_URI']);
	}else{
		$aurl[0]=$_SERVER['REQUEST_URI'];
	}

	$url = $aurl[0];
	if(eregi(&quot;\?&quot;, $url)) 
		$url .= &quot;&k&quot;;
	else
		$url .= &quot;?k&quot;;

	for($i=$fi;$i&lt;=$li;$i++){
		if(!($i%$nc)) echo &quot;&lt;/tr&gt;&lt;tr&gt;";
		echo "&lt;td align='center'&gt;";
		echo "<a ><img  ></a>";
		echo "&lt;/td&gt;";
	}

	echo "&lt;/tr&gt;&quot;;

	$fp = 0;
	$lp = $np;
	$pp = $p-1; if(($p-1) &lt; $fp) $pp = 0;
	$pn = $p+1; if(($p+1) &gt; $np) $pn = $np;

	if(eregi(&quot;\?p=&quot;,$_SERVER['REQUEST_URI'])) {
		$aurl=explode(&quot;?p=&quot;,$_SERVER['REQUEST_URI']); //aki tava split mas tava dando erro.. mudei pra explode.., parou o erro pelo menos
	}else if(eregi(&quot;\&p=&quot;,$_SERVER['REQUEST_URI'])) {
		$aurl=split(&quot;&p=&quot;,$_SERVER['REQUEST_URI']);
	}else{
		$aurl[0]=$_SERVER['REQUEST_URI'];
	}

	$url = $aurl[0];
	if(eregi(&quot;\?&quot;, $url)) 
		$url .= &quot;&p&quot;;
	else
		$url .= &quot;?p&quot;;

	echo &quot;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width='100%' ";
	if($this-&gt;fcolor != &quot;NULL&quot;) echo &quot;bgcolor='#$this-&gt;fcolor'&quot;;
	echo &quot;&gt;<p ><b>";
	echo "<a >&lt;&lt;</a>&nbsp;";
	echo "<a >&lt;</a>&nbsp;|&nbsp;&quot;;

	for($i=0;$i&lt;=$np;$i++)
		echo &quot;<a >".($i+1)."</a>&nbsp;|&nbsp;";

	echo "<a >&gt;</a>&nbsp;";
	echo "<a >&gt;&gt;</a>";
	echo "</b>&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&quot;;
}

function showimage($p, $k){

	$fk = 0;
	$lk = ($this-&gt;nimg-1);
	$pk = $k-1; if(($k-1) &lt; 0) $pk = 0;
	$nk = $k+1; if(($k+1) &gt;= $this-&gt;nimg) $nk = ($this-&gt;nimg-1);

	if(eregi(&quot;\?k=&quot;,$_SERVER['REQUEST_URI'])) {
		$aurl=split(&quot;?k=&quot;,$_SERVER['REQUEST_URI']);
	}else if(eregi(&quot;\&k=&quot;,$_SERVER['REQUEST_URI'])) {
		$aurl=split(&quot;&k=&quot;,$_SERVER['REQUEST_URI']);
	}else{
		$aurl[0]=$_SERVER['REQUEST_URI'];
	}

	$url = $aurl[0];
	if(eregi(&quot;\?&quot;, $url)) 
		$url .= &quot;&k&quot;;
	else
		$url .= &quot;?k&quot;;

	echo &quot;&lt;table border='$this-&gt;border' width='100%' cellspacing='0' cellpadding='0'&gt;&quot;;
	
	if($this-&gt;nav == &quot;auto&quot; || $this-&gt;nav == &quot;up&quot;){
		echo &quot;&lt;tr&gt;&lt;td width='100%' valign='top' align='center' ";
		if($this-&gt;hcolor != &quot;NULL&quot;) echo &quot;bgcolor='#$this-&gt;fcolor'&quot;;
		echo &quot;&gt;&lt;table border='0' width='100%' cellpadding='0'&gt;&lt;tr&gt;";
		echo "&lt;td width='20%' valign='top' align='center'&gt;[<a >First</a>]&lt;/td&gt;";
	    echo "&lt;td width='20%' valign='top' align='center'&gt;[<a >Previous</a>]&lt;/td&gt;";
		echo "&lt;td width='20%' valign='top' align='center'&gt;[<a >Index</a>]&lt;/td&gt;";
        echo "&lt;td width='20%' valign='top' align='center'&gt;[<a >Next</a>]&lt;/td&gt;";
	    echo "&lt;td width='20%' valign='top' align='center'&gt;[<a >Last</a>]&lt;/td&gt;";
		echo "&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;";
	}
	
	echo "&lt;tr&gt;&lt;td width='100%' valign='top' align='center'&gt;";

	echo "<img  >";

	echo "&lt;/td&gt;&lt;/tr&gt;&quot;;
	
	if($this-&gt;nav == &quot;auto&quot; || $this-&gt;nav == &quot;down&quot;){
		echo &quot;&lt;tr&gt;&lt;td width='100%' valign='top' align='center' ";
		if($this-&gt;hcolor != &quot;NULL&quot;) echo &quot;bgcolor='#$this-&gt;fcolor'&quot;;
		echo &quot;&gt;&lt;table border='0' width='100%' cellpadding='0'&gt;&lt;tr&gt;";
		echo "&lt;td width='20%' valign='top' align='center'&gt;[<a >First</a>]&lt;/td&gt;";
	    echo "&lt;td width='20%' valign='top' align='center'&gt;[<a >Previous</a>]&lt;/td&gt;";
		echo "&lt;td width='20%' valign='top' align='center'&gt;[<a >Index</a>]&lt;/td&gt;";
        echo "&lt;td width='20%' valign='top' align='center'&gt;[<a >Next</a>]&lt;/td&gt;";
	    echo "&lt;td width='20%' valign='top' align='center'&gt;[<a >Last</a>]&lt;/td&gt;";
		echo "&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;";
	}
	
	echo "&lt;/table&gt;";
}

function test(){
	echo "&lt;pre&gt;name: $this-&gt;name<br>nimg: $this-&gt;nimg<br>nthu: $this-&gt;nthu<br>dirs: $this-&gt;dirs<br>&quot;;
	echo &quot;images:&quot;;
	print_r($this-&gt;images);
	echo &quot;<br>thumbs:&quot;;
	print_r($this-&gt;thumbs);
	echo &quot;&lt;/pre&gt;&quot;;
}

}

?>[/code]

arquivo exemplo1.php

&lt;?

# Vars

$gname = &quot;Example 1&quot;;			# gallery Name
$dir   = &quot;.&quot;;					# location of images (./images and ./thumbs should exist)
$tbgc  = &quot;aaaaaa&quot;;				# title background color (in table)
$ibgc  = &quot;fafafa&quot;;				# images and thumbs background color (in table)
$pbgc  = &quot;ccccff&quot;;				# pager background color (in table)
$pos   = &quot;down&quot;;				# position of the pager in image page (not thumb page)
$bpx   = 1;						# border width in pixels (for table)
$tr    = 3;						# thumbs per row
$tc	   = 3;						# thumbs per col

# Note. Do not move $p and $k, they are used for paging sistem

# Require the class
require_once(&quot;sgallery.class.php&quot;);

# create a gallery object
$gallery = new sGallery($gname, $dir);

# Set a style for the gallery
$gallery-&gt;style($tbgc,$ibgc,$pbgc,$bpx,$pos);

echo &quot;&lt;table border='0' width='400' cellspacing='0' cellpadding='0' align='center'&gt;&lt;tr&gt;&lt;td width='100%'&gt;&quot;;
$gallery-&gt;show(&quot;&quot;,$tc,$tr,&quot;&quot;);
echo &quot;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&quot;;

?&gt;

a paginação vc deve seguir nesse sentido:

	<?	
	$dir = '../galerias/fotos-curiosas'; //diretório onde estão as imagens
	$pag = $_GET['pag'] ? $_GET['pag'] : 1; //página
	$rpp = 10; //quantos registros vc quer por página
	$inicio = $pag * $rpp - $rpp; //inicio da página

	$varrer = glob("$dir/{*.jpg,*.JPG,*.gif}", GLOB_BRACE); //listar arquivos
	$total = count($varrer); //total de arquivos encontrados
	$paginas = ceil ($total/$rpp); //número de páginas

		for ($i = $inicio; $i < $inicio+$rpp && $i < $total; $i++) { 
			echo "$varrer[$i]<br>"; 
		} 
	
		if ($pag > 1) { 
			$anterior = $pag - 1; 
			echo "< <a href='{$_SERVER['PHP_SELF']}?pag={$anterior}'>Anterior</a> | "; 
		}	 

		print "<em>Pagina <b>{$pag}</b></em>"; 

		if ($pag < $paginas) { 
			$proxima = $pag + 1; 
			echo " | <a href='?pag={$proxima}'>Proxima</a> >"; 
		} 
	?>

achei parte desse código na net e adaptei parcialmente ele. faça ele funcionar em conjunto com o código acima que você consegue o resultado que deseja.

joellazzari nossa incrivel…
ta ficando muito bom e do jeito que queria…
falo assim pq ja fazem 3 semanas que estou atraz de algo assim e nao conseguia nada…rs
bem…
adaptei a paginacao com a varredura…

agora so tem 3 detalhes;…
1- esta ficando 5 imagens em cada pagina, onde teria que ficar 5 colunas e 10 linhas… tentei mexer nas variaveis de controle
mas quase que estrago td…rs

2- preciso que a selecao fique salva na session do php…assim qdo o cliente paginar e voltar a selecao nao perde,
3- muito a ver com o segundo… mas seria apos a selecao… imagine que o cliente ja selecionou e agora ele vai para o checkout, preciso reunir todas as fotos que ele selecionou num “carrinho” de compras…

só mais essas 3 coisinhas e ja terei td que preciso…
Veja como ficou…

&lt;html&gt;
&lt;center&gt;
 &lt;table width='80%' border='1' cellspacing="0" cellpadding="5"&gt;  
   
     &lt;?php  
     $dir = './img'; //diretório onde estão as imagens  
     $pag = $_GET['pag'] ? $_GET['pag'] : 1; //página  
     $rpp = 10; //quantos registros vc quer por página  
     $inicio = $pag * $rpp - $rpp; //inicio da página  
       
     $varrer = glob(&quot;$dir/{*.jpg,*.JPG,*.gif}&quot;, GLOB_BRACE); //listar arquivos  
     $total = count($varrer); //total de arquivos encontrados  
     $paginas = ceil ($total/$rpp); //número de páginas  
     $handle=opendir($dir);  
     $i=0;  
     $j = 0;  
         //while ($file = readdir($handle)) {
         for ($i = $inicio; $i &lt; $inicio+$rpp && $i &lt; $total; $i++) { 
             if (eregi(&quot;jpg$&quot;,$varrer[$i]) || eregi(&quot;gif$&quot;,$varrer[$i]) || eregi(&quot;png$&quot;,$varrer[$i])){
                 if($i == 0 || $j == 5)  
                 {  
                   $j = 0;  
                   echo('&lt;tr&gt;');  
                 }
     ?&gt;  
       
             &lt;td align="center" valign="bottom"&gt;  
                 <img   >  
                 &lt;!-- TODO: mudar classe de thumbs --&gt;  
                 <br>  
                 &lt;input type="checkbox" name="nome_foto" id="nome_foto" value="&lt;?php echo($varrer[$i]) ?&gt;" /&gt;  
                 Comprar   
             &lt;/td&gt;  
       
     &lt;?php  
         if($j == 4)  
         {  
             echo('&lt;/tr&gt;');      
         }  
         $j=$j+1;  
         $i=$i+1;  
         };  
     };  
     closedir($handle);  
     if ($pag &gt; 1) {   
         $anterior = $pag - 1;   
         echo &quot;&lt; <a >Anterior</a> | ";   
     }      
   
     print "&lt;em&gt;Pagina <b>{$pag}</b>&lt;/em&gt;&quot;;   
   
     if ($pag &lt; $paginas) {   
         $proxima = $pag + 1;   
         echo &quot; | <a >Proxima</a> &gt;&quot;;   
     }   
     ?&gt;   
   
     &lt;/table&gt; 
&lt;/center&gt;
&lt;/html&gt;

se vc quiser pode me add no msg ou mandar e-mail direto
guilherme_ha [At] hotmail.com

Cara… Muitissimo obrigado…

Olá guilherme_ha,

Com relação ao problema 3, fiz uma alteração no primeiro código, veja só:

<?
if($_GET["acao"] == 'receber') {
	$nome_foto = $_POST['nome_foto'];
	
	echo "o cliente selecionou na etapa anterior essas fotos:<br><br>";
	
	foreach($nome_foto as $foto) {
		echo $foto . "<br>\n";
	}
} //final acao = receber
?>

<?
if($_GET["acao"] == '') { ?>

<table width='100%' border='0'>  
	<form action="nome-do-teu-arquivo.php?acao=receber" method="post">
  
    <?php  
    $dir = '../fotos'; //diretório onde estão as imagens  
    $handle=opendir($dir);  
    $i=0;  
    $j = 0;  
        while ($file = readdir($handle)) {  
            if (eregi("jpg$",$file) || eregi("gif$",$file) || eregi("png$",$file)){  
                if($i == 0 || $j == 5)  
                {  
                  $j = 0;  
                  echo('<tr>');  
                }  
    ?>  
      
    <td>  
        <img src="<?php echo($dir . '/' . $file) ?>" border='0' width="80">  
        <!-- ache (por favor, não deixe assim ) uma classe para thumbs aqui,   
        para redimensionar automaticamente -->  
        <br>  
        <input type="checkbox" name="nome_foto[]" value="<?php echo($file) ?>" />
	<!-- importante: agora voce vai mandar a variavel nome_foto como um array -->
		
        <?php echo($file) ?>   
    </td>  
      
    <?php  
    if($j == 4)  
    {  
        echo('</tr>');      
    }  
    $j=$j+1;  
    $i=$i+1;  
    };  
    };  
    closedir($handle);  
    ?>
	
	<tr>
	  <td>
		<input type="submit" value="Enviar">
	  </td>
	</tr>
	</form>
  
    </table> 

<? } //final acao = ''
?>

Preste atenção no seguinte:
1 - action do formulário: ele manda para a mesma página (nome-do-teu-arquivo.php);
2 - agora vc vai mandar a variável nome_foto como um array;
3 - na condição

if($_GET["acao"] == 'receber') { //aqui é o teu carrinho de compras }
é que vc vai receber as fotos e fazer o restante do processo

Ola…
cara deu tudo certo… implementei o codigo e funcionou certinho…

porém agora so preciso de mais os itens 1 e 2…
1- esta ficando 5 imagens em cada pagina, onde teria que ficar 5 colunas e 10 linhas… tentei mexer nas variaveis de controle
mas quase que estrago td…rs
2- preciso que a selecao fique salva na session do php…assim qdo o cliente paginar e voltar a selecao nao perder

notei que qdo troco o for ($i = $inicio; $i < $inicio+$rpp && $i < $total; $i++) por while ($file = readdir($handle) )
ele monta a tabela completa… mas fura a paginacao…
e do contrario ele pagina mas so monta 1 linha da tabela…

desculpa encher tanto a paciência mas tenho que entregar isso mais brevemente possivel…

Muito obrigado pela ajuda e atenção…

Olá guilherme_ha, bom dia

Vamos dividir as tarefas: se concentre no problema 1 (é lógica e organização do código) que eu verifico como fazer para guardar as variáveis durante a paginação (através de SESSION ou COOKIES).

Não lembro como fazer isso mas vou pesquisar e logo que tiver o resultado coloco aqui.

Está meio corrido aqui pra te ajudar nesse problema hoje, meu msn é joellazzari hotmail com br

OK…Joel…
vou pesquisar a parte 1…
ja te add no msn ok ?

Não precisa ser a resposta hoje… pode ficar tranquilo…

muito Obrigado;…

Olá, consegui fazer a parte de colocar as imgs na tabela de forma certa…
agora pra finalizar so esta faltando salvar o estado de cada checkbox no momento da paginacao…

tive tentando fazer com js e usando um campo hidden … mas não tenho certeza de que irá funcionar mto bem…
pois qdo vou pro proximo passo eu varro o array “nome_foto” como vc me mandou…
e se eu jogar num campo hidden, perco isso…

se tiver outra sugestão agradeco muito…

Valew…