Inufelipe Postado Novembro 27, 2006 Denunciar Share Postado Novembro 27, 2006 Ola comunidade do script brasil.Eu estou criando uma rede de amigos e eu uso o PHP e o MYSQLDai ele está quase pronto...porem eu estava testando e comecei a criar "Amigos imaginarios" no sistemamais 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; } } } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Inufelipe Postado Novembro 27, 2006 Autor Denunciar Share Postado Novembro 27, 2006 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> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mbleonardo Postado Novembro 27, 2006 Denunciar Share Postado Novembro 27, 2006 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-- Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Inufelipe Postado Novembro 28, 2006 Autor Denunciar Share Postado Novembro 28, 2006 cara vlw a dica...mais eu o que eu quero é que ele só passe para o prosimo quando ele achar...não dava para escrever ele de outro jeito um jeito mais facilfalou Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mbleonardo Postado Novembro 29, 2006 Denunciar Share Postado Novembro 29, 2006 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; // corretoVoltando 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 linhaswhile ($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;} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ikkinet Postado Novembro 30, 2006 Denunciar Share Postado Novembro 30, 2006 Acho que seria mais fácil, e mais prático, além de usar as técnicas para criação de relacionamentos do banco de dados, fazer a verificação dos amigos pelo própria consulta SQL. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Inufelipe
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.
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.