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

  • #16

    Das
    Code:
    //Datenbankverbindung
    ...
    von mir war nur als Aussparung gedacht, du musst natürlich statt dessen eine Serververbindung aufbauen und eine Datenbank auswählen.

    Ich weiß nciht, as du hast, oben hast dus doch gemacht

    Code:
    mysql_connect("localhost",
      "root","") or die
      ("Keine Verbindung moeglich");
      mysql_select_db("songtexte") or die
      ("Die Datenbank existiert nicht");
    Sei nicht so naiv! *kopfschüttel*

    Edit: Ich weiß zwar nicht warum bei dir nicht array[Feld] funzt, aber anscheinend muss du immer array['feld'] schreiben.
    ALso in deinem Fall "$detail['text']"

    Kommentar


    • #17
      ok ok ok. Bin halt noch grün hinter den Ohren, und ich weiss auch das ich schon mehr will als ich selbst kann. Aber ich bin sooooo nah dran.

      Soweit funzt es alles... geil ABER irgendwas stimmt noch nicht, wenn ich auf den link klicke, erscheint eine leere seite und im browser stehtwenn ich nun hinter das id= z.b. eine 1 setzte, zeigt er mir den text an?

      Kommentar


      • #18
        theoretisch sollte das das Script machen, dass den Link herstellt.
        Schau mal zum Spaß in der Statusleiste des Browsers, wohin so ein Link führt?
        wenn da überall
        http://localhost/detail.php?id=
        steht, stimmt was nicht mit dem Script vorher

        Kommentar


        • #19
          der link wie du ihn eben gepostet hast, führt nirgendwo hin. nur ne blanke seite. hab die scripts so übernommen wie du sagtest. ausserdem: was oder welches meinst du mit script vorher?

          hab meine test.php:
          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 'songtext';
              
              }
          
          mysql_free_result($ergebnis1);
          
          
          ?>
          und die detail.php:
          Code:
          <? 
          
          mysql_connect("localhost", 
            "root","") or die 
            ("Keine Verbindung moeglich"); 
            mysql_select_db("songtexte") or die 
            ("Die Datenbank existiert nicht"); 
          $id = $_GET['id']; 
          $query = "select text from lyrics where ID='$id'"; 
          $detail = mysql_query($query); 
          $detail = mysql_fetch_array($detail); 
          
          echo $detail['text']; 
          ?>

          Kommentar


          • #20
            1. Geh mal mit der Maus auf so einen Link und schau was in der Statusleite des Browsers steht (unten link)

            2. klick mal auf so einen Link und schriebe oben bei der Adressleiste mal ne Zahl dazu, z.B. 1

            3. du bracuhst eigentlich das mysql_free_results() am ende nicht

            Kommentar


            • #21
              zu 1. egal auf welchen link ich gehe, da steht immer
              Code:
              http://localhost/detail.php?id=
              
              zu 2. wenn ich oben ne 1 oder 2 oder 3 hinter das gleich setze, erscheint der text, den ich habe will.
              
              zu 3. ok, entfernt.

              Kommentar


              • #22
                du wählst bei deiner test.php ja immer die Falsche Spalte aus:
                eine SPlate "id" gibt es nicht, nur eine Spalte "ID" wie mir scheint.

                Code:
                echo 'songtext';

                Kommentar


                • #23
                  daran lag es nicht. hab mehrere varianten ausprobiert. die bezeichnung der spalten sind auch alle kleingeschrieben... hmmm

                  Kommentar


                  • #24
                    lass dir mal nur $row['ID'] ausgeben, ob das geht...

                    Kommentar


                    • #25
                      ich hab's jahaaaa.

                      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 'songtext';
                          
                          }
                      
                      
                      ?>
                      hab zwar noch nicht verstanden, warum, aber das wird noch. vielen dank erstmal bis hierhin. meld mich heut bestimmt nochmal

                      Kommentar


                      • #26
                        okokok. einen hab ich noch, was mir grad aufgefallen ist. im vergleich wohl ne kleinigkeit für EUCH.

                        Code:
                        echo 'songtext';
                        Der Link funzt, nur die Bezeichnung ist immer die gleiche. Jetzt würd ich gern als Bezeichnung den Titel aus der gleichnamigen Spalte dahinbringen. Hab auch schon versucht, das ">songtext</a>" gegen "$row->titel" zu ersetzen, aber hülft nix.

                        bittebitte

                        Kommentar


                        • #27
                          wie hast du es ausgetauscht?
                          Code:
                          echo ''.$row->titel.'';
                          so?

                          Kommentar


                          • #28
                            Nein, leider nicht, hatte es so
                            Code:
                            echo ''$row->titel'';
                            bin jetzt schonmal ein ganzes schlück stauer. ich danke dir.

                            Kommentar


                            • #29
                              manche mögen es als spam interpretieren ..
                              sollen sie .. mir egal.

                              also ich kritisiere ja oft leute in diesem forum, da sie keinerlei eigenleistung zeigen etc.

                              jetzt mal 180° wende ..
                              nehmt euch mal ein bsp. an edgecombe.

                              selber versuchen .. wenns gar net weitergeht nachfragen .. mit den tipps weiterarbeiten .. nicht diese dummen "ich suche ein scrpt, wer kann mir helfen"-fragen ..

                              lob in deine richtung edgecombe ..

                              muss meiner ansicht nach auch mal sein ..

                              grüe ben ..
                              [b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]

                              Kommentar


                              • #30
                                Rechts so



                                *agreed*

                                nichts nervt mehr, als selbst son prob zu haben. Dann findet man einen Thread der EWIG lange darauf rumreitet, und wenn der Frager die Lösung hat, tut er sie nicht kund


                                zu $row->id und $row['id']

                                mit $row['id'] rufst du einen Wert aus dem index eines assoziativen arrays auf. Genauso gehts mit ner Zahl statt nem Namen mit normalen arrays.

                                ein assoziatives array ist ein array, das statt eines integer-indexes auch einen einprägsamen index-namen benutzt.

                                bsp:
                                //Array mit integer-index
                                array[1]="Kiel";
                                array[2]="Schleswig-Holstein";
                                array[3]="BRD";


                                //Array mit assoziativem index
                                array['stadt']="Kiel";
                                array['bundesland']="Schleswig-Holstein";
                                array['staat']="BRD";


                                mit $row->id rufst Du Variablen aus einer Klasse direkt ab, die für funktionen oder kontruktoren eingesetzt wurden. Als Bsp. hab ich mal ne mysql.class.php zusammen gegriffelt:

                                <?php
                                class db_connection { /# Name der Klasse
                                var $db_url="localhost";
                                var $db_user="username";
                                var $db_pw="DB_passwort";
                                var $db_name="Datenbankname";
                                var $db_table="Tabelle";
                                var $gast="benutzer";
                                var $passwort="pass";
                                var $verbindung;
                                var $resultat;

                                // DB verbinden
                                function db_connection() { /#Mit db konnektieren /#hat den selben namen, wie die Klasse. Die Function wird deshalb konstruktor genannt. die Variablen eines konstruktors werden mit $this->variable angesprochen!
                                GLOBAL $db_url,$db_user,$db_pw,$db_name;
                                $this->verbindung = mysql_connect($this->db_url, $this->db_user, $this->db_pw) or die ("Konnte keine MySql-Verbindung aufbauen\n");
                                mysql_select_db($this->db_name, $this->verbindung) or die ("Konnte die MySql-Datenbank nicht auswählen\n");
                                return(true);
                                }

                                function db_abfrage($query){ /# ist eine normale Funktion innerhalb der klasse
                                if(!$resultat=mysql_query($query, $this->verbindung)) {
                                echo '
                                '.mysql_errno().':'.mysql_error().'
                                #1
                                ';
                                }
                                return($resultat);
                                }

                                }
                                ?>

                                Da sehen wir schon die Schreibweise. this->variable wird bei konstruktoren immer angegeben, dort ergibt die normale übergabe von variable einen fehler
                                bei:
                                $this->verbindung = mysql_connect($this->db_url, $this->db_user, $this->db_pw), erkennt man schon die vereinfachung, die durch $this->verbindung eingeführt wird, statt immer wieder den mysql_connect($........) anzugeben, wenn eine abfrage erfolgen soll. $this->verbindung ist übrigends der Verbindungs-identifier für die Datenbank.
                                wenn ihr also per include/require ("mysql.class.php "); diese datei einbindet, könnt ihr jede Variable aus der Klasse die schon mal verarbeitet worden ist, direkt abrufen - des geht auch mit den standardklassen.

                                abgerufen wird alles in dem parent-script.

                                kleines intro..
                                <?php
                                $mysql_class="../mysql.class.php";
                                require($mysql_class);

                                $database=new db_connection; /# aus der klasse db_connection wor eine neue instanz initiiert.
                                $query="SELECT benutzer,pass,active FROM member WHERE benutzer LIKE '".$_SERVER['PHP_AUTH_USER']."'";

                                if(!isset($PHPSESSID)){
                                if($_SERVER['PHP_AUTH_USER']) { //username-feld leer?
                                if($_SERVER['PHP_AUTH_PW']) { //passwort-feld leer?
                                if($db_rueck=$database->db_abfrage($query)) { /#db_abfrage ist in der "ur"-klasse db_connection zu finden
                                .
                                .
                                .
                                .
                                ?>


                                Hier wirkt es vielleicht nicht unbedingt sinnig, es so zu machen. wirkt umständlich, doch es gibt zwei nette argumente dazu.
                                - Man kann sich meistens das umständliche übergeben und zerlegen von arrays schenken, um an einen einzelnen wert zu gelangen.
                                - man benutzt keine aliases *klingt komisch als argument?*
                                nun ja, wenn alles läuft und korrekt eingestellt ist, sind aliases ne feine sache, um sich kurz zu fassen. wenn die aliase nicht oder nicht korrekt arbeiten, kann es ganz schön müßig sein, die aliase zu entfernen. ist aber nur für portable lösungen wirklich interessant, denn es läuft immer.

                                Kleiner Tipp:
                                wenn ihr fest steckt, und euch keinen Reim auf die aktionen des scriptes, druckt mal die Werte der Variablen einfach auf der folgenden Seite aus.
                                wenn ich mich verrenne, mach ich ne leere php-seite, wo nur alle parameter/aufrufe (z.b. SQL. da kann man viele unschöne überraschungen erleben, weil die abfrage dann in der richtigen verbindung anders ausgeben wird als eigentlich gedacht. ich sag nur select abfrage, mit und ohne "",'',``,"'.$var.'",'".var."' usw.) ausgegeben werden. Das ist oft VIEL aufschlussreicher als jede Fehlermeldung.

                                - wenn ich an meinen KRAMPF mit den SQL-Abfragen denke, bis ich herausgefunden hab, das es an ner fehlerhaften implementation der DB des Hosters lag. Hat mich im endeffekt auch 1-2 Wochen(n00b) gekostet, aber andersrum wär ich wohl NIE zur Lösung gekommen, da ich zuletzt zu 100% sicher war, das net ich zu hohl bin, sondern der Hoster


                                so hoffe, das net fehler drin sind *wer einen findet, darf ihn essen*
                                wenn ich n paar leutz zeit und nerven gespart hab, dann freuts.
                                ansonsten .... *SPAM!*

                                Kommentar

                                Lädt...
                                X