Mysql: encuentre un valor de campo que sea igual a $ variable, haga eco de otro valor de campo para esa fila

cualquier ayuda/orientación sería muy apreciada. Espero que esto tenga sentido.

Estoy tratando de recuperar de db una lista de los amigos de los usuarios. El usuario actual proviene de $userid.

Estructura de la base de datos:

CREATE TABLE IF NOT EXISTS `wallfriends` (
  `mem_id_from` int(11) NOT NULL,
  `mem_id_to` int(11) NOT NULL,
  `confirm` int(1) NOT NULL,
  `sender` int(11) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

La parte con la que estoy luchando es obtener la identificación de amigos de la base de datos que no es el $userid actual (Encuentre un valor de campo que sea igual a $userid y haga eco de otro valor de campo para esa fila: por lo que podría ser mem_id_from O mem_id_to).

A continuación se muestra mi secuencia de comandos, pero no puedo entender la estructura de lo que necesito codificar.

(modificado de la respuesta de josnidhin)

    <?php
$my_friends = mysql_query('SELECT * from wallfriends WHERE (mem_id_from = '.$userid.') OR (mem_id_to = '.$userid.') AND confirm = 1');

$available_friends = mysql_fetch_array($my_friends);
foreach($available_friends as $friend)
{
  if($friend['mem_id_from']=== $userid && $friend['mem_id_to']!== $userid)
  {
    echo '<a href="'.$path.'profile.php?userid='.$friend['mem_id_to'].'">'
    echo '<img src="'.$post_avatar.'" width="70px" height="70px" border="0" alt="" />'
    echo '</a>';
  } 
  else if($friend['mem_id_from']!== $userid && $friend['mem_id_to']=== $userid)
  {
    echo '<a href="'.$path.'profile.php?userid='.$friend['mem_id_from'].'">'
    echo '<img src="'.$post_avatar.'" width="70px" height="70px" border="0" alt="" />'
    echo '</a>';
  }
}


        ?>

Después de la respuesta de josnidhin, probé:

$userid = '4276';

print_r($available_friends);

Array ( [0] => 3441 [mem_id_from] => 3441 [1] => 4276 [mem_id_to] => 4276 [2] => 1 [confirm] => 1 [3] => 3441 [sender] => 3441 ) 

preguntado el 12 de junio de 12 a las 10:06

2 Respuestas

Realmente no entendí lo que estás preguntando, pero creo que esto es lo que estás buscando.

<?php
    $my_friends = mysql_query('SELECT * from wallfriends WHERE (mem_id_from = '.$userid.') OR (mem_id_to = '.$userid.') AND confirm = 1');

    while ($friend = mysql_fetch_array($my_friends, MYSQL_ASSOC)) {
      if($friend['mem_id_from']=== $userid && $friend['mem_id_to']!== $userid)
      {
        echo '<a href="'.$path.'profile.php?userid='.$friend['mem_id_to'].'">'
        echo '<img src="'.$post_avatar.'" width="70px" height="70px" border="0" alt="" />'
        echo '</a>';
      } 
      else if($friend['mem_id_from']!== $userid && $friend['mem_id_to']=== $userid)
      {
        echo '<a href="'.$path.'profile.php?userid='.$friend['mem_id_from'].'">'
        echo '<img src="'.$post_avatar.'" width="70px" height="70px" border="0" alt="" />'
        echo '</a>';
      }
    }

    ?>

Consulte los documentos en http://php.net/manual/en/function.mysql-fetch-array.php

Respondido el 12 de junio de 12 a las 11:06

gracias por la respuesta: esto parece ser lo que busco. aunque no está haciendo eco de nada. He agregado else {echo'not trabajado';} después de else if y lo repite. Entonces, las declaraciones if no se activan. ¿Algunas ideas? - Codificado

probablemente la comparación intente cambiar '===' a '==' y '!==' a '!='. Si funciona, luego arregle el tipo de datos de las variables: Josnidin

Sí, ya lo probé y pasó lo mismo. He actualizado mi pregunta a partir de tu respuesta. He impreso la matriz. Sin embargo, la matriz parece extraña, ya que solo muestra 1 fila. Si ejecuto en SQL obtengo 4 filas. - Codificado

Todavía solo una fila en la matriz. Array ( [mem_id_from] => 3441 [mem_id_to] => 4276 [confirm] => 1 [sender] => 3441 ) ¡Pero al menos debería repetir eso! - Codificado

Sí, mysql_fetch_array obtuvo una fila del resultado y mueve el puntero interno hacia adelante. Por eso lo agregué al ciclo while para que obtenga todas las filas de resultados de su consulta. - Josnidin

<?php
$my_friends = mysql_query('SELECT * from wallfriends WHERE (mem_id_from = '.$userid.') OR (mem_id_to = '.$userid.') AND confirm = 1');

$available_friends = mysql_fetch_array($my_friends);
foreach($available_friends as $friend)
{
if($friend['mem_id_from']=== $userid && $friend['mem_id_to']!== $userid){
echo'<a href="'.$path.'profile.php?userid='.$friend['mem_id_to'].'">
    <img src="'.$post_avatar.'" width="70px" height="70px" border="0" alt="" />
</a>';
} else if($friend['mem_id_from']!== $userid && $friend['mem_id_to']=== $userid){
echo'<a href="'.$path.'profile.php?userid='.$friend['mem_id_from'].'">
    <img src="'.$post_avatar.'" width="70px" height="70px" border="0" alt="" />
</a>';
}
}

?>

Respondido el 12 de junio de 12 a las 12:06

Me doy cuenta de que esto es muy antiguo, pero sería útil alguna explicación junto con su código: RazorFinger

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.