Abfrageergebnis in bestimmte Form bringen

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

  • Abfrageergebnis in bestimmte Form bringen

    Hallo zusammen,

    anbei folgendes Script:

    PHP-Code:
    <?php
    require_once("../functions/db_connection.php");

    if (
    $_GET['id'] == "abc") {

    $query "SELECT * FROM glaeserlisten WHERE hersteller = 'abc'";
    $result mysql_query($query);
    if (!
    $result)
    {
           die (
    'Ungültige Abfrage: ' mysql_error());

    while(
    $row mysql_fetch_assoc($result))
    {
     
    print_r($row);
    }

    echo <<<HERE_DOC
    [ {optionDisplay: 'Wert1'}, {optionDisplay: 'Wert2'}, {optionDisplay: 'Wert3'}]
    HERE_DOC;
    }
    ?>
    Nach dem query habe ich ein Ergebnisarray, das beim print_r auch den erwarteten Inhalt hat. Was ich aber nicht weiß, wie ich die Werte nun nacheinander, soviele wie eben da sind, in automatisch die {optionDisplay: 'Wert'}, - Form bekomme. D.h. das was zwischen den [ ] steht muss entsprechend der Anzahl der zurückgegebenen Werte erweitert werden, so das alle in dieser Form da drin stehen.

    Das Ganze wird hier in ein Dropdown übernommen
    Code:
    <script type="text/javascript" src="/js/jQuery.js"></script>
    <script type="text/javascript" charset="utf-8">
    $(function(typ){
      $("select#glashersteller_re").change(function(){
        $.getJSON("/js/test.php",{id: $(this).val(), ajax: 'true'}, function(j){
          var options = '';
          for (var i = 0; i < j.length; i++) {
            options += '<option>' + j[i].optionDisplay + '</option>';
          }
          $("select#glasart_re").html(options);
        })
      })
    })
    </script>
    Im Moment weiss ich nicht wie ich das angehen soll. Erster Ansatz wäre erstmal anstatt dem print_r die Ergebnisse in ein array zu schreiben. Aber dann ???


    Bitte um Hilfe !


    Gruß

    Michael
    Zuletzt geändert von fritzje610; 27.11.2008, 15:57.
    Gruß

    Michael

  • #2
    na statt print_r in der Schleife halt optionDisplay davor und dahinter noch [_und ] und ein , wenn es nicht die erste Ausgabe ist...

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Guten Morgen,

      ich hab jetzt ein paar Sachen ausprobiert, aber irgendwie komme ich auf keinen grünen Zweig. Mit einer Variablen klappt das:

      PHP-Code:
      while($row mysql_fetch_assoc($result))
      {
          
      $var $row['beschreibung'];
      }

      echo <<<HERE_DOC
      [{optionDisplay: '$var'}] 
      HERE_DOC; 
      Das funktioniert auch. Nur wie kriege ich das über ne Schleife alles hintereinander? Ich hatte es mal so probiert:

      PHP-Code:
      echo <<<HERE_DOC
      while($row = mysql_fetch_assoc($result))
      {
          [{optionDisplay: '
      $row["glastyp"]'}] 
      }
      HERE_DOC; 
      Aber dann kommt in der js-Funktion gar nichts mehr an.
      Ich verstehe das so, dass das js zählt wieviele Werte als hinzuzufügende Optionen zu erwarten sind, aber dazu müssen die Werte ja so verfügbar sein:

      PHP-Code:
      echo <<<HERE_DOC
      [{optionDisplay: 'Wert1'}, {optionDisplay: 'Wert2'}, und so weiter] 
      HERE_DOC; 
      Wenn ich das in der while-Schleife mache, muss doch irgendwas links vom = stehen? Irgendwie hab ich gerade die Hirnblockade schlechthin. Könnt ihr mir bitte auf die Sprünge helfen? Danke ! ! !



      Gruß

      Michael
      Gruß

      Michael

      Kommentar


      • #4
        Re: Abfrageergebnis in bestimmte Form bringen

        PHP-Code:
        $bla true;
        echo 
        "[";
        while(
        $row mysql_fetch_assoc($result))
        {
          if (
        $bla$bla false;
          else echo 
        ", ";
          echo 
        "{optionDisplay: '" $row["glastyp"] . "'}";
        }
        echo 
        "]"

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Hi,

          bevor ich deine Antwort lesen konnte, ich war mit dem Auto zwischen zwei Werksstandorten unterwegs, ist es mir dann auch gedämmert. Man ist ab und an sowas von blind. Unglaublich. Trotzdem vielen Dank für deine Hilfe !


          Gruß

          Michael
          Gruß

          Michael

          Kommentar


          • #6
            Guten Morgen,

            genau das selbe Problem habe ich auch bekomme es aber nicht gelöst ..

            PHP-Code:
                    $mysql = new mysql();
                    
            $mysql->connect(); 
                    
            //$sql = "SELECT * FROM  region WHERE status='1' AND la_id='".$_GET['id']."'";
                    
            $sql "SELECT * FROM  region WHERE status='1' AND la_id='1'";
                    
            //echo "SQL: ".$sql;
                    
            $result $mysql->query($sql);

                echo 
            "[ ";

                     while (
            $r $mysql->fetch_object()) {
                        
                        
            $string .= "{optionValue:".$r->rg_id.", optionDisplay: '".$r->region."'}, ";
                        
                    }
                    
                    
            $neu substr($string0, -2);
                
              echo 
            "$neu ]";

                    
            $mysql->end(); 
            was mach ich da falsch? rufe ich die Seite direckt auf bekomme ich folgende ausgabe:
            HTML-Code:
            [ {optionValue:98, optionDisplay: 'Baden-Württemberg'}, {optionValue:99, optionDisplay: 'Bayern'}, {optionValue:100, optionDisplay: 'Berlin'}, {optionValue:101, optionDisplay: 'Brandenburg'}, {optionValue:102, optionDisplay: 'Bremen'}, {optionValue:103, optionDisplay: 'Hamburg'}, {optionValue:104, optionDisplay: 'Hessen'}, {optionValue:105, optionDisplay: 'Mecklenburg-Vorpommern'}, {optionValue:106, optionDisplay: 'Niedersachsen'}, {optionValue:107, optionDisplay: 'Nordrhein-Westfalen'}, {optionValue:108, optionDisplay: 'Rheinland-Pfalz'}, {optionValue:109, optionDisplay: 'Saarland'}, {optionValue:110, optionDisplay: 'Sachsen'}, {optionValue:111, optionDisplay: 'Sachsen-Anhalt'}, {optionValue:112, optionDisplay: 'Schleswig-Holstein'}, {optionValue:113, optionDisplay: 'Thüringen'} ]
            Trage ich diese manuell in das ursprungs script ein (welches keien ausgabe aus der DB hat) geht es!!!

            WO ist der gedanken Fehler?

            Kommentar


            • #7
              Wieso die Werte nicht einfach in einem Array speichern und mit json_encode() an JavaScript übergeben? Das würde auch gleich alle Probleme mit eventuellen Sonderzeichen lösen.

              PHP-Code:
              $sql "
                  SELECT rg_id AS optionValue, region AS optionDisplay
                  FROM   region
                  WHERE  status = 1 AND la_id = 1
              "
              ;
              $result $mysql->query($sql);

              $regions = array();
              while (
              $row $result->fetch_assoc()) {
                  
              $regions[] = $row;
              }

              echo 
              json_encode($regions); 
              Man muss sich ja nicht absichtlich das Leben schwer machen.
              Zuletzt geändert von h3ll; 12.06.2009, 09:27.

              Kommentar


              • #8
                sorry kannst du mir da etwas auf die sprünge helfen wie würde man das machen ...? leider habe ich da keine erfahrung ...
                und ich halte mich an dem problem schon seit tagen auf... Danke

                Kommentar


                • #9
                  habe es soweit angepasst ...
                  PHP-Code:
                          $mysql = new mysql();
                          
                  $mysql->connect(); 

                          
                  $sql "SELECT rg_id AS optionValue, region AS optionDisplay
                              FROM   region
                              WHERE  status = '1' AND la_id ='1'"
                  ;

                          
                  $result $mysql->query($sql);


                      
                  $regions = array();
                           while (
                  $row $mysql->fetch_assoc()) {

                              
                  $regions[] = $row;
                          }
                          

                          echo 
                  json_encode($regions); 
                          
                  $mysql->end(); 
                  leider wechselt sich das "bäumchen" zweite select box nicht ... was muss ich an diesem JS noch anpassn?

                  Code:
                    $(function(){
                          $("select#land").change(function(){
                            $.getJSON("select.php",{id: $(this).val(), ajax: 'true'}, function(j){
                              var options = '';
                              for (var i = 0; i < j.length; i++) {
                                options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
                              }
                              $("select#region").html(options);
                            })
                          })
                        })

                  Kommentar


                  • #10
                    while ($row = $mysql->fetch_assoc()) {

                    Bist du sicher, dass fetch_assoc() bzw. fetch_object() eine Methode von $mysql ist?

                    Liefert der PHP-Code überhaupt das gewünschte Ergebnis, hast du das überprüft? Sonst macht es keinen Sinn im Javascript-Code rumzusuchen.


                    P.S.: Warum hast du die Hochkomma, die ich extra bei den Zahlen rausgenommen habe, wieder dazu geschrieben? Hochkommas kennzeichnen einen String, und keine Zahl.
                    Zuletzt geändert von h3ll; 12.06.2009, 10:07.

                    Kommentar


                    • #11
                      es sind functionen die ich nutze ...
                      PHP-Code:
                          function fetch_assoc($qid '') {
                              if(
                      $qid == NULL) {
                                  
                      $r mysql_fetch_assoc($this->results);
                              } else {
                                  
                      $r mysql_fetch_assoc($qid);
                              }
                              if(
                      is_null($r)) {
                                  echo 
                      get_class($this) . '::fetch_assoc() could not run: ' 
                                      
                      mysql_error();
                              } else {
                                  return 
                      $r;
                              }
                          }

                          
                          function 
                      fetch_object($qid '') {
                              if(
                      $qid == NULL) {
                                  
                      $r mysql_fetch_object($this->results);
                              } else {
                                  
                      $r mysql_fetch_object($qid);
                              }
                              if(
                      is_null($r)) {
                                  echo 
                      get_class($this) . '::fetch_object() could not run: ' 
                                      
                      mysql_error();
                              } else {
                                  return 
                      $r;
                              }
                          } 
                      die ausgabe siehst du hier http://ferien-haus-suche.de/select.php es ist der direckte aufruf der datei ...

                      Kommentar


                      • #12
                        Wieso verwendest du nicht gleich das objektorientierte mysqli statt einer langsamen Klasse, die auf dem veralteten mysql aufbaut? Mal davon abgesehen, dass es so wie es programmiert ist, nicht wirklich objektorientiert ist, sondern einfach nur prozeduraler Code hübsch verpackt in einer Klasse.

                        Lass dir im Javascript-Code paar Werte mit alert() ausgeben, und überprüfe ob das drin steht, was du erwartest.

                        Kommentar


                        • #13
                          per alert()?
                          ich habe JS leider so gut wie nie benutzt ... aber wenn ich das ganze nicht dynamisch mache d.h.mit dem orginal script mache

                          PHP-Code:
                          <?php
                          if ($_GET['id'] == 1) {
                            echo <<<HERE_DOC
                          [ {optionValue: 0, optionDisplay: 'Mark'}, {optionValue:1, optionDisplay: 'Andy'}, {optionValue:2, optionDisplay: 'Richard'}]
                          HERE_DOC;
                          } else if (
                          $_GET['id'] == 2) {
                            echo <<<HERE_DOC
                          [{optionValue:10, optionDisplay: 'Remy'}, {optionValue:11, optionDisplay: 'Arif'}, {optionValue:12, optionDisplay: 'JC'}]
                          HERE_DOC;
                          } else if (
                          $_GET['id'] == 3) {
                            echo <<<HERE_DOC
                          [{optionValue:20, optionDisplay: 'Aidan'}, {optionValue:21, optionDisplay:'Russell'}]
                          HERE_DOC;
                          }
                          ?>
                          #

                          klappt es .. ich kann sogar die inhalte austauschen dann geht es ... nur nicht wenn ich es mit der DB anfrage mache

                          Kommentar


                          • #14
                            problem gefunde ...

                            der include für die DB connection war fehlerhaft ... DANKE DANKE

                            aber die änderrungs empfehlung hat auch dazu bei getragen ...

                            du sagst das meine DB verbindung sinnlos bzw. langsam ist kannst du mir da etwas besseres emfehlen?

                            Kommentar


                            • #15
                              mysqli

                              PHP: Mysqli - Manual

                              Kommentar

                              Lädt...
                              X