Es wird "zuviel" ausgegeben!!

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

  • Es wird "zuviel" ausgegeben!!

    Hallo zusammen...

    Ich habe da ein kleines Problem bei der Abfrage einer Datenbank...:
    Der Inhalt meiner Tabelle sieht folgendermassen aus:

    titel_de / Test DE / -
    news_de / Inhalt DE / -
    titel_en / - / Test EN
    news_en / - / Inhalt EN
    date / 123 / 2134
    id / 4 / 6

    Nun ist mein Problem folgendes. Wenn ich jetzt mit einer for-Schleife nur titel_de, news_de und das dazugehörige Datum ausgeben will, kommt zwar nur der Text von titel_de und news_de, das Datum aber logischerweise von jedem Datensatz!

    if ($verstanden===ja) {
    echo; "Gibt es da vernünftige Lösungen? Wie kann ich Daten nur aus einer Zeile ausgeben?";

    else {
    echo: "hmmmmm";
    }


    Vielen dank
    Figugegu

  • #2
    SELECT columns FROM table LIMIT 1;
    tata
    moqui

    [COLOR=red]Ich will keine unaufgeforderten Mails über PHP Fragen. Es gibt ein Forum hier! Und ich bin nicht Scripter für jeden, der mir ne Mail schreibt![/COLOR]

    Kommentar


    • #3
      Parse error: parse error, expecting `','' or `';'' in /deinem/beitrag on line 5

      Kommentar


      • #4
        das liegt an dir..
        was steht den in zeile 5?ß
        kfg

        Kommentar


        • #5
          Original geschrieben von Trashar
          das liegt an dir..
          was steht den in zeile 5?ß
          ich nehme an, er bezieht sich auf

          echo; "Gibt es da vernünftige Lösungen? Wie kann ich Daten nur aus einer Zeile ausgeben?";
          und
          echo: "hmmmmm";

          aus der fragestellung ;-)
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            @ Moqui

            Das mit limit 1 geht leider auch nicht, denn es kann auch sein, dass in titel_de und news_de mehr als nur ein Eintrag vorhanden ist!!

            Muss ich da wirklich noch neue Spalten mit den Werten date_de und date_en machen?

            Kommentar


            • #7
              @wahsaga -> richtig.
              @Xenalla -> spar Dir die anti-hilfreichen Komentare zukünftig. *mich auspeitsch*

              Kommentar


              • #8
                ja, danke für eure Kommentare, aber eine Lösung oder eine gute Idee habe ich bis jetzt leider nicht bekommen!!
                Zuletzt geändert von figugegu; 11.10.2003, 19:28.

                Kommentar


                • #9
                  ich kann dir leider bei deinem problem nicht ganz folgen;

                  poste doch bitte mal ein beispiel, wie es aussieht und wie es aussehen sollte damit ich überhaupt blick, was da falsch läuft

                  Kommentar


                  • #10
                    ok, ich versuche, das ganze zu erklären. Es ist wahrscheinlich ziemlich banal, nur blick ich da nicht durch!!

                    Es geht um ein mehrsprachiges Newssystem. Der Benutzer trägt die News in allen drei Sprachen ($lang=de oder fr oder en) ein. Nun müssen diese je nach Sprache ausgegeben werden. Soweit geht das auch, nur, wenn beispielsweise die Deutschen News angezeigt werden, werden die anderen Sprachen zwar nicht angezeigt, aber das Datum der anderen Sprachen wird angezeigt.

                    Meine Tabellenstruktur sieht folgendermassen aus:
                    id / titel_de / news_de / titel_en / news_en / titel_fr / news_fr / date

                    Wie gesagt, nun kann es vorkommen, dass nur ein Deutscher Eintrag vorhanden ist und die anderen leer sind.

                    Der Code sieht folgendermassen aus:
                    PHP-Code:
                    <? switch ($lang) {
                    case de: {

                    $sql = "SELECT titel_de, news_de, date, id FROM smn_news ORDER BY id desc";
                    $res = mysql_query($sql, $db);

                    if($res)                                             // wenn erfolgreich gelesen wurde                                          
                    {
                        while ($LinkRec = mysql_fetch_array($res))
                            {
                            $titel_de[]=$LinkRec['titel_de'];
                            $news_de[]=$LinkRec['news_de'];
                            $date[]=$LinkRec['date'];
                            $id[]=$LinkRec['id'];
                                  }
                    }
                    else
                    {
                    echo "Probleme beim Lesen der Datenbank, bei weiterem auftreten des Problems bitte Webmaster verständigen!";
                    }
                    mysql_free_result($res);
                    mysql_close($db);                        //Verbindung zu datenbank schliessen

                    $summe = 0 ;
                    for ($i=0; $i<count($titel_de); $i++)                // Loop start

                    {        

                    php print $titel_de[$i] ;
                    php print $news_de[$i]; 
                    php print $date[$i] ;

                    }
                        } break;

                    case en: {
                    //jetzt das ganze von vorne.....
                    ?>
                    Verstanden??

                    Vielen Dank
                    Zuletzt geändert von figugegu; 12.10.2003, 13:40.

                    Kommentar


                    • #11
                      Puh den code soll jemand durchblicken
                      1. Du überforderstz irgendwie das switch, sowas macht man nicht.
                      2. Du holst ja auch das datum egal ob ein deutscher Eintrag vorhanden ist...
                      3. mach das ganze as Funktion und den Rückgabewert der Funktion in dem switch ausgeben
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        ok, das ganze sieht recght interessant aus, wobei ich einige sachen ncith verstehe.

                        zum code: macht es sinn, die datenbankabfrage zuerst in ein array zu schreiben und dann auszugeben? mann könnte es doch gleich ausgeben.

                        zur datenbank: wäre es nicht sinnvoller die struktur der dantebnak zu überabreiten?

                        titel
                        news
                        id
                        date
                        sprache

                        bei dieser datenbankstruktur kannst du dir auch code sparen, da du nicht mehr zwichen den variablen titel_en, titel_de bzw titel_fr unterscheiden müsstest und in deiner switchabfrge nur noch die select-zeile abändern bräuchtest.

                        aber vielleicht denke ich auch falsch.
                        klar, die zugehöhrigkeit zu den drei sprachen kann verloren gehen, aber vielleicht gibt es ja auch news, die für die anderen sprachen weniger interessant sind. aber mann könnte auch die datenbank um ein weiteres feld erweitern (wobei, wie oft käme es vor, das ein eintrag in der gleichen sekunde geschrieben wird?). mann müsste halt auch das innsert erweitern.

                        Kommentar


                        • #13
                          @jochenj:

                          Das mit der Datenbank ist mir noch gar nicht in den Sinn gekommen!!
                          Geht ja wirklich einfacher.
                          Das Problem sollte somit beseitigt sein. Vielen Dank

                          @MelloPie:

                          Das mit dem Datum hat sich ja jetzt erledigt.
                          Nun aber eine Frage, wie schreibe ich denn so einen Ablauf in eine Funktion?

                          Vielen Dank

                          Figugegu

                          Kommentar


                          • #14
                            Ich hab das ganze jetzt folgendermassen gelöst:
                            PHP-Code:
                            <?
                            $sql = "SELECT * FROM smn_news WHERE language='$lang' ORDER BY id desc";
                            $res = mysql_query($sql, $db); 
                            $myrow = mysql_fetch_array($res);

                            if($res) { ?>
                            <table width="433" height="93" border="0">
                              <?
                            $summe = 0 ;
                            for ($i=0; $i<count($titel); $i++)                // Loop start
                            {        
                            ?>
                              <tr> 
                                <td width="60" height="39">&nbsp;</td>
                                <td width=""><u><?php echo $myrow['titel']; ?></u><br><?php echo $myrow['news']; ?></td>
                              </tr>
                              <tr> 
                                <td height="21">&nbsp;</td>
                                <td><div align="right"><font size="1"><em><?php print $myrow['date'] ;?></em></font><br>
                                  </div></td>
                              </tr>
                              <tr>
                                <td height="21">&nbsp;</td>
                                <td><br><br><br></td>
                              </tr>
                              <? } ?>
                            </table>
                            <?
                            }
                            else
                            {
                            echo "Probleme beim Lesen der Datenbank, bei weiterem auftreten des Problems bitte $webmaster verständigen!";
                            }
                            ?>
                            Jetzt werden aber keine Einträge ausgegeben, obwohl sie in der Datenbank vorhanden sind!!

                            Tipp?
                            Danke

                            Kommentar


                            • #15
                              probier mal zur ausgabe den folgenden code, damit tue ich mir perönlcih wesentlich einfache als mit der for schleife. das in der while schleife zwischen {} muss halt entsprechend angepasst werden ist hier nur ein beispiel

                              PHP-Code:
                              $sql "SELECT * FROM smn_news WHERE language='$lang' ORDER BY id desc";
                              $res mysql_query($sql$db)

                              echo 
                              "<table width=\"433\" height=\"93\" border=\"0\">";
                              while (
                              $myrow mysql_fetch_array($res))
                                {
                                 echo 
                              $myrow['namedatenbankfeld1']."<br>\n";
                                 echo 
                              $myrow['namedatenbankfeld2']."<br>\n";
                                 ...
                                 }
                              echo 
                              "</table> 
                              debug versuche:

                              bau mal ein
                              echo $sql; um die abfrage zu checken.
                              transferier deinen abfrgecode in phpmyadmin um zu testen was ausgegeben wurde. gibt es fehlermedlungen??

                              Kommentar

                              Lädt...
                              X