Ir para conteúdo

POWERED BY:

Arquivado

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

11closed

uso do for

Recommended Posts

ola

estou com um problemã, ñ consigo resolver, gostaria da ajuda de vcs

 

olha o codigo

if ($linhas["qtsApars"] == "50") {
   	$acaba = 50;
   	for ($i = 1; $i <= $acaba; $i++) {
        $sql[$i] = "SELECT * FROM ".$tabela[(2+$i)]." WHERE codigoid_apar$i='".$linhas["codigoid_anuncia"]."'";
        $query[$i] = mysql_query($sql[$i])or die(mysql_error());
        while($linha[$i] = mysql_fetch_array($query[$i])) {
     	echo "
          <a href='completo.php?id_anuncia=".$linhas["id_anuncia"]."' title=''>".$linhas["nlocal"]."</a> 

          Selecione o que deseja visualizar: 
          <form name='frmMudar' method='post'>
          <select name='sltMudar' onchange='fMudarPagina()'>
       	<option selected>Selecione
       	<option value='completo[$i].php?id_apar[$i]=".$linha[$i]["id_apart[$i]"]."'>".$linha[$i]["apar[$i]"]."</option>
          </select>
     	</form>
     	";
        }
   	}
      }

esta dano esse erro

 

Warning: Cannot use a scalar value as an array in D:\wamp..............\completo.php on line 360

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'S' at line 1

 

procurei no google sobre ele, mais ñ acho a solução do erro.

 

a linha 360 é essa

$query[$i] = mysql_query($sql[$i])or die(mysql_error());

 

alguem poderia me ajudar, a resolver esse problema ??

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

desnecessário esse malabarismo todo.. pq não faz só:

 

$sql = ..
	$query = mysql_query( $sql )or die( mysql_error() );
	while(	$linha = mysql_fetch_array($query) ) 
	{
funcionará..

 

e outra, mas que modelagem estranha !! a impressão que dá, é que você está criando um monstro, um bicho de 7 cabeças, que a qualquer hora, pode sair de controle.

estude Formas Normais

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola

 

William Bruno desse jeito ñ deu..

 

tipo é preciso que o loop repita ate o numero 50

 

ai criara algo assim

# ex: loop 1

$sql1 = "SELECT * FROM ".$tabela3." WHERE codigoid_apar1='".$linhas["codigoid_anuncia"]."'";
$query1 = mysql_query($sql1)or die(mysql_error());
while($linha1 = mysql_fetch_array($query1)) {
echo "
        <a href='completo.php?id_anuncia=".$linhas["id_anuncia"]."' title=''>".$linhas["nlocal"]."</a> 

        Selecione o que deseja visualizar: 
        <form name='frmMudar' method='post'>
     	<select name='sltMudar' onchange='fMudarPagina()'>
          <option selected>Selecione
      	<option value='completo1.php?id_apar1=".$linha1["id_apar1"]."'>".$linha1["apar1"]."</option>
    	</select>
        </form>
        ";
}
# ex: loop 2

$sql2 = "SELECT * FROM ".$tabela4." WHERE codigoid_apar2='".$linhas["codigoid_anuncia"]."'";
$query2 = mysql_query($sql2)or die(mysql_error());
while($linha2 = mysql_fetch_array($query2)) {
echo "
        <a href='completo.php?id_anuncia=".$linhas["id_anuncia"]."' title=''>".$linhas["nlocal"]."</a> 

        Selecione o que deseja visualizar: 
        <form name='frmMudar' method='post'>
     	<select name='sltMudar' onchange='fMudarPagina()'>
          <option selected>Selecione
      	<option value='completo2.php?id_apar2=".$linha2["id_apar2"]."'>".$linha2["apart2"]."</option>
    	</select>
        </form>
        ";
}
# ex: loop 3....... ate o 50..

por isso que eu fis dessa forma estranha. como eu faço para arrumar esse erro ?

 

Warning: Cannot use a scalar value as an array in D:\wamp..............\completo.php on line 360

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'S' at line 1

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual a query retornada? da um echo da query e veja se está correta...

 

E como o William mencionou acima, sua estrutura não parece muito "correta"...Tente explicar melhor a situação que usa o script....

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem um explicacao do quer fazer fica dificil ajudar.............

 

As variáveis $tabela3,$tabela4... estão definidas?

 

 

No seu caso eu tentaria fazer uma tabela auxiliar, para ler os dados...

 

id table column

1 3 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

na linha 359, adicione isso:

 

$query = array();

Desde que não esteja dentro do loop.

 

Me fala uma coisa, você não tá mandando executar 50 consultas, ta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola

 

srnetcave query não retorna nada

 

ricardo.haas sim, as variaveis $tabela1, $tabela2 .... estão todas definidas na pagina config.php estou buscando ela com um include.

 

Evandro Oliveira adicionei essa linha que você citou e o erro que acusou foi apenas esse.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'S' at line 1

 

e SIM é exatamente o que eu quero que faça 50 consultas.

o que eu quero é buscar os dados do BD, e aparecer no options os 50 resultados..

 

deu para entender agora ???

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguma de suas consultas (provavelmente a primeira) está errada.

 

O que você precisa fazer com o banco? Talvez exista algo mais fácil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que quero é um Select com os 50 apar(apar é um campo numerado ex:apar1 esta na tabela3 apar2 esta na tabela4 apar3 esta na tabela5......ate o apar50 esta na tabela52).

 

quero buscar todos os apar e colocar cada um deles em um <option> para que eu possa escolher um e ir para pagina onde posso alterar os dados de cada apar

cada options tem o value cada um com o link diferente tipo:

1º option - completo1.php?id_apar1=".$linha1["id_apar1"]."

2º option - completo2.php?id_apar2=".$linha2["id_apar2"]."

..... ate o 50

50º option - completo50.php?id_apar50=".$linha50["id_apar50"]."

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguma de suas variáveis com nome de tabela

ou array com o id do produto, está vazio.

talvez por isso a query está ficando incompleta...

 

E existe mesmo a necessidade de cadastrar cada "apar" em tabelas diferentes?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, sinceramente não sei o que voce fez. Mas so o fato de voce ter que fazer 50 consultas ja mostra que tem alguma coisa errada.

 

Da uma repensada em como voce vai fazer isso dai, ou posta pra galera te ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém fez caquinha no banco de dados...

 

$linhas = array();
for($apar = 1, $tbl = 3; $apar < 51; $apar++, $tbl++)
   $linhas[] = mysql_fetch_assoc(mysql_query("SELECT `id_apar{$apar}` AS `id`, `apar{$apar}` AS `apar` FROM `tabela{$tbl}` WHERE `codigoid_apar{$apar}` = '{$linhas['codigoid_anuncia']}'")) or die(mysql_error());

var_dump($linhas);

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola

 

fis +ou- dessa forma Evandro Oliveira, acho que estamos quase lah...

olha o codigo

if ($linhas["qtsApart"] == "50") {
       echo "<a href='completo.php?id_anuncia=".$linhas["id_anuncia"]."' title=''>".$linhas["nlocal"]."</a> <br>
         Selecione o que deseja visualizar: 
          <form name='frmMudar' method='post'>
           <select name='sltMudar' onchange='fMudarPagina()'>
            <option selected>Selecione
        ";
       $acaba = 50;
       $linha = array();
       for ($i = 1; $i <= $acaba; $i++) {
        $linha[] = mysql_fetch_assoc(mysql_query("SELECT * FROM anuncia_apar".$i." WHERE codigoid_apar$i='".$linhas["codigoid_anuncia"]."'")) or die(mysql_error());
         echo "<option value='completo[$i].php?id_apar[$i]=".$linha["id_apart[$i]"]."'>".$linha["apar[$i]"]."</option>";
       }
       echo "</select> </form>";
      }

no browser aparese o select, mais ele esta vazil

".$linha["apar[$i]"]." ---- é assim que imprimi no browser? ou esta errado ?

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim tb ñ deu !!!!!!

 

esta assim

echo "<option value='completo$i.php?id_apart$i=".$linha["id_apart$i"]."'>'".$linha[$i]."'</option>";

as duas $linha continua vazias

 

???

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando deu o var_dump, você leu a estrutura de $linha??

 

veja que ele é um array de arrays, assim como uma tabela.

 

tente assim $linha[$i]['id_apart'] ou $linha[$i]['apart']

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola

 

eu li sim, mais ñ entendi muito bem

olha esta assim

array(1) {

[0]=> array(15) {

["id_apart1"]=> string(2) "35"

["codigoid_apart1"]=> string(3) "242"

["apart1"]=> string(6) "gumer1"

.....................

}

}

 

esses dois jeito tb ñ deu $linha[$i]['id_apart'] ou $linha[$i]['apart'] , continua vaziu..

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro, você mexeu na query que te passei, e trocou fetch_assoc por fetch_array, aumenta demais o número de índices.

 

coloque essas linhas aqui que você vai entender:

 

foreach($linha as $campos) {
   echo '<pre class="border: 1px solid #000">';
   print_r($campos);
   echo '</pre>';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola Evandro Oliveira desculpa minha ignorancia..

 

mais o codigo esta assim

if ($linhas["qtsApars"] == "50") {
   	echo "<a href='completo.php?id_anuncia=".$linhas["id_anuncia"]."' title=''>".$linhas["nlocal"]."</a> 

     	Selecione o que deseja visualizar: 
          <form name='frmMudar' method='post'>
       	<select name='sltMudar' onchange='fMudarPagina()'>
            <option selected>Selecione
        ";
   	$acaba = 5;
   	$linha = array();
   	for ($i = 1; $i <= $acaba; $i++) {
        $linha[] = mysql_fetch_assoc(mysql_query("SELECT * FROM `anuncia_apar{$i}` WHERE `codigoid_apar{$i}` = '{$linhas['codigoid_anuncia']}'")) or die(mysql_error());
        
        echo "<option value='completo$i.php?id_apar$i=".$linha["id_apar$i"]."'>".$linha["apar$i"]."</option>";
        
   	}
   	echo "</select> </form>";
      }

quando eu coloco o foreach, fica assim

Array
(
	[id_apar1] => 35
	[codigoid_apar1] => 242
	[apar1] => gumer1
)
Array
(
	[id_apar1] => 35
	[codigoid_apar1] => 242
	[apar1] => gumer1
)
Array
(
	[id_apar2] => 26
	[codigoid_apar2] => 242
	[apar2] => gumer2
)
Array
(
	[id_apar1] => 35
	[codigoid_apar1] => 242
	[apar1] => gumer1
)
Array(    [id_apar2] => 26    [codigoid_apar2] => 242    [apar2] => gumer2   )Array(    [id_apar3] => 22    [codigoid_apar3] => 242    [apar3] => gumer3
)Array(    [id_apar1] => 35    [codigoid_apar1] => 242    [apar1] => gumer1)Array(    [id_apar2] => 26    [codigoid_apar2] => 242    [apar2] => gumer2)
.........

ainda eu ñ consegui entender pq ñ aparece os apar nos options.

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos brincar diferente então:

echo '<select>';
foreach($linha as $indice=>$campos) {
   $indice++;
   $id = 'id_apar' . $indice;
   $apar = 'apar' . $indice;
   echo '<option value="completo{$indice}.php?id_apar{$indice}={$linha[$id]}">{$linha[$apar]}</option>';
}
echo '</select>';

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.