Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme bei Ausgabe und Abgleich von Array aus Datenbank

Einklappen

Neue Werbung 2019

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

  • Probleme bei Ausgabe und Abgleich von Array aus Datenbank

    Hallo zusammen,
    ich hoffe, dass ich hier in dem Bereich richtig bin und meine Frage nicht in den Bereich Datenbank gehört.
    Ich habe folgendes Problem:
    In meiner Datenbank stehen strings die ich auslese. Anschließend splitte ich diese auf. Somit habe ich einen Array mit beliebig vielen Einträgen. Nun habe ich das Problem, dass wenn ich diesen Array in einer Tabelle geordnet ausgeben möchte ich immer nur den ersten String ausgeben bekomme.

    Ich habe euch auch einmal meinen Code gepostet. Ich hoffe einfach, dass jemandem der Fehler auffällt und er mir weiterhelfen kann.

    PHP-Code:
    $schutzgut = array("Boden""Biotope""Klima""LBild""Gewasser""Gefasspflanzen""Moose""Baum""Pilze""Avifauna""Grosssauger""Amphibien""Kleinsauger""Fische");

    $sql_schutzgut "SELECT schutzgut FROM masterfragebogen";
     
    $db_erg mysql_query($sql_schutzgut);
    if ( ! 
    $db_erg )
    {
      die(
    'Ungültige Abfrage: ' mysql_error());

    for(
    $i=0$i count($schutzgut); $i++)
        {
            echo 
    "<tr>";
               echo 
    "<td>" $schutzgut[$i]. "</td>";
                echo 
    "<td>";
                    
                    while(
    $ablauf mysql_fetch_array$db_ergMYSQL_ASSOC))
                    {
                            
    $ab preg_split("/, /"implode(", "$ablauf));
                            
                            if (
    in_array($schutzgut[$i], $ab))
                            {
                                echo 
    count($ab);
                                echo 
    "<br/>";
                            }
                    }
                        
                echo 
    "</td>";
                echo 
    "</tr>";
        }



  • #2
    Das sollte dir helfen:

    Richtig debuggen

    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
    Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

    Kommentar


    • #3
      Das Problem ist, dass ich keinen Fehler ausgeworfen bekomme. Die Abfrage passt soweit. Dies hab ich direkt in der Datenbank getestet. Den Array "$schutzgut" bekomm ich auch richtig ausgeworfen und die erste Zeile meiner Spalte aus der Datenbank klappt auch, aber alle anderen werden nicht ausgeworfen.
      Wenn ich die Schleife aus der Datenbank seperat, ohne die Verschachtelung, ausgeben lasse, dann kommen auch alle Werte.

      Wie ich richtig debugge weiß ich durchaus und mache dies auch immer bevor ich mich nach möglichen Hilfen umsehe.

      Kommentar


      • #4
        PHP-Code:
         $ab preg_split("/, /"implode(", "$ablauf)); 
        Was soll das denn werden wenns fertig ist?

        $ablauf ist ein Array, implode macht einen String daraus, preg_split macht wieder ein Array...
        Da kannste auch gleich $ablauf benutzen.

        Dein Hauptproblem wird aber sein, das du aussen über das Array $schutzgut iterierst und innen die Datensätze abrufst. Nach dem ersten Durchlauf der äußeren Schleife sind die Ergebnisse aus der Datenbankabfrage aber abgerufen und stehen anschliessend nicht erneut zum Abrufen bereit!

        Dreh es um. Aussen die Datensätze, innen das Array.
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          ok, das mit preg_split stimmt. Da hab ich unnötigen Code erzeugt.

          Was die Schleifen angeht, so steh ich gerade auf dem Schlauch. Ich möchte in der linken Tabellenspalte die Werte aus dem Array "Schutzgut" stehen haben und in der rechten Spalte dann am Ende die Anzahl wie oft der jeweilige Begriff in den Array aus der Datenbank vorkommt. Eine Vorstufe davon ist eben die entsprechende sortierte Ausgabe der Begriffe.
          Wenn ich jetzt die Schleifen umdrehe, dann habe ich ja die Spalten vertauscht, oder seh ich die Lösung des Problems gerade nicht?

          Kommentar


          • #6
            PHP-Code:
            while($ablauf mysql_fetch_array$db_ergMYSQL_ASSOC)) {
                ...
                foreach(
            $schutzgut as $gut) {
                    ...
                }

            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar

            Lädt...
            X