Array will nicht so wie ich will ^^

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

  • Array will nicht so wie ich will ^^

    folgendes problem ...

    ich hab in tabelle nr. 1 die news gespeichert und in tabelle nr. 2 welcher user welche favoriten hat ...

    PHP-Code:
    mysql_select_dbMYSQL_DATENBANK ) or die("Auswahl der Datenbank fehlgeschlagen");
    $news_sql "SELECT newsid FROM favoriten WHERE user='$user'";
    $news_result mysql_query($news_sql) or die('Fehler 3: '.mysql_error());
    while (
    $row mysql_fetch_array($news_resultMYSQL_NUM))
    {
    $newsids[] = $row[0];}

    // die favoriten vom user werden gespeichert im Array als beispiel newsid nr. 2,6,8

    $anzahl count($newsids);

    for (
    $i 0$i $anzahl$i++)
    {
    mysql_select_dbMYSQL_DATENBANK ) or die("Auswahl der Datenbank fehlgeschlagen");
    $news_sql "SELECT titel FROM news WHERE id='$newsids[$i]'";
    $news_result mysql_query($news_sql) or die('Fehler 3: '.mysql_error());
    while (
    $row mysql_fetch_array($news_resultMYSQL_NUM))
    {
    $news[] = $row[0];}

    // hier kommt das das problem: ich bin jetzt davon ausgegangen das der jeden durchgang 
    // einmal den mysql befehl ausführt und einmal den echo befehl also beim ersten durchgang 
    // news[0] == 2, im zweiten news[0] == 6, im dritten news[0] == 8 .... dem ist aber nicht so 
    // schinbar ist news[0] IMMER == 8 .... also ich bekomme bei 3 news 3x die selbe news.


    echo '<tr>
               <td height="29">&nbsp;</td>
               <td class="Stil16"><div align="left">' 
    $news[0] . '</div></td>
               <td>&nbsp;</td>
             </tr>'
    ;

    Mein Problem besteht jetzt darin das ich keine Ahnung habe wie ich es anders machen könnte.

    kann ich das Array in der Mysql abfrage ( $newsids[$i]' ) irgendwie anders ausgeben das alle IDs da reingequetscht werden?

    zB.

    PHP-Code:
    $news_sql "SELECT titel FROM news WHERE id='2,4,5,6,7,8,123,17'";

    // ka ob ich das array irgendwie so ausgeben kann? bzw. ob es funktionieren 
    // würde ... dann könntre ich ja einfach noch den news befehl ändern und fertig:

    $news[$i
    Zuletzt geändert von owi; 13.09.2008, 01:56.

  • #2
    PHP-Code:
    $news_sql 'SELECT titel FROM news WHERE id IN ('.implode(','$newsids).')'

    Kommentar


    • #3
      Du machst ja ganz wirre Sachen....

      Zu später Stunde verwirrt mich das total

      Aber wie es scheint versuchst du zwei Tabellen via PHP miteinander zu verknüpfen anstatt das über MySQL zu tun.....

      Daher schlage ich vor du freundest dich mit den JOINS an. In deinem Fall wäre ein INNER JOIN wohl ausreichend.

      Damit verknüpft bereits Mysql für dich deine zwei Tables und du müsstest diese nicht mehr händisch und ineffizent selbst aufbereiten
      [color=blue]MfG Payne_of_Death[/color]

      [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
      [color=red]Merke:[/color]
      [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

      Murphy`s Importanst LAWS
      Jede Lösung bringt nur neue Probleme
      Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
      In jedem kleinen Problem steckt ein großes, das gern raus moechte.

      Kommentar


      • #4
        geil, danke, direkt mal testen =)

        Ja, das Problem ist das ich erst seit ner woche oder zwei php "kann" aber ich lerne mit jedem tag 1-2 neue funktionen

        bis ich alles kann muss ich mich halt noch so durchschlagen ^^

        Joins wird dann mal direkt meine nächste lektüre

        EDIT:

        mh... das mit dem implode befehl scheint nicht zu klappen =(

        $news[0] = leer
        $news[1] = leer
        $news[2] = leer
        usw.

        wenn ich es mit den zahlen direkt mache kommt wenigstens noch:

        $news[0] = funktioniert
        $news[1] = leer
        $news[2] = leer
        usw.

        und ja es exsistieren definitiv einträge in den IDs die ich getestet habe und ich habe die mysql abfrage auch VOR nicht mehr in die forschleife gesetzt.

        PHP-Code:
        mysql_select_dbMYSQL_DATENBANK ) or die("Auswahl der Datenbank fehlgeschlagen");
        $news_sql "SELECT titel FROM news WHERE id='5,6,9'";
        $news_result mysql_query($news_sql) or die('Fehler 3: '.mysql_error());
        while (
        $row mysql_fetch_array($news_resultMYSQL_NUM)){
        $news[] = $row[0];}

        // also eigentlich so ... hab nur testweise diekt zahlen eingefügt um zu kucken obs an 
        // den zahlen oder am explode befehl liegt ... also der explode befehl funktioniert .... 

        $news_sql 'SELECT titel FROM news WHERE id IN ('.implode(','$newsids).')'
        Zuletzt geändert von owi; 13.09.2008, 07:40.

        Kommentar


        • #5
          Warum schreibst Du von explode, wenn von implode die Rede ist?

          Das kann nicht gehen:
          PHP-Code:
          $news_sql "SELECT titel FROM news WHERE id='5,6,9'"
          es ei denn, Du hast ne id = "5,6,9"

          Ansonsten muss Du WHERE id IN (5,6,9) schreiben oder WHERE id = 5 OR id = 6 OR id = 9

          Kommentar


          • #6
            hab so ziemlich alle schreibmethoden probiert aber

            PHP-Code:
            $news_sql 'SELECT titel FROM news WHERE id IN ('.implode(','$newsids).')'
            gibt mir trotzdem nen leeres array ....

            Kommentar


            • #7
              Und was steht in $newsids drin?

              Kommentar


              • #8
                Vermutlich ist $newsids ein leeres Array wodurch das ganze SQL Statement die Ergebnismenge hinsichtlich Datensätze mit einer leeren ID beschränkt...

                Du solltest die in erster Linie mal
                $newsids anschauen und im Fehlerfall noch
                $news_sql ausgeben lassen...

                kurz gesagt sei dir immer im klaren wie deine aktuelle Datenstruktur aussieht, ansonsten ziehst du Folgefehler mit über die du irgendwann stolpern wirst.
                [color=blue]MfG Payne_of_Death[/color]

                [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                [color=red]Merke:[/color]
                [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                Murphy`s Importanst LAWS
                Jede Lösung bringt nur neue Probleme
                Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                Kommentar


                • #9
                  implode(',', $newsids) = 5,6,9

                  Kommentar

                  Lädt...
                  X