Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ayslan Rodrigo

Problemas com sprintf() [function.sprintf]: Too few arguments

Recommended Posts

Estou com problemas com meu código php...

 

dependendo do lugar que eu posto, dá certo, mas na escola que to usando esse código pro site, a internet lá é do governo federal, nao sei se isso implica em algo, mas só lá aparece esse erro... é na hora de visualizar os dados do mysql, enviar ele envia de boa, confiro até no banco, e tá tudo lá, só na hora de mostrar os dados aparece isso

 

erro:

 

Warning: sprintf() [function.sprintf]: Too few arguments in /home/chape925/public_html/admin/del_noticia.php on line 114

 

meu código:

 

<?php

include "config.php";

// Informações da query
$campos_query = "*";
$final_query  = "FROM noticias ORDER BY id desc";

// Maximo de registros por pagina
$maximo = 5;

// Declaração da pagina inicial
$pagina = $_GET["pagina"];
if($pagina == "") {
   $pagina = "1";
}

// Calculando o registro inicial
$inicio = $pagina - 1;
$inicio = $maximo * $inicio;

// Conta os resultados no total da query
$strCount = "SELECT COUNT(*) AS 'num_registros' $final_query";
$query = mysql_query($strCount);
$row = mysql_fetch_array($query);
$total = $row["num_registros"];

###################################################################################
// INICIO DO CONTEÚDO

// Realizamos a query
$sql = mysql_query("SELECT $campos_query $final_query LIMIT $inicio,$maximo");

// Exibimos os nomes dos produtos e seus repectivos valores
while ($linha = mysql_fetch_object($sql)) {

echo "<html><body alink='#CCff33' vlink='#000000'>";
echo "<table width='540' height='5' border='1' borderColor=#0d753b>";
echo "<tr><td height='40'><h1><div align='center'><b>" . $linha->titulonoticia . "</div></b></h1></td></tr>";
echo "</table>";
echo "</br>";
echo "</br>";
echo "<table width='500' height='' border='0'>";
echo "<tr><td height='33'>" . sprintf($linha->noticia) . "</td></tr>";
echo "</table>";
echo "<table width='500' height='5' border='0'>";
echo "<tr><td height='33'><h5><div align='left'><b>Postado por: " . $linha->postado . " em " . $linha->data . ".</div></b></h5></td></tr>";
echo "</table>";
echo "</br>";
}//fechando o while
echo "</body>";
echo "</html>";


// FIM DO CONTEUDO
###################################################################################

$menos = $pagina - 1;
$mais = $pagina + 1;

$pgs = ceil($total / $maximo);

if($pgs > 1 ) {

echo "<br />";

   // Mostragem de pagina
   if($menos > 0) {
	echo "<a href=".$_SERVER['PHP_SELF']."?pagina=$menos>Anterior</a>  ";
   }

   // Listando as paginas
for($i=1;$i <= $pgs;$i++) {
	if($i != $pagina) {
		echo " <a href=".$_SERVER['PHP_SELF']."?pagina=".($i).">$i</a> | ";
	} else {
		echo " <strong>".$i."</strong> | ";
	}
}

if($mais <= $pgs) {
	echo " <a href=".$_SERVER['PHP_SELF']."?pagina=$mais>Próxima</a>";
}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito carlos que nesse caso a documentação não seria de grande valia.

 

Seu problema Ayslan está, na verdade, em interpretar o erro obtido.

 

Veja, Too few arguments significa Poucos argumentos.

 

Mas que argumentos?

 

(v)(s)printf() coloca o valor de N argumentos (a partir do segundo parâmetro) no lugar de cada um dos placeholders (guada-lugares), isto é, os as letras que acompanhadas do símbolo de porcentagem se tornam especiais.

 

Oras, se você está recebendo uma mensagem de poucos argumentos, basta que você conte o número de placeholders usados e o número de argumentos que você informou à frente da string de primeiro parâmetro.

 

Ambas as quantidades, de placeholders e de argumentos devem ser iguais. A chamada de sprintf() em que não combinar, é a culpada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sprintf() serve, ao meu ver, para melhorar a legibilidade de string concatenadas.

 

Ao invés de você fazer:

 

$name = 'Bruno Augusto';

print 'Olá! Meu nome é ' . $name;

Pode fazer:

 

$name = 'Bruno Augusto';

printf( 'Olá! Meu nome é %s', $name );

Veja que eu usei um placeholder do tipo string ( %s ). O parâmetro deve ser uma string ou uma string numérica, caso contrário será convertido para string.

 

Tudo bem que você não se lembre para que colocou a função lá,mas eu senti pela sua resposta uma certa insegurança quando a aplicabilidade do recurso, dessa forma, eu endosso o comentário do Carlos Coelho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito carlos que nesse caso a documentação não seria de grande valia.

 

você tem razão, sua explicação ficou ótima. :clap:

 

@Ayslan Rodrigo

 

Se você não quiser usar basta remover, neste caso não fará diferença

echo "<tr><td height='33'>" . $linha->noticia . "</td></tr>";

 

sprintf() serve, ao meu ver, para melhorar a legibilidade de string concatenadas.

 

Concordo com o Bruno Augusto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.