Jump to content
Fórum Script Brasil
  • 0

Problema Com Arrays E Mysql


Inufelipe
 Share

Question

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 to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...