Array wird wiederholt ausgegeben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Array wird wiederholt ausgegeben

    Hallo,
    ich will mir eine Freundesliste bauen, die abfrage funktioniert eigentlich auch nur wird mir das Ergebnis 4 mal ausgegeben bzw. so oft wie ich freunde habe wird mir jeder Name gezeigt.
    PHP-Code:
    <?php
    session_start
    ();
    include 
    'dbconnect.php';

    $conid db_connect();
      
    $sql   "SELECT
                    friends.uid,
                    friends.fid,
                    friends.status,
                    login.id,
                    login.user
              FROM
                    `friends`
              INNER JOIN
                    `login`
              WHERE
                    `uid`    = '" 
    .mysql_real_escape_string($_SESSION['uid']). "' OR
                    `fid`    = '" 
    .mysql_real_escape_string($_SESSION['uid']). "' AND
                    `status` = '1'
                    "
    ;

    $result mysql_query($sql,$conid);


            while (
    $row mysql_fetch_assoc($resultMYSQL_ASSOC))
        {
            
    $friends[]  = $row['user'];
        }
           echo 
    "<pre>";
           
    print_r($friends);
           echo 
    "</pre>";
    ?>

    Array
    (
    [0] => chris
    [1] => chris
    [2] => chris
    [3] => chris
    [4] => babys
    [5] => babys
    [6] => babys
    [7] => babys
    [8] => mama
    [9] => mama
    [10] => mama
    [11] => mama
    [12] => mama1
    [13] => mama1
    [14] => mama1
    [15] => mama1
    [16] => julia
    [17] => julia
    [18] => julia
    [19] => julia
    )

    Das gibt er mir aus. Kann mir jemand sagen woran das liegt ich sehe das nicht bzw. finde das nicht. Ich bedanke mich schonmal.

    EDIT: Nimmt die Daten ausm Array nicht so ernst das hab ich so auf meiner Datenbank zum testen.
    Zuletzt geändert von diebo; 15.04.2013, 18:48.

  • #2
    Beim JOIN fehlt die ON-Bedingung. Ohne Bedingung machst du einen CROSS JOIN, wodurch sich alle Einträge multiplizieren.

    Kommentar


    • #3
      Ok danke ich werde mich Morgen mal genau mit der Bedingung beschäftigen habs gerade mal auf die schnelle versucht geht aber nicht wirklich . Aber vielen Dank jetzt weiß ich wo das Problem herkommt. Wäre ich alleine nie drauf gekommen .

      Kommentar


      • #4
        friends.uid und login.id gehören zusammen und sind mit primary/foreign key verbunden?
        Gruß
        Uzu

        private Homepage

        Kommentar


        • #5
          login.id ist primary nun versuche ich gerade friends.uid foreign zu machen aber klappt nicht er sagt immer.

          #1452 - Cannot add or update a child row: a foreign key constraint fails (`testlogin`.`#sql-1844_81c`, CONSTRAINT `#sql-1844_81c_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `friends` (`id`))

          Ist das erste mal das ich etwas mit JOINS versuche, wie man wahrscheinlich merkt . Mag mir einer sagen woran das liegt? Vielen dank schonmal.

          EDIT: Ok habe es hinbekommen. In der `uid`, `fid` sieht es im moment so aus:
          uid fid
          23 | 25
          23 | 28
          23 | 29
          30 | 23

          Dadurch zeigt mir das so an:
          Array
          (
          [0] => chris
          [1] => chris
          [2] => chris
          [3] => julia
          )

          Ist ja auch logisch. Denn habe ich
          PHP-Code:
          ON
                         friends
          .uid login.id OR
                         
          friends.fid login.id 
          hinzugefügt, weil die id's ja in beide Spalten kommen, nur habe ich jetzt ja wieder das Problem der wiederholung bzw. vom eigenen Usernamen, wie kann ich den denn rausnehmen?

          Achso die Lösung ist ich habe die Beziehung anders herum aufgebaut. von `friends.uid` zu `login.id` so gings denn.

          EDIT: So hab wieder eine Lösung, ich hab den eigenen Benutzernamen in in eine Variable gepackt, und denn
          PHP-Code:
          $friends[]  = $row['user'];
                  if(
          in_array($user ,$friends)){
                           
          $index=array_search  ($user,$friends);
                           unset(
          $friends[$index]);} 
          So zeigt er mir an was ich sehen möchte .
          Zuletzt geändert von diebo; 16.04.2013, 14:05.

          Kommentar

          Lädt...
          X