Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu devia estar satisfeito, mas sou meio neurótico! Página simples de puxar fotinhos indexadas numa base mySQL (nome, legenda, etc...):
$fotos_sql_res = mysql_query("SELECT * FROM fotos", $mysql->con);
while($foto = mysql_fetch_array($fotos_sql_res)){
$foto_id = $foto['id']+1-1;
$foto_src = $apache->url.'fotos/foto_'.$foto_id.'.jpeg';
$foto_box = '<img src="'.$foto_src.'" border="0" /><br /><p class="legenda">'.$foto['legenda'].'</p>';
echo(' // etc..
Porque eu não usei $foto['id'] para gerar o nome de arquivo da foto ao invés da matemática bizarra de $foto_id??? Porque $foto['id'] está retornando 000001 (não lembro quantos zeros) ao invés de 1, então o nome sai foto_000001.jpeg ao invés de foto_1.jpeg que foi o nome que foi criado no upload.
Eu sei que mesmo a gambiarra teria uma forma mais elegante de fazer, mas porque diabos o php está retornando um numerozão com todos estes zeros?
Ok, está funcionando, mas gostaria de corrigir do jeito certo antes que alguém descubra...
Esse ID no campo está com formato INT?
Retirar os zeros manualmente é facil, mas não há necessidade de eles estarem sendo criados.
[]'s
Esse campo id, na sua tabela, está marcado como zerofill? Se estiver, talvez isso esteja provocando o retorno com um monte de zeros à esquerda.
use o intval()
$fotos_sql_res = mysql_query("SELECT * FROM fotos", $mysql->con);
while($foto = mysql_fetch_assoc($fotos_sql_res)){
$foto_id = intval($foto['id']);
$foto_src = $apache->url.'fotos/foto_'.$foto_id.'.jpeg';
$foto_box = '<img src="'.$foto_src.'" border="0" /><br /><p class="legenda">'.$foto['legenda'].'</p>';
echo(' // etc..');
}Coluna id deve ser do tipo INT ZEROFILL. Poderia simplesmente...
$foto_id = intval($foto['id']);
Ou mudar o tipo no banco.
>
Esse campo id, na sua tabela, está marcado como zerofill? Se estiver, talvez isso esteja provocando o retorno com um monte de zeros à esquerda.
Era isso!!! Não sei porque estava marcado o zerofill lá. Retirei e está retornando certinho.
Ocorre que eu reinstalei tudo no meu Mac e o myAdmin não está funcionando. Estou usando o WorkBench e não tenho muita prática (eu é que sou quase um zero à esquerda). Aliás, não tenho muita prática em mySQL, mas desenvolver bases sozinho está me fazendo aprender à machado!!!
Respondendo aos outros: não estava achando a função certa para o caso, somar e subrair "obrigou" o php a converter o número formatado em número comum. Mas vou guardar esta função intval(), pode ser útil no futuro.
Valeu pessoal!
$foto_id = $foto['id']+1-1;
Que isso ??