Ankündigung

Einklappen
Keine Ankündigung bisher.

Abfrage mit Formular-Checkboxen

Einklappen

Neue Werbung 2019

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

  • Abfrage mit Formular-Checkboxen

    Hallo

    nun ich habe da folgendes Problem:
    Ich betreibe eine Mysql Datenbank mit Wettermesswerte.
    Ich habe ein Abfrageformular geschrieben wo ich Start und End Datum auswählen kann und nachher die gewünschten Daten in eine CSV -Datei speichere. Dies funktioniert eigentlich. Jetzt möchte ich aber zusätzlich noch im Formular auswählen können ob alle Sensoren oder nur bestimmte in dieser Zeitspanne.

    Das formular sieht jetzt mal so aus:
    Code:
    <td class="center"><span class="stitel"><form method="POST" action="export_csv01.php" name="startdatum">
    	<!-- calendar attaches to existing form element -->
    <span class="stitel">Start Datum: </span><input type="text" name="datum" />
    	<script language="JavaScript">
    	new tcal ({
    		// form name
    		'formname': 'startdatum',
    		// input name
    		'controlname': 'datum'
    	});
    	</script>
    <span class="stitel">End Datum: </span><input type="text" name="datum1" />
    	  <script language="JavaScript">
    	        	new tcal ({
    		// form name
    		'formname': 'startdatum',
    		// input name
    		'controlname': 'datum1'
    	});
    
    	</script>
    
    <input type="checkbox" name="sensor[]" value="alle"> Alle Sensoren<br>
    <input type="checkbox" name="sensor[]" value="Temp"> Aussen Temperatur<br>
    <input type="checkbox" name="sensor[]" value="Baro"> Luftdruck<br>
    <input type="checkbox" name="sensor[]" value="Regen"> Regen<br>
    
    <td class="center"><input type="submit" value="Absenden" name="Senden"/></td>
       </form>
    und nun weis ich nicht mehr weiter wie ich jetzt in der mysql_query den select befehl schreiben muss.
    Hier wäre mal der bissherige Code wo nur mit der Datum selektion arbeitet:

    PHP-Code:
    <?php

    include ("config.php");  // Datenbank Anbindung
    include ("date_date2mysql.php"); // Funktion Deutsches Datum in ISO

    $table 'data_aktuellwerte';
    $file 'Wetterdaten';

    $Startdatum $_POST['datum'];
    $Enddatum $_POST['datum1'];



    $formdatum date_date2mysql ($Startdatum) ;
    $formdatum1 date_date2mysql ($Enddatum) ;

    $result mysql_query("SHOW COLUMNS FROM ".$table."");
    $i 0;
    if (
    mysql_num_rows($result) > 0) {
    while (
    $row mysql_fetch_assoc($result)) {
    $csv_output .= $row['Field']."; ";
    $i++;
    }
    }
    $csv_output .= "\n";

    $values mysql_query("SELECT * FROM $table WHERE Datum >= '$formdatum' AND Datum <= '$formdatum1'");



    while (
    $rowr mysql_fetch_row($values)) {
    for (
    $j=0;$j<$i;$j++) {
    $csv_output .= $rowr[$j]."; ";
    }
    $csv_output .= "\n";
    }

    $filename $file."_".date("Y-m-d_H-i",time());
    header("Content-type: application/vnd.ms-excel");
    header('Expires: ' gmdate('D, d M Y H:i:s') . ' GMT');
    header("Content-disposition: csv" date("Y-m-d") . ".csv");
    header"Content-disposition: filename=".$filename.".csv");
    header('Pragma: no-cache');
    print 
    $csv_output;
    exit;
    ?>
    ich hab da schon eine Zeitlang gegoogelt aber irgenwie nicht wirkliches gefunden darüber.
    Ok ich hoffe ihr könnt mir da etwas weiterhelfen

    grüsse Oli und Danke


  • #2
    und nun weis ich nicht mehr weiter wie ich jetzt in der mysql_query den select befehl schreiben muss.
    Das kommt darauf an, was du überhaupt vorhast. Hast du dir bereits überlegt, wie du es anstellen möchtest, dass nur bestimmte Sensoren ausgewählt/abgefragt/angezeigt werden?
    http://hallophp.de

    Kommentar


    • #3
      Hallo,

      mir ist nicht wirklich klar was du machen möchtest und warum du SHOW COLUMNS verwendest? Die Checkboxen sind Tabellenspalten? Was haben Sie mit deiner CSV zu tun?
      "Mein Name ist Lohse, ich kaufe hier ein."

      Kommentar


      • #4
        Zitat von Chriz Beitrag anzeigen
        Hallo,

        mir ist nicht wirklich klar was du machen möchtest und warum du SHOW COLUMNS verwendest? Die Checkboxen sind Tabellenspalten? Was haben Sie mit deiner CSV zu tun?
        Hallo,
        Ich glaube in der CSV Datei gibt es einen "Header" da stehen die Splatennamen zu den darunter aufgelisteten Zeilen ...

        Beispiel:
        Code:
        ID    Name    Test    Test2
        1    Hans    wert1    wert2
        So macht er das halt mit den Spalten namen ...
        Das ist aber nur meine Vermutung ...

        Gruß
        Seb

        Kommentar


        • #5
          SHOW COLUMNS ist aber ein MySQL-Befehl, ich versteh grade den Zusammenhang/das Zusammenspiel von MySQL und CSV nicht, hab aber auch grad keine Lust mir das Skript genauer anzuschauen, läuft Fußball
          "Mein Name ist Lohse, ich kaufe hier ein."

          Kommentar


          • #6
            Hallo
            ok ich versuch mein Vorhaben etwas besser zur erklären.
            Also bis jetzt ist so das ich eben ein start und ein End Datum im Formular eingebe, das spuckt mir das script alle Werte und alle Spalten in eine csv Datei, die ich dann speichern kann. Das jetzige Vorhaben besteht darin das ich die möglichkeit habe, die Senoren respektiv die Spalten via Checkbox auszuwählen die ich gerne in der CSV Datei hätte.
            Hoffe so mein Vorhaben etwas genauer beschrieben zu haben.
            Danke mal
            gruss Oli

            Kommentar


            • #7
              Zitat von haol Beitrag anzeigen
              Hoffe so mein Vorhaben etwas genauer beschrieben zu haben.
              Ja - aber dein Problem nicht.

              Du brauchst doch nur die WHERE-Klausel dynamisch zusammenbauen, je nachdem, ob eine Spalte berücksichtigt werden soll, oder nicht.
              Wie sieht dein Ansatz dazu aus?

              Kommentar


              • #8
                Hi
                ok mein Ansatz:
                habe mal die Formular eingabe so gemacht:
                Code:
                <input type="checkbox" name="sensor1 value="alle"> Alle Sensoren<br>
                <input type="checkbox" name="sensor2" value="Temp"> Aussen Temperatur<br>
                <input type="checkbox" name="sensor3" value="Baro"> Luftdruck<br>
                <input type="checkbox" name="sensor4" value="Regen"> Regen<br>
                Den sensor in ein Aray:
                PHP-Code:
                $Regen $_POST['sensor4']; 

                und die mysql_query:
                PHP-Code:
                $values mysql_query("SELECT * FROM $table WHERE Datum >= '$formdatum' AND Datum <= '$formdatum1'OR '$Regen'"); 
                tja das script geht zwar bringt mir aber immer noch alle Datensätze, respektiv alle spalten..

                gruss Oli

                Kommentar


                • #9
                  Wenn sensor2 (Temp) und sensor3 (Baro) angeklickt sind, welches SQL-Query möchtest du damit erzeugen?

                  Was ist denn '$Regen' für eine Bedingung? Lass dir doch einfach mal das Query ausgeben, dass du da erzeugst und kontrollier es.
                  "Mein Name ist Lohse, ich kaufe hier ein."

                  Kommentar


                  • #10
                    Ist das selbe, als würdest Du in PHP

                    if ($a > 5 || 'Hallo')

                    schreiben. Hallo resp. Regen sind Ausdrücke und damit auch wertführend. In einer Konditionalanweisung (IF) wird bspw. ein String als Ausdruck als TRUE gewertet. Und bei einem OR ergibt der Gesamtausdruck bekanntlich TRUE, wenn einer der Operanden TRUE ist.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      Also wenn sensor2 und sensor3 angeklickt sind möchte ich das nur diese Spalten und die dazu gehörenden Datum und Zeit.

                      Jep habe es mal noch mir mir diesen probiert:
                      PHP-Code:
                      $values mysql_query("SELECT * FROM $table WHERE Datum >= '$formdatum' AND Datum <= '$formdatum1'OR Regenmenge= '$Regen'"); 
                      aber ich denke das da auf dem Holzweg bin, irgendiwe muss ich doch eine if einbauen oder seh ich dies falsch
                      Oli

                      Kommentar


                      • #12
                        Zitat von haol Beitrag anzeigen
                        Also wenn sensor2 und sensor3 angeklickt sind möchte ich das nur diese Spalten und die dazu gehörenden Datum und Zeit.
                        Dann formuliere zuerst diese Query, ohne schon an PHP und dynamische Formularwerte zu denken.

                        Wie sieht die aus ...?

                        Kommentar

                        Lädt...
                        X