Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Kleine Frage

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Kleine Frage

    Hallo,

    zuerstmal die Ausgangssituation:

    CODE:

    <?
    mysql_connect("localhost",
    "root","") or die
    ("Keine Verbindung moeglich");
    mysql_select_db("songtexte") or die
    ("Die Datenbank existiert nicht");

    $abfrage = "SELECT * FROM lyrics WHERE id LIKE 'w'";
    $ergebnis1 = mysql_query($abfrage);

    while($row = mysql_fetch_object($ergebnis1))
    {
    echo $row->name;
    echo ", ";
    echo $row->vor;
    echo " - ";
    echo $row->titel;
    echo " - ";
    echo $row->text;
    echo " "
    echo $row->album;
    echo "<h2> </h2>";


    }

    mysql_free_result($ergebnis1);


    ?>


    Hiermit lasse ich mir aus meiner Datenbank alles anzeigen was die ID "w" trägt. Jetzt möchte ich die Informationen aus der Spalte "text" nicht anzeigen lassen, sondern erst, wenn ich auf den Titel klicke. Sprich, ich möchte gern das Ergebnis "Titel" als Link zum Ergebnis "Text" machen.

    Geht das? Wo kann ich mich schlau lesen, oder habt ihr ne Kurzversion?

    Danke im voraus


  • #2
    also erst mal ..
    Code:
    $abfrage = "SELECT * FROM lyrics WHERE id = 'w'"; 
    $ergebnis1 = mysql_query($abfrage) or die (mysql_error());
    das wird dir fehler aufzeigen ..
    außerdem solltest du dir mal die anwendungsbereiche von LIKE anschauen.

    dann mal was ganz anderes.
    es ist absoluter schwachsinn das objekt, welches du durch mysql_fetch_object erhälst $row zu nennen.

    klasse .. reihe .. was besagt das?
    was enthält dieses objekt?

    sinnvolle namensgebung ist immer in plus .. nur mal so am rande.

    dann ..

    Code:
    echo " " 
    [..]
    echo "<h2> </h2>";
    total sinnlos .. was soll das bitte sein?? und vor allem ... wo soll der sinn liegen?

    nun gut .. und dann zu deiner frage.
    so wie ich das sehe möchtest du eine ausgabe haben, die alles ausgibt außer dem text. stimmt das?

    weiterhin willst du, dass wenn man auf den link "titel" klickt der text angezeigt wird.

    na das kannst du per JS machen .. oder du speicherst den text in einer session-variable und liest diese dann beim erneuten aufruf über z.b. folgenden link aus
    Code:
    echo "<a href=\"".$_SERVER['PHP_SELF']."?text=yes\">".$row->titel."</a>";
    das ist alles nur ein grobes prinzip .. das umzusetzen schaffst du alleine.

    oder du machst es so, dass du je nach übergebenem parameter ... also z.b. text=yes oder text=no den text ausliest oder eben den rest ..

    bsp.
    Code:
    	if ( (isset ($_GET['text']) AND (strcmp($_GET['text'],"yes") == 0) )
    	{
    	    $sql = "SELECT text FROM tabelle";
    	    # verarbeitung ...
    	}
    	else
    	{
    	    $sql = "SELECT restlicher_kram FROM tabelle";
    	    # verarbeitung ...
    	    echo "<a href=\"".$_SERVER['PHP_SELF']."?text=yes\">".$row->titel."</a>";
    	}
    alles ungetestet .. aber es geht ja eh nur um das prinzip ..

    grüße ben
    privater Blog

    Kommentar


    • #3
      1. du solltest bei exakten Übereinstimmungen bei der Query immer spalte='Wert' nehmen und nicht LIKE

      2. Ja das geht. Allerdings befürchte ich, dass du keine eindeutige ID für jeden EIntrag hast, oder?
      Wenn nein, wird das relativ schwierig, weil zu deinem problem eine Spalte immer unterschiedliche Werte aufweisen muss.

      Ok, nehmen wir an, du hast keine solche Spalte. Mach nix, kann man nachträglich einfügen. Ich kann dir ein schnell ein Script schreiben kleine Script übernimmt das realtiv einfach, leider muss dazu alles in eine neue Tabelle überschrieben wird. Anschließend wir die alte Tabelle gelöscht, wieder angelegt und wieder aufgefüllt, damit du nichts ändern musst.

      wenn du es selbst machen kannst, musst du bei der neuen Tabelle Eintrag mehr machen (standartmäßig am Anfang), Ich nenne es immer ID, ich glaube auch, dass MySQL groß und klein unterscheidet.
      Du musst bei der erstellung (z.B. mit PhpMyAdmin) beachten, dass du diese Spalte mit den Einstellungen INT mit 255 Zeichen, auto_increment und unique erstellst.

      Wenn du überhaupt nix damit anfangen kannst, kann ich es ausnahmnweise für dich schrieben, allerdings erst morgen abend.
      dazu bräuchte ich aber deine tabellenstruktur für die tabelle lyrics (alle namen, die Längen, bes. Einstellungen, etc.)

      Damit du dich nicht beklagst :
      Also Wenn du so eine echte ID hast, kannst du immer einen Link machen mit
      Code:
      echo 'Detail';
      dann erstellst du eine Datei mit namen detail.php und darin muss dann stehen:
      Code:
      <?
      // Datenbankverbindung
      ...
      $id = $_GET['id'];
      $query = "select text from lyrics where ID='$id'";
      $detail = mysql_query($query);
      $detail = mysql_fetch_array($detail);
      ...
      echo $detail[text];
      ?>
      PS: Ben war schneller, ich schreibs trotzdem, weil ich mir so Mühe gegeben hab

      Kommentar


      • #4
        Zitat von Jojo
        [..] ich schreibs trotzdem, weil ich mir so Mühe gegeben hab
        putzibutzibuh ..
        naja doppelt hält ja besser ..
        privater Blog

        Kommentar


        • #5
          was heißt hier butzibutzibuh?
          Hää?!
          Ich wollt ihm zuerst gleich das Script hinschreiben, habs dann aber gelassen, weil ich dazu dann doch die anderen Spalten bräuchte, wenn welche existieren

          Kommentar


          • #6
            Da hast du recht, Jojo, ich kann relativ wenig damit anfangen. Aber ich fänd es wirklich supernett, wenn du mir hilfst. Du hast genau erfasst, was ich machen möchte, also scheint das ja eigentlich nicht unmöglich zu sein (höchstens für mich. Am Rande: diese echo " " - Geschichte ist mein Versuch gewesen, die Ergenisse einer Abfrage nicht so: ERGEBNISeRGENBISeGERBNIS anzeigen lassen zu müssen. Bin halt noch nicht so weit. Aber vielleicht kriege ich das ja mit eurer Hilfe hin.Das wird so ziemlich meiner einzig schwerer Ausflug in PHP. Wenn diese Datenbank erstmal läuft und man sie über ein HTML Formular aktualisieren kann (was ich dank schattenbaum.net schon geschafft hab), dann bin ich ja schon zufrieden. Viel mehr soll gar nicht kommen (bis jetzt).

            Also

            Ich habe die Datenbank laut deinen Angaben umgebaut:

            Datenbank: songtexte Tabelle: lyrics


            id int(255) not_null Auto_increment Primary_key
            vor varchar(25) not_null
            name varchar(25) not_null
            titel varchar(50) not_null
            text longtext not_null
            album varchar(30) not_null
            so sieht meine datenbank aus, sollte eigentlich jetzt stimmen. Nur ein Problem hatte ich: Ich konnte die id spalte nicht als unique markieren. Er ließ nur Primary key zu.... is das ok?

            Kommentar


            • #7
              du hättest gar nix machen müssen

              das Problem ist erstens, dass du in der id-Spalte keine Zahlen hast und zweitens, dass du nachträglich irgendwie kein unique machen kannst, keine ahnung warum.

              Hä?
              wie sehen denn deine Einträge in der Spalte id aus????
              vorher waren es doch Buchstaben wie z.B. "w" und jetzt?

              hast du die alte Tabelle gelöscht und eine neue angelegt?

              bitte klär mich auf!

              Kommentar


              • #8
                ich hab die id spalte mit den buchstaben gelöscht... dann eine neue angelegt mit zahlen, wie du gesagt hast. nur das ich die nicht unique machen konnte. wenn es nicht anders geht, leg ich komplett ne neue an, wenn das unique notwendig ist

                Kommentar


                • #9
                  so. hab jetzt die tabelle neu angelegt, dann hab ich die detail.php so wie du gesagt hast erstellt und hab meinen Code wie folgt abgeändert:

                  Code:
                  <?
                    mysql_connect("localhost",
                    "root","") or die
                    ("Keine Verbindung moeglich");
                    mysql_select_db("songtexte") or die
                    ("Die Datenbank existiert nicht");
                    
                    $abfrage = "SELECT * FROM lyrics";
                    $ergebnis1 = mysql_query($abfrage);
                  
                    while($row = mysql_fetch_object($ergebnis1))
                      {
                       
                      echo 'Detail';
                  
                      }
                  
                  mysql_free_result($ergebnis1);
                  
                  
                  ?>
                  Beim Ausführen jedoch kommt folgende Fehlermeldung:

                  Notice: Use of undefined constant ID - assumed 'ID' in D:\www\test3.php on line 14

                  Kommentar


                  • #10
                    Code:
                    $row['ID']

                    Kommentar


                    • #11
                      @Guradia
                      bist du dir sicher?
                      bei mir funktioniert es auch immer mit row[Spalte]

                      Kommentar


                      • #12
                        Hmm. soweit is der Fehler weg. Jetzt zeigt er mir alle Links an, und wenn ich auf einen drück, kommt der Fehler:

                        Parse error: parse error, unexpected '.' in D:\www\detail.php on line 3

                        detail.php
                        <?
                        // Datenbankverbindung
                        ...
                        $id = $_GET['id'];
                        $query = "select text from lyrics where ID='$id'";
                        $detail = mysql_query($query);
                        $detail = mysql_fetch_array($detail);
                        ...
                        echo $detail[text];
                        ?>

                        Kommentar


                        • #13
                          Zitat von Edgecombe
                          ... und wenn ich auf einen drück, kommt der Fehler:
                          Parse error: parse error, unexpected '.' in D:\www\detail.php on line 3
                          detail.php
                          <?
                          // Datenbankverbindung
                          ...
                          ?>
                          Echt niedlich

                          Kommentar


                          • #14
                            kennst du nicht die neue German-Object-Ertweiterung
                            Damit kann man auch
                            Code:
                            //Datenbankverbindung
                            ...
                            schreiben
                            anstatt den echten Code.

                            Kommentar


                            • #15
                              hmm. wenigstens bring ich was zustande über das man schmunzeln kann,
                              ich weiss aber echt nicht wo der fehler liegt. waren es die drei punkte? geh ich mal von aus, bin ja noch am trial and error prinzip, also noch nicht die volle ahnung wofür jeder befehl ist.

                              hab die detail.php so abgeändert
                              Code:
                              <? 
                              
                              $id = $_GET['id']; 
                              $query = "select text from lyrics where ID='$id'"; 
                              $detail = mysql_query($query); 
                              $detail = mysql_fetch_array($detail); 
                              
                              echo $detail[text]; 
                              ?>
                              *heul*
                              da kommt der fehler nu:
                              Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\www\detail.php on line 6

                              Notice: Use of undefined constant text - assumed 'text' in D:\www\detail.php on line 8

                              Kommentar

                              Lädt...
                              X