Ir para conteúdo
Fórum Script Brasil
  • 0

Problema Com Arrays E Mysql


Inufelipe

Pergunta

Ola comunidade do script brasil.

Eu estou criando uma rede de amigos e eu uso o PHP e o MYSQL

Dai ele está quase pronto...

porem eu estava testando e comecei a criar "Amigos imaginarios" no sistema

mais quando eu tive mais de 1 amigo ( 2 ), o PHP fica preso numa while...

postareio codigo aqui se alguém poder me ajudar!!!

Parte do codigo onde esta o problema.

<?
 $query = mysql_query('SELECT * FROM amigo');
 $i = 0;
 $mem = array();
 while ( $line = mysql_fetch_array($query,MYSQL_ASSOC)){
 if ( $line['a'] == $id ){
  $i += 1;
  $mem[$i] = array();
  $mem[$i][1] = $line['b'];
 }
 else{
 if ( $line['b'] == $id ){
  $i += 1;
  $mem[$i] = array();
  $mem[$i][1] = $line['a'];
 }
 }
 }
$k = $i;
$query = mysql_query('SELECT * FROM usu');
while ($i > 0){
 while ($line = mysql_fetch_array($query,MYSQL_ASSOC)){
 if ($mem[$i][1] == $line['id']){
  $mem[$i][2] = $line['apelido'];
  echo "<A href='ver.php?id=".$mem[$i][1]."'>".$mem[$i][2]."</A><BR>";
  $i -= 1;
 }
}
}
?>

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Talvez eu possa tar errado que o problema esta ali...

Por isso eu vou botar o codigo todo:

<?
$there_is = "false";
 include('mysql.txt');
if ( isset($_POST['usu']) && isset($_POST['sen'])){
 $query = mysql_query('SELECT * FROM usu');
 while ($line = mysql_fetch_array($query,MYSQL_ASSOC)){
 if($_POST['usu'] == $line['usuario']){
  if($_POST['sen'] == $line['senha']){
   $id = $line['id'];
   $nome = $line['nome'];
   $apelido = $line['apelido'];
   $email = $line['email'];
   $mim = $line['mim'];
   $there_is = "true";
   setcookie("id",$id,time()+360000);
  }
 }
 }
}
else{
if ( isset($_COOKIE['id']) ){
 $query = mysql_query('SELECT * FROM usu');
 while ($line = mysql_fetch_array($query,MYSQL_ASSOC)){
 if($_COOKIE['id'] == $line['id']){
   $id = $line['id'];
   $nome = $line['nome'];
   $apelido = $line['apelido'];
   $email = $line['email'];
   $mim = $line['mim'];
   $there_is = "true";
   setcookie("id",$id,time()+12000);
  }
 }
}
}
if ( $there_is != "true" ){
 header('location:index.html');
}

?>
<HTML>
<HEAD>
<TITLE>Painel</TITLE>
<STYLE>
body{
 background-color:#ddeeff;
}
#cabe{
 position:absolute;
 font-size:30px;
 font-family:Flubber;
 background-color:#ffffee;
 padding:10px;
 width:680px;
}
#menu{
 position:absolute;
 padding:10px;
 width:200px;
 height:210px;
 margin:100px 0 0 0;
 background-image:url('menub.png');
 padding:40px 20px;
}
.mi{
 padding:10px;
 cursor:pointer;
}
#painel{
 position:absolute;
 padding:25px;
 width:383px;
 height:372px;
 margin:60px 0 0 270px;
 background-image:url('fndb.png');
 overflow:auto;
}
TEXTAREA,INPUT{
 border:1px solid #000000;
 margin:1px;
 padding:1px;
}
.hide{
 display:none;
}
#su{
 font-size:15px;
 font-family:Arial;
 position:absolute;
 margin:-10px 0 0 580px;
}
.like{
 cursor:pointer;
}
#list{
 margin:100px 0 0 460px;
 z-index:100;
 position:absolute;
 border:2px solid #000000;
 padding:10px;
 background-color:#ddeeff;
 width:150px;
 overflow:auto;
 height:200px;
 display:none;
}
</STYLE>
</HEAD>
<BODY>
<DIV ID="cabe"><? echo $apelido ?><DIV id="su"><SPAN class="like" onClick="linkto('comp')">Compor</SPAN> - <SPAN class="like"><A HREF="sair.php" STYLE="color:#000000;text-decoration:none;">Sair</A></SPAN></DIV></DIV>
<DIV ID="menu">
<DIV class="mi" onmouseover="mon(this,1)" onmouseout="mon(this,2)" onclick="linkto('mima')">Mim</DIV>
<DIV class="mi" onmouseover="mon(this,1)" onmouseout="mon(this,2)" onclick="linkto('amigos')">Amigos</DIV>
<DIV class="mi" onmouseover="mon(this,1)" onmouseout="mon(this,2)" onclick="linkto('msgs')">Mensagens</DIV>
<DIV class="mi" onmouseover="mon(this,1)" onmouseout="mon(this,2)">Links</DIV>
<DIV class="mi" onmouseover="mon(this,1)" onmouseout="mon(this,2)">Fotos</DIV>
</DIV>
<DIV ID="painel"></DIV>
<DIV id="mima" class="hide">
<? echo $mim ?><BR><SPAN onClick="document.getElementById('mim').style.display = 'block';" style="cursor:pointer;"><BR> editar </SPAN> <BR> <FORM  id="mim" style="display:none;" method="POST" action="mim.php"><TEXTAREA name="new" style=" width:380px;
 height:200px;"><? echo $mim ?></TEXTAREA><INPUT type="submit" value="salvar" style="cursor:pointer;"></FORM></DIV>
<DIV id="amigos" class="hide">
<?
 $query = mysql_query('SELECT * FROM amigo');
 $i = 0;
 $mem = array();
 while ( $line = mysql_fetch_array($query,MYSQL_ASSOC)){
 if ( $line['a'] == $id ){
  $i += 1;
  $mem[$i] = array();
  $mem[$i][1] = $line['b'];
 }
 else{
 if ( $line['b'] == $id ){
  $i += 1;
  $mem[$i] = array();
  $mem[$i][1] = $line['a'];
 }
 }
 }
$k = $i;
$query = mysql_query('SELECT * FROM usu');
while ($i > 0){
 while ($line = mysql_fetch_array($query,MYSQL_ASSOC)){
 if ($mem[$i][1] == $line['id']){
  $mem[$i][2] = $line['apelido'];
  echo "<A href='ver.php?id=".$mem[$i][1]."'>".$mem[$i][2]."</A><BR>";
  $i -= 1;
 }
}
}
?>
<BR>
adicionar amigo:
<FORM METHOD="POST" ACTION="add.php">
ID:<INPUT name="amigo"><INPUT type="submit" style="cursor:pointer;">
</FORM>
</DIV>
<DIV id="msgs" class="hide">
<?
 $query = mysql_query('SELECT * FROM msg');
 $de = array();
 $txt = array();
 $i = 0;
 $msg = array();
 while ( $line = mysql_fetch_array($query,MYSQL_ASSOC)){
 if ($line['b'] == $id){
  $i += 1;
  $de[$i] = array();
  $de[$i][1] = $line['a'];
  $txt[$i] = $line['txt'];
  $msg[$i] = $line['id'];
 }
 }
 $query = mysql_query('SELECT * FROM usu');
 $j = $i;
 $i = 0;
 while ( $i < $j){
 while ( $line = mysql_fetch_array($query,MYSQL_ASSOC) ){
  if ($de[($i+1)][1] == $line['id']){
    $i += 1;
    $de[$i][2] = $line['apelido'];
  }
 }
}
$i = 0;
while ( $i < $j ){
 $i += 1;
 echo "<B><A HREF='ver.php?id=".$de[$i][1]."'>".$de[$i][2].":</A></B> ".$txt[$i]." <A href='apagar.php?id=".$msg[$i]."'>Apagar</a><BR>";
}
?>
</DIV>
<DIV class="hide" id="comp">
<FORM METHOD="POST" action="send.php">
<TABLE>
<TR><TD>Para:</TD><TD><INPUT id="compinput" NAME="para"> <SPAN class="like" onClick="document.getElementById('list').style.display = 'block'">Amigos</SPAN></TD></TR>
<TR><TD>Texto:</TD><TD></TD></TR>
<TR><TD></TD><TD><TEXTAREA style=" width:300px; height:200px;" name="txt"></TEXTAREA></TD></TR>
</TABLE>
<INPUT type="submit" value="enviar">
</FORM>
</DIV>
<DIV id="list">
<?
 $i = 0;
 while ( $k > $i ){
 $i += 1;
 echo "<SPAN class='like' onClick=\"list('".$mem[$i][1]."')\">".$mem[$i][2]."</SPAN><BR>";
}
?>
</DIV>
</BODY>
<script>
function list(a){
 document.getElementById('compinput').value = a;
 document.getElementById('list').style.display = "none";
}
function linkto(a){
 document.getElementById('painel').innerHTML = document.getElementById(a).innerHTML
}
function mon(a,b){
if (b == 1){
 a.style.color = "#ffffff";
}
if (b == 2){
 a.style.color = "#000000";
}
}
linkto('mima')
</SCRIPT>
</HTML>

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que no 1º post, no último while, onde esta assim:

while ($i > 0){

while ($line = mysql_fetch_array($query,MYSQL_ASSOC)){

if ($mem[$i][1] == $line['id']){

$mem[$i][2] = $line['apelido'];

echo "<A href=ver.php?id=".$mem[$i][1]."'>".$mem[$i][2]."</A><BR>";

$i -= 1;

}

}

}

Acho que aquela parte vermelha teria que estar dentro do 1º loop criado não no segundo, porque aí ele pode não subtrair 1 do $i e vai ser sempre maior que zero. Tenta assim:

while ($i > 0){

while ($line = mysql_fetch_array($query,MYSQL_ASSOC)){

if ($mem[$i][1] == $line['id]){

$mem[$i][2] = $line['apelido'];

echo "<A href='ver.php?id=".$mem[$i][1]."'>".$mem[$i][2]."</A><BR>";

}

}$i -= 1;

}

Ah, para subtrair 1 de $i você também pode usar $i--

Link para o comentário
Compartilhar em outros sites

  • 0

Então você terá que revisar seu código. Supondo que $i = 3 e ele não encontre mais linhas do banco de dados, $i não será subtraído e a condição do 1º While ($i > 0) vai se tornar sempre verdadeira e o processamente ficará preso no loop.

Mais uma coisa, na 1ª linha, você não deve usar aspas para valores booleanos:

$there_is = "false"; // errado, $there_is será avaliado como true por não estar vazio

$there_is = false; // correto

Voltando ao seu problema, você pode tentar fazer algo mais ou menos assim:

$res = 0; //Nº da linha exibida

$res2 = mysql_num_rows($query)-1; // Total de linhas

while ($i > 0){

while ($line = mysql_fetch_array($query,MYSQL_ASSOC)){

if ($mem[$i][1] == $line['id']){

$mem[$i][2] = $line['apelido'];

echo "<A href='ver.php?id=".$mem[$i][1]."'>".$mem[$i][2]."</A><BR>";

$i -= 1;

}

$res++;

}

if($res >= $res2) break;

}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...