Auslesen von Daten aus der Datenbank

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

  • #16
    Das habe ich auch schon versucht, aber ich finde zu dem JOIN nirgendwo eine vernünftige Anleitung oder ähnliches.

    Das was ich zusammengebastelt hatte sah wie folgt aus:
    PHP-Code:
    <?php
    $sql 
    "SELECT user_nick FROM pk__user LEFT JOIN pk__vote_rated ON pk__user.user_id = pk__vote_rated.vote_rated_userid
     WHERE pk__vote_rated.vote_rated_cat='forum' AND pk__vote_rated.vote_rated_contid='745'"
    ;
    $test mysql_query($sql) or die ("Anfrage nicht erfolgreich");

    while (
    $adr mysql_fetch_array($test'))
    {
    ?>
    <table cellpadding="1" cellspacing="3" border="1">
    <tr>
    <td><?=$adr['
    user_nick']?></td>
    </tr>
    </table>
    Wo hier der Fehler sitzt habe ich nach Stunden nicht gefunden. Die 'contid' gebe ich nur vor, da das Script derzeit ja noch außerhalb des CMS läuft.

    Es handelt sich eben um zwei Tabellen,
    die pk__user in der die 'user_id' und der 'user_nick' stehen
    und
    die pk__voted in der 'vote_rated_userid' und die 'vote_rated_cat' stehen.

    Später im CMS soll ja dann anhand der 'thread_id'='vote_rated_contid' und der 'vote_rated_cat'
    in der
    pk__voted Tabelle
    die 'vote_rated_user_id' ausgelesen werden.

    Dann soll diese mit der 'user_id'
    aus der
    pk__user Tabelle
    verglichen und der 'user_nick'
    ausgegeben werden.

    Ohje und da fällt mir noch ein, dass es ja Votings gibt bei denen man mehrere Antworten geben kann, im Moment würde ja dann ein Nick mehrmal ausgegeben?

    PUH ... Sorry, ich hoffe dass ich das verständlich erklären konnte ?

    Lieben Gruß
    Anna
    Zuletzt geändert von AnMa; 26.08.2011, 22:43.

    Kommentar


    • #17
      Ich versuche noch mal mein Glück

      Nach gefühlten 100.000 verschiedenen Seiten und Anleitungen habe ich nun folgenden Lösung in einer externen Datei zustande bekommen.

      PHP-Code:
      <?php
      require_once ('konfiguration.php');
      $db_link mysql_connect (MYSQL_HOSTMYSQL_BENUTZERMYSQL_KENNWORT);

      // Nutzen von Datenbank - Name ist hinterlegt in
      // Konstante MYSQL_DATENBANK
      $db_sel mysql_select_dbMYSQL_DATENBANK )
         or die(
      "Auswahl der Datenbank fehlgeschlagen");

      $sql "SELECT * FROM pk__vote_rated LEFT JOIN pk__user ON pk__vote_rated.vote_rated_userid = pk__user.user_id WHERE
       pk__vote_rated.vote_rated_cat = 'forum' AND pk__vote_rated.vote_rated_contid='543'"
      ;

      $db_erg mysql_query$sql );
      if ( ! 
      $db_erg )
      {
        die(
      'Ungültige Abfrage: ' mysql_error());
      }

      while (
      $zeile mysql_fetch_array$db_ergMYSQL_ASSOC))
      {

      echo 
      " "$zeile['user_nick'] . " |";
      }

      mysql_free_result$db_erg );
      ?>
      Wo ich aber überhaupt nicht weiter komme ist die Trennung dieses Scripts innerhalb des CMS, zwischen PHP-Datei und HTML-Datei.

      Kommt die "while"-Schleife nun noch in dei PHP und nur das "echo" in die HTML oder wie bekomme ich es nun hin, dass er mir in der HTML die Namen auflistet?

      Wäre echt lieb wenn mir da jemand helfen könnte.

      Lieben Gruß
      Anna

      Kommentar


      • #18
        Am besten sammelst du die Namen in einem Array und bettest in die HTML-Seite dann so etwas wie

        PHP-Code:
        <ul>
            <?php foreach ($array as $name): ?>
            <li><?php echo $name?></li>
            <?php endforeach; ?>
        </ul>
        ein.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #19
          Darf ich mal etwas für das allgemeine Verständnis fragen, dafür finde ich nämlich nirgend wo eine Antwort.

          Liege ich mit folgendem richtig?

          PHP-Code:
          $sql 
          Wählt die entsprechenden Daten zu bestimmten Bedingungen aus der Datenbank aus.

          PHP-Code:
          $IRGENDWAS mysql_querry$sql
          Was genau macht dieser Befehl eigentlich?

          PHP-Code:
          ($zeile mysql_fetch_array$IRGENDWASMYSQL_ASSOC)) 
          Stimmt es, dass hier der Variablen "Zeile" ein "Datenbankarray" zugewisen wird, dass ich wie ein normales ARRAY behandeln kann?

          Oder wo kann ich auf solche Fragen die entsprechenden Antworten finden, ich möchte ja nicht nur irgendwas basteln,sondern auch verstehen was ich tue

          LG
          Anna

          Kommentar


          • #20
            Zitat von AnMa Beitrag anzeigen
            Oder wo kann ich auf solche Fragen die entsprechenden Antworten finden
            Such dir bitte ein Grundlagen-Tutorial, das den Umgang mit MySQL aus PHP heraus erklärt.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #21
              Ich suche und suche, finde aber nirgendwo eine Antwort auf meine Frage.

              In allen Tutorials wird gezeigt, aber nicht erklärt wie man Datenaus der DB ausliest.

              zum Beispiel:
              PHP-Code:
              $db_erg mysql_query$sql); 
              Dieser Befehl wird überall einfach vorgegeben, aber wie soll man das Gesamte verstehen wenn hier schon keine Erklärung statt findet?

              Ich verstehe einfach nicht was dieser Befehl bringt. Schließlich wurde vorher ja schon die Variable ""sql" schon mit den Ergebnissen der Datenbank gefüttert oder?

              Das einzige was ich mir vorstellen könnte ist, dass hier eine weitere Variable festgelegt wird mit der dann die eigenltiche Abfrage gestartet wird, aber warum baut man dann die Abfrage nicht gleich in den späteren Befehl ein?

              Kommentar


              • #22
                Zitat von AnMa Beitrag anzeigen
                Dieser Befehl wird überall einfach vorgegeben, aber wie soll man das Gesamte verstehen wenn hier schon keine Erklärung statt findet?
                Man könnte mal im PHP-Handbuch nachlesen, was der Befehl macht

                Ich verstehe einfach nicht was dieser Befehl bringt. Schließlich wurde vorher ja schon die Variable ""sql" schon mit den Ergebnissen der Datenbank gefüttert oder?
                Nein.
                In $sql steht lediglich reiner Text.
                Und nur durch das Reinschreiben von etwas Text in diese Variable hat noch überhaupt keine Kommunikation mit der Datenbank stattgefunden.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #23
                  Im Tutorialsbereich findet man einiges zu diesem Thema:

                  SQL Allgemein
                  Programmierung - SQL PHP Tutorials nicht nur für Anfänger php-resource.de

                  PHP + MySQL:
                  Gästebuch mit Datenbankanbindung PHP Tutorials nicht nur für Anfänger php-resource.de

                  Die Befehle werden sehr ausführlich in der PHP-Doku beschrieben. Ich wüsste keine andere Doku, die so detailliert geschrieben ist.

                  Man sollte ein Forum nicht mit einem Buch verwechseln
                  :: BackTix - Textlink Marktplatz
                  :: Online PHP Formular Manager & Generator
                  :: PHP Gästebuch Script | PHP HTAccess Passwortschutz Generator

                  Kommentar


                  • #24
                    Und da waren sie wieder meine Probleme.

                    Es tut mir ja echt leid, dass ich Euch damit so nerve, aber ich schaffe es irgendwie anscheinend nicht die richtigen Suchparameter einzugeben um Antworten auf meine Fragen zu bekommen.

                    90% der Ergebnisse sind Threads in diversen Foren, in denen dann doch nur wieder sinngemäß steht: "Nutze doch die Sufu oder Google."

                    Scar trotzdem mal vielen lieben Dank für die Links, aber die weiterführenden Links in dem SQL Tutorial sind tot.

                    Bei dem Gästebuch konnte ich einige sehr interessante Anhaltspunkte finden. Trotzdem komme ich an dieser Stelle einfach nicht weiter.

                    INHALT der PHP:
                    PHP-Code:
                                            $show_uservote show_uservote();
                                            
                    $votetotal=$SQL->fetch_array($SQL->query("SELECT SUM(forumvote_count) FROM ".pkSQLPREFIX."_forumvote
                     WHERE forumvote_threadid='"
                    .$threadid."'"));
                                            
                    $user_vote=$SQL->fetch_array($SQL->query("SELECT COUNT(vote_rated_userid) FROM ".pkSQLTAB_POLL_COUNT."
                     WHERE vote_rated_cat='forum' AND vote_rated_contid='"
                    .$threadid."'"));

                    ## ANFANG - AUSGABE der USER die bereits abgestimmt haben

                                            
                    $sql "SELECT * FROM ".pkSQLPREFIX."_vote_rated LEFT JOIN ".pkSQLPREFIX."_user
                     ON "
                    .pkSQLPREFIX."_vote_rated.vote_rated_userid = ".pkSQLPREFIX."_user.user_id
                     WHERE "
                    .pkSQLPREFIX."_vote_rated.vote_rated_cat = 'forum' AND ".pkSQLPREFIX."_vote_rated.vote_rated_contid='".$threadid."'";

                                            
                    $db_erg mysql_query$sql );
                                            if ( ! 
                    $db_erg )
                                            {
                                              die(
                    'Ungültige Abfrage: ' mysql_error());
                                            }

                                            while (
                    $zeile mysql_fetch_array$db_ergMYSQL_ASSOC));
                                            {
                                            
                    $voted_nick $zeile['user_nick'];
                                            }
                                            
                    mysql_free_result$db_erg );
                    ## ENDE - AUSGABE der USER die bereits abgestimmt haben 

                    INHALT der HTML
                    HTML-Code:
                    <table class="contentbody" cellspacing="0" cellpadding="4" width="100%">
                        <tr>
                            <td colspan="2" class="left" align="left">
                                <font colour="FFFFFF">Es haben bereits <i>$user_vote[0]</i> User abgestimmt</font></td>
                            <td colspan="2" class="left" align="right">
                                <font colour="FFFFFF">Stimmen gesamt: <i>$votetotal[0]</i></font></td>
                        </tr>
                    
                    
                        <tr>
                    
                            <td colspan="2" class="left" align="left">
                                <font colour="FFFFFF">Abgestimmt haben:</font>
                            </td>
                        </tr>
                            <td colspan="2" class="left" align="left">
                                <font colour="FFFFFF"><i>
                    <?php foreach ($voted_nick as $name): ?> <?php echo $name; ?> |<?php endforeach; ?>
                                BLA</i></font></td>            
                        </tr>
                        <tr>
                            <td class="heads" colspan="4" align="right">
                                <table cellspacing="0" cellpadding="0" width="100%" border="0">
                                    <tr>
                                        <td width="100%" align="center">$vote_submit</td>
                                    </tr>
                                </table>
                            </td>
                        </tr>
                    </table>
                    Das Script in einem Stück in einer externen PHP-Datei funktioniert nur bekom ich die Aufteilung zwischen PHP und HTML nicht auf die Reihe.


                    Lieben Gruß
                    Anna

                    Kommentar


                    • #25
                      Hallo,

                      das Problem ist, dass du in der while-Schleife eine Variable ($voted_nick) belegst, die bei jedem Durchlauf überschrieben wird. Der Inhalt dieser Variable ist also am Ende nur der letzte aus der Tabelle abgerufene Wert.

                      Wenn du stattdessen ein vorher definiertes Array befüllst, stehen dir nach dem Durchlauf der Schleife alle Werte in diesem Array zur Verfügung, die du dann im HTML-Teil mit foreach durchiterieren kannst.

                      Ein Einfaches Beispiel:

                      PHP-Code:
                      $collection = array(); // Array zum Sammeln definieren
                      while ($row mysql_fetch_assoc($result)) { // nächste Zeile vom Ergebnis abfragen
                          
                      $collection[] = $row["fieldname"]; // Die Spalte fieldname aus dem Datensatz dem Array hinzufügen

                      Gruß,

                      Amica
                      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                      Super, danke!
                      [/COLOR]

                      Kommentar


                      • #26
                        Wenn dir zur Zeit noch das Basiswissen in der Programmierung fehlt, solltest du zuerst das gesamte Tutorial durcharbeiten. Es macht einfach keinen Sinn etwas eigenes zu erstellen, wenn man bestehendes nicht nachbauen kann/verstanden hat.

                        Was dein Problem angeht:
                        - Reduziere es auf nur ein Spalte.
                        - Entferne dein gesamtes Layout, beschäftige dich ausschließlich mit der Ausgabe dieser einzelnen Spalte.
                        - Oder anders gesagt, reduziere dein Problem auf den kleinst möglichen Teil.

                        Das wird dir helfen, dein Problem deutlich schneller zu verstehen und es würde deine Basics-Verständnisprobleme nicht geben.
                        :: BackTix - Textlink Marktplatz
                        :: Online PHP Formular Manager & Generator
                        :: PHP Gästebuch Script | PHP HTAccess Passwortschutz Generator

                        Kommentar


                        • #27
                          @Scar:

                          Ich weiß was Du meinst und damit hast Du auch Recht. Mit den Tutorials von Schattenbaum und ein paar anderen habe ich mich teilweise von Anfang bis Ende und manchmal nur vereinzelt befasst.

                          Der Punkt ist folgender:

                          1. Viele Tutorials wurden von guten Leuten geschrieben und um einen Punkt zu erklären greifen sie innerhalb dieser Erklärung auf Fachbegriffe und andere Dinge zurück. So dass man erst über den Link eines Links dessen Link usw. ... Ich hoffe Du weißt was ich meine ? ... Die Antwort findet die man garnicht gesucht hat.

                          2. Ein anderes Tutorial ist in so schlechtem deutsch geschrieben, dass sogar mir als Laie ein Fehler aufgefallen ist. Denn "Eine" ist nicht geich "Keine" und wie wir alle wissen ist das gerade hier sehr fatal.

                          3. Die löblichste Ausnahme ist "Schattenbaum", hier wird wirklich Punkt für Punkt erklärt was Sache ist und das in klaren deutlichen Beschreibungen. Leider ist "Schattenbaum" nicht sehr Umfangreich.

                          Es mag hier vielleicht nicht so rüberkommen, aber ich habe echtes Interesse daran PHP zu erlernen und es liegt mir fern mir von irgendwem fertige Scripts basteln zu lassen. Ich denke man kann in dem ein oder andern Post lesen, dass ich auch nicht einfach irgendwas zusmmen kopieren, sondern eine eigene Lösung erarbeiten möchte.

                          Auch habe ich ja begonnen das Script erstmal in einer kleinen externen Datei aufzubauen und es dort ja auch fehlerfrei zum laufen gebracht. Wo ich eben nur keinen Anhaltspunt oder ein Tutorial finde, ist das Zusammenspiel mit getrennten PHP und HTML Datein.

                          Es wird überall beschrieben wie man innerhalb von PHP in HTML wechselt und umgekehrt, aber eben nicht wie das Prozedere innerhalb eines CMS mit getrennten PHP und HTML Dateien abläuft.

                          Es ist ja so, dass innehalb des CMS in den HTML-Dateinen nur eine einzelne Variable steht die dann aber komplette Listen ausspuckt.

                          Wenn ich es logisch betrachte, muß ja wohl innerhalb des PHP-Scripts mittels einer Schleife eine Varibale gefüllt werden die dann später in der HTML einfach ausgegeben wird und hier finde ich eben nirgendwo eine Erklärung oder ein Tutorial oder ein Beispiel.

                          Danke Euch trotzdem für die Mühe.

                          Lieben Gruß
                          Anna

                          Kommentar


                          • #28
                            Das erlenen einer Programmiersprache kann man mit dem erlenen einer normalen gesprochenen Sprache vergleichen. Es gibt nur einen Unterschied, es gibt kein Dictionary.
                            Du wirst also lernen müssen zwischen den Zeilen zu lesen und zu verstehen, das du keine Programmiersprache lernst, sondern lediglich programmieren. Diesen kleinen aber feinen Unterschied wirst du wahrscheinlich erst in ein paar Jahren verstehen

                            Es gilt weiterhin: Reduziere dein Problem. Entferne das gesamte Layout, denn das ist nicht dein Problem.

                            Dein momentanes Problem besteht nicht im Wechsel zwischen PHP und HTML, sondern im Wechsel zwischen Datenvorbereitung in PHP und der späteren Ausgabe.

                            Sobald du diesen Punkt verstanden hast, kannst du mit Smarty deine eingelesenen Daten mit HTML aufhübschen, nicht früher.
                            PHP Template Engine | Smarty
                            smarty tutorials - Google-Suche
                            :: BackTix - Textlink Marktplatz
                            :: Online PHP Formular Manager & Generator
                            :: PHP Gästebuch Script | PHP HTAccess Passwortschutz Generator

                            Kommentar


                            • #29
                              Ich denke der Unterschied ist mir schon klar, nur ist es bei mir eben wie auch beim erlernnen einer Sprache so, dass ich mich mit "Learning by Doing" also an aktuellen handfesten Beispielen und Aufgaben, wesentlich leichter tue als nur irgendwelche Tutorials zu lesen.

                              Darum gibt´s ja auch soetwas wie Sprachurlaub usw.

                              Ich habe auch schon gesucht, ob es in meiner Nähe entsprechende Kurse gibt, doch leider findet sich hier maximal eine Schulung für Senioren wie man einen PC ein oder ausschaltet.

                              Darum hatte ich gehofft im Netz, hier und da die nötige Hilfe oder Denkanstöße zu bekommen. Nicht bedacht habe ich, dass es für jemanden mit viel Ahnung, einerseits lästig und andererseits auch schwierig ist einem Einsteiger komplexere Abläufe zu erklären.

                              Lieben Gruß
                              Anna
                              Zuletzt geändert von AnMa; 28.08.2011, 13:22.

                              Kommentar


                              • #30
                                Bevor du weiter nach Schuldigen suchst, solltest du dringend die Ratschläge zu beherzigen.

                                Dein gewünschtes reales und handfestes Beispiel hast du bereits. Wenn du nur eine Spalte ausliest und anschließend ausgibst, ist das bereits dein Beispiel. Du brauchst dafür im ersten Schritt kein HTML! Es macht keinen Unterschied, ob du 1 oder 1000 Spalten mit einem mal betrachtest.

                                Lästig ist übrigens nur, wenn Beginner immer sofort alles machen wollen, dann nach Hilfe Fragen, von den etwas Erfahreneren keine Ratschläge annehmen und immer weiter nach Problemen bei Anderen suchen.

                                Dir wurde hier im Thread schon mehrmals gesagt, welche Schritte du durchlaufen sollst. Also setze diese auch um!

                                In einem Kurs, den du scheinbar bereits gesucht hast, würde man aus gutem Grund mit weit weniger Umfang an dieses Problem heran gehen.
                                :: BackTix - Textlink Marktplatz
                                :: Online PHP Formular Manager & Generator
                                :: PHP Gästebuch Script | PHP HTAccess Passwortschutz Generator

                                Kommentar

                                Lädt...
                                X