Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] wie array aus while-schleife füllen

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

  • [Erledigt] wie array aus while-schleife füllen

    Hallo in die Runde,

    hiermit schreibe ich eine sql Abfrage in eine Datei:

    $log = fopen("$datei", 'a+');
    $i = sizeof($rub_auswahl);
    fwrite($datei, " AND (`kat` = '$rub_auswahl[0]' ");
    while ($i--) {
    fwrite($datei, " OR 'kat' = '".trim($rub_auswahl[$i])."' ");
    }
    fwrite($datei, ") ORDER BY `kat` , `as` ,`timestamp` DESC LIMIT 0 , 10000 ");
    fclose($log);
    }

    $sql = file_get_contents($logfile);

    ....leider gelingt es mir nicht diese Abfrage in ein Array zu schreiben. Weder array_pusch noch andere Versuche waren erfolgreich.

    Wo bitte stehe ich auf der Leitung? Wie muss ich die Syntay abändern?

    Danke für jede Unterstützung
    Thomas


  • #2
    Bitte die php Highlight Funktion im WYSIWIG Editor hier nutzen und ich sehe in deinem Quellcode jetzt nicht, wo du einen String an eine Variable übergibst?!?

    Hier siehst Du nochmal, wie der grundsätzliche Aufbau von Arrays ist: PHP: array - Manual

    Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Warum soll die Abfrage denn in ein Array?
      Was davon genau? Die ganze Abfrage? Teile davon?
      Competence-Center -> Enjoy the Informatrix
      PHProcks!Einsteiger freundliche Tutorials

      Kommentar


      • #4
        Hallo Arne Drews,

        danke für Deine Antwort.
        Mit mein bisher bescheidenes Wissen sehe ich (hoffentlich noch) keine Möglichkeit die erzeugte sql-Abfrage im Anschluss weiter zu verwenden.

        Sie wird ja in mehreren Teilen erzeugt
        PHP-Code:
        $log fopen("$datei"'a+');
        $i sizeof($rub_auswahl);
        fwrite($datei" AND (`kat` = '$rub_auswahl[0]' ");
        while (
        $i--) {
        fwrite($datei" OR 'kat' = '".trim($rub_auswahl[$i])."' ");
        }
        fwrite($datei") ORDER BY `kat` , `as` ,`timestamp` DESC LIMIT 0 , 10000 ");
        fclose($log);
        }

        $sql file_get_contents($logfile); 
        mit $sql hole ich mir den String aus der Datei, in den ich ihn geschrieben habe. Es muss doch auch eine direkte Übergabe an $sql aus der while-Schleife heraus geben.

        Alles aus der Schleife soll dann schön brav hinter einander in einer Zeile stehen.

        ..oder anders, das was ich mit fwrite in die dDatei schreibe muss in $sql - und ich sehs einfach nicht...

        Grüße, Thomas

        Kommentar


        • #5
          Wenn ich Dich richtig verstanden habe:
          PHP-Code:
          $sql .= " AND (`kat` = '$rub_auswahl[0]' ";
          while(
          $i--) $sql .= " OR 'kat' = '".trim($rub_auswahl[$i])."' ";
          $sql .= ") ORDER BY `kat` , `as` ,`timestamp` DESC LIMIT 0 , 10000 "
          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche Tutorials

          Kommentar


          • #6
            danke, das sieht gut aus, funktioniert aber leider nicht.
            Auch wenn ich (sofern nötig) zuvor mit $sql = array(); das array anlege.

            PHP-Code:
            $sql = array();
                       if (
            $alle == "") {
                  
            $i sizeof($rub_auswahl);
              
            $sql .= " AND (`kat` = '$rub_auswahl[0]' ";
              while(
            $i--) 
              
            $sql .= " OR 'kat' = '".trim($rub_auswahl[$i])."' ";
              
            $sql .= ") ORDER BY `kat` , `as` ,`timestamp` DESC LIMIT 0 , 10000 "

                            
            $ergebnis mysql_query($sql$mydb); 
            //oder so?
                            
            $ergebnis mysql_query($sql[0], $mydb); 

            was muss ich anders machen?
            Gruß, Thomas

            Kommentar


            • #7
              also bescheib mal was du vorhast. aktuell sehe nur dass du eine datei öffnest, daraus ein sql string zusammenbaust, diesen sql string schreibst du wieder in eine datei und führst den sql befehl aus. sag mal was du vorhast , eventuell können wir dir besser helfen
              apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/witalimik

              Kommentar


              • #8
                Ne, $sql is ja auch kein Array, sondern ein String!
                Ich gehe davon aus, daß $sql zuvor nach dem Schema
                PHP-Code:
                $sql 'SELECT daten FROM tabelle WHERE '
                definiert wurde!

                Dann greift mein Beispiel auch...

                In ein Array macht doch auch gar keinen Sinn!
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche Tutorials

                Kommentar


                • #9
                  anstatt das hier:

                  PHP-Code:
                  $sql .= " AND (`kat` = '$rub_auswahl[0]' ";
                    while(
                  $i--) 
                    
                  $sql .= " OR 'kat' = '".trim($rub_auswahl[$i])."' "
                  würde ich das so machen:

                  PHP-Code:
                  $sql .= "AND `kat` IN ('".implode('\',\'',$rub_auswahl)."')";
                  $sql .= " ORDER BY `kat` , `as` ,`timestamp` DESC LIMIT 0 , 10000 "
                  apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/witalimik

                  Kommentar


                  • #10
                    Zitat von BlackScorp Beitrag anzeigen
                    also bescheib mal was du vorhast.
                    sehr gern!

                    Der Inhalt von $rub_auswahl
                    (Beispiel: Array ( [0] => k000 [1] => k003 ))
                    soll in $sql so verwendet werden können:
                    OR `kat` = 'k000' OR `kat` = 'k003'

                    hier eine vollständige Abfrage:
                    SELECT *
                    FROM `db`
                    WHERE `as` >0
                    AND (
                    `kat` = 'k001'
                    OR `kat` = 'k000'
                    OR `kat` = 'k003'
                    )
                    ORDER BY `kat` , `as` , `timestamp` DESC
                    LIMIT 0 , 10000

                    Grüße
                    Thomas

                    Kommentar


                    • #11
                      Dann kommst Du mit meinem Ansatz genau dahin!
                      Competence-Center -> Enjoy the Informatrix
                      PHProcks!Einsteiger freundliche Tutorials

                      Kommentar


                      • #12
                        PHP-Code:
                        // das ergbit array([0] => 'k000',[1]=>'k002',[2]=>'k003')
                        $rub_auswahl = array(
                        'k000','k002','k003'
                        );

                        $sql "SELECT * FROM db WHERE as > 0 AND kat IN ('".implode('\',\'',$rub_auswahl)."') ORDER BY kat,as,timestamp DESC LIMIT 0,1000;\n";
                        echo 
                        $sql// ausgabe: SELECT * FROM db WHERE as > 0 AND kat IN('k000','k002','k003') ORDER BY kat,as,timestamp DESC LIMIT 0,1000;
                        file_put_contents('datei.txt',$sql); 
                        die funktion IN ist das selbe wie OR x = y OR y = z OR z = a ....
                        apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/witalimik

                        Kommentar


                        • #13
                          Das war auch ein guter Hinweis, aber auch das setzt vorraus, daß $sql ein String ist!
                          Und das scheint er nicht zu verstehen, denn sonst wäre es bei ihm kein Array mehr...
                          Competence-Center -> Enjoy the Informatrix
                          PHProcks!Einsteiger freundliche Tutorials

                          Kommentar


                          • #14
                            wahrscheinlich denkt er, da seine kathegorien ein array sind, dass der SQL string dann auch ein array sein soll.
                            apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/witalimik

                            Kommentar


                            • #15
                              Mag sein...
                              Da fehlen halt absolute Grundlagen, was ja kein Wltuntergang ist, aber da muß er schleunigst dran arbeiten!
                              Competence-Center -> Enjoy the Informatrix
                              PHProcks!Einsteiger freundliche Tutorials

                              Kommentar

                              Lädt...
                              X