Ankündigung

Einklappen
Keine Ankündigung bisher.

Array aus Datenbank

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

  • Array aus Datenbank

    Hallo liebe Leute ich hänge wieder mal fest ich würde gerne ein festes Array wa in PHP war in die Datenbank auslagern wir für spätere Zwecke gebraucht

    PHP-Code:
    $db = new MySQLi($serverurl, $servername, $serverpasswort, $dbname);
    $query = ('SELECT `select`, `select1` FROM `mauswahl` ');
    $result = mysqli_query($db, $query);
    $sskill = array();
    while($row = mysqli_fetch_assoc($result)){
            $sskill[] = $row;
      }
     // echo '<pre>'; print_r($row); echo '</pre>';
      echo '<pre>'; print_r($sskill); echo '</pre>';

    //$result = $mysqli->query('SELECT `select` FROM aufgaben');

    $db->close();

    /*
          $sskill = array(
                //'endpoints.name' => 'Endpoint Name',
                'FQDN'=> 'FQDN',
                'endpoints.Online' => 'Endpunkt online',
                'protectedEntities.IP' => 'IP Adressen',
                'protectedEntities.operatingSystemVersion' => 'Betriebsystem',
                'protectedEntities.Verwaltet' => 'Verwaltungs Status',
                'protectedEntities.Probleme' => 'Endpunkt ist gefärdet',
                'endpoints.lizensiert' => 'lizensiert',
                'protectedEntities.Beschreibung' => 'Rechner Beschreibung',
                'endpoints.Richtlinie' => 'Richtlinie',
                'endpoints.bestaetigt' => 'Bestäigte Richtlinie',
                'endpoints.lastRecordUpdate' => 'letzte Verbindung',
                'lastSignatureUpdate'=> 'letztes Signatur Update',
                'lastEndpointUpdate'=> 'letztes Produkt Update',
                'Produktversion'=> 'Produktversion',
                'Signaturversion'=> 'Signaturversion',
                'endpoints.geloescht' => 'wurde gelöscht',
                'verbindung_zu_Nimbus_Server' => 'Verbundung zu Nimbus Server',
                'Poweruser_instaliert' => 'Poweruser instaliert',
                'Poweruser_instaliert' => 'Poweruser',
                'is_Virtual' => 'Virtueller Endpunkt',
                'is_Best' => 'hat Best instaliert',
                'is_managed_by_NSX' => 'ist von NSX Verwaltet',
                'malware_Present' => 'Malware Status',
                 '--SVA-Auswertung----' => '--SVA-Auswertung-----',
                 'is_SVA' => 'Security Server',
                 '-----not include---' =>' ---noch nicht fertig----',
                'updated' => 'ist Aktuell',
                'is_Fuktionning' => 'ist in Funktion',
                'SVA_Usage' => 'benutzt SVA'
                );
    */
                  ?>

                <h2> Reportauswahl:</h2>
                <form action="ausgabe.php" method="post">
                   <select class="form_ausgabe" multiple="multiple" name="skill[]" size="22">

                    <?php
                       
    while (list($key$val) = each($sskill))
                      {
                        echo 
    "<option value="" . $key . "" size="20"";
                        if (isset(
    $_POST['skill']) && in_array($key$_POST['skill']))
                        {
                          echo 
    " selected="selected"";
                        }
                        echo 
    ">" $val "</option>\n";
                      }
                    
    ?>
    in dem ausgeklammerten bereich ist der Array der funktioniert den möchte ich nun in die Datenbank setzen

    ausgabe Array aus Datenbank
    Array ( [0] => Array ( [select] => FQDN [select1] => FQDN ) [1] => Array ( [select] => endpoints.Online [select1] => Endpunkt online ) [2] => Array ( [select] => protectedEntities.IP [select1] => IP Adressen ) ) wo habe ich da einen denk Fehler könnte mir ev einer bei der While Schleife helfen.


  • #2
    Warum in die Datenbank?

    zum Thema: Du kannst ein PHP-Array zB in JSON wandeln, als "JSON-Text" in die DB geben und dann wieder zurück decodieren.
    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Dafür
      Zitat von hausl Beitrag anzeigen
      zum Thema: Du kannst ein PHP-Array zB in JSON wandeln, als "JSON-Text" in die DB geben und dann wieder zurück decodieren.
      gibt es auch was fertiges:
      Speichern:
      PHP-Code:
      $store = new SQLiteObjectStore('objstore.sqlite');
      $store->set('mydata'$sskill); 
      Lesen:
      PHP-Code:
      $store = new SQLiteObjectStore('objstore.sqlite');
      $sskillCopy $store->get('mydata'); 
      LG jspit

      PHP-Klassen auf github

      Kommentar


      • #4
        Kannte ich gar nicht, danke, nettes "Goodie". Wußtest du das schon bevor du dein VarCache gemacht hast?

        EDIT: Ach das ist ja (auch) was von dir, ich werde alt.. dachte doch glatt das hat PHP onboard.
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          OT: VarCache würde für reine Arrays auch ausreichen. Benutze ich aber nicht mehr. SQLiteObjectStore ist universeller und nimmt auch Objekte (wie z.B. DateTime) und Arrays mit Objekten.
          PHP-Klassen auf github

          Kommentar


          • #6
            habe ich nun einen denkfehler ich habe MYSQl nicht sqllite wie setze ich das den nun um ich habe ne spalte erstellt als varchar 6553 und versuche mit
            PHP-Code:
            $sskill = array(
                        
            //'endpoints.name' => 'Endpoint Name',
                        
            'FQDN'=> 'FQDN',
                        
            'endpoints.Online' => 'Endpunkt online',
                        
            'protectedEntities.IP' => 'IP Adressen',
                        
            'protectedEntities.operatingSystemVersion' => 'Betriebsystem',
                        
            'protectedEntities.Verwaltet' => 'Verwaltungs Status',
                        
            'protectedEntities.Probleme' => 'Endpunkt ist gefärdet',
                        
            'endpoints.lizensiert' => 'lizensiert',
                        
            'protectedEntities.Beschreibung' => 'Rechner Beschreibung',
                        
            'endpoints.Richtlinie' => 'Richtlinie',
                        
            'endpoints.bestaetigt' => 'Bestäigte Richtlinie',
                        
            'endpoints.lastRecordUpdate' => 'letzte Verbindung',
                        
            'lastSignatureUpdate'=> 'letztes Signatur Update',
                        
            'lastEndpointUpdate'=> 'letztes Produkt Update',
                        
            'Produktversion'=> 'Produktversion',
                        
            'Signaturversion'=> 'Signaturversion',
                        
            'endpoints.geloescht' => 'wurde gelöscht',
                        
            'verbindung_zu_Nimbus_Server' => 'Verbundung zu Nimbus Server',
                        
            'Poweruser_instaliert' => 'Poweruser instaliert',
                        
            'Poweruser_instaliert' => 'Poweruser',
                        
            'is_Virtual' => 'Virtueller Endpunkt',
                        
            'is_Best' => 'hat Best instaliert',
                        
            'is_managed_by_NSX' => 'ist von NSX Verwaltet',
                        
            'malware_Present' => 'Malware Status',
                         
            '--SVA-Auswertung----' => '--SVA-Auswertung-----',
                         
            'is_SVA' => 'Security Server',
                         
            '-----not include---' =>' ---noch nicht fertig----',
                        
            'updated' => 'ist Aktuell',
                        
            'is_Fuktionning' => 'ist in Funktion',
                        
            'SVA_Usage' => 'benutzt SVA'
                        
            );
            $db_link = new MySQLi($serverurl$servername$serverpasswort$dbname);
            $string json_encode($array);
                
            // Speichern der Daten
            $db_link->query('INSERT INTO mauswahl (array) VALUES ("'.$db_link->real_escape_string($string).'")'); 
            in die Datenbank zu schreiben
            es soll ja mit
            PHP-Code:
            $db_link = new MySQLi($serverurl$servername$serverpasswort$dbname);
            $result $db_link->query('SELECT array FROM mauswahl');

            $row $result->fetch_assoc();

            $string $row['array'];

                
            // Unserialisieren der Daten

            $array unserialize($string); 
            wieder auszulesen sein geht aber nich
            bekomme dan

            Notice: unserialize(): Error at offset 0 of 1650 bytes in /var/www/html/menue.php on line 233

            Kommentar


            • #7
              JSON: json_encode() -> json_decode()

              PHP: serialize() -> unserialize()

              Fällt dir was auf?

              PHP-Code:
              $string json_encode($array);
              // ...
              $array unserialize($string); 
              Du mischt, hier musst du json_decode() nehmen.

              Und ich würde Prepared Statements nehmen.
              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Ihr Sprecht echt in rätsel
                1. wie bekomme ich den array der nun fest in der PHP ist in die Datenbank ich versuche nun mit verschiedenen Tabellen
                2. warum ergäntzt ihr nicht meinen PHP Code dan lernt man wenigstens wo man was falsch macht.

                Kommentar


                • #9
                  Warum probierst du das nicht mal selber? Beantworte doch erstmal die Fragen. Wenn dich das überfordert probier es doch erstmal ohne Datenbank, im Manual gibt es ja genug Beispiele

                  https://www.php.net/manual/de/function.json-encode.php
                  You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

                  Kommentar


                  • #10
                    Zitat von Cyberscitymaste Beitrag anzeigen
                    2. warum ergäntzt ihr nicht meinen PHP Code dan lernt man wenigstens wo man was falsch macht.
                    Schon mal die Forenregeln gelesen? Weil du deinen Job selber machen und nicht andere für dich programmieren lassen sollst. Ich glaube man lernt viel besser wenn man es selber macht und nicht einfach was zusammenkopiert was andere machen; Und dann wieder hier her kommen wenn es nicht funktioniert.

                    Und - sorry - aber die Doku zu lesen sollte selbstverständlich sein. Dann sähest du das du dein Array in ein JSON "umwandelst" (das man in die DB schreiben kann) und du ndann beim Auslesen dieses JSON mit unserialize() wieder zu deserialisieren versuchst. Diese Funktion ist aber nicht für JSON.

                    Das habe ich dir mitgeteilt. Wenn du mit json_encode() ein JSON erzeugst, dann musst du es mit json_decode() wieder "zurück-wandeln". Das geht aus meinem Posting aber meines Erachtens doch sehr deutlich heraus. Aber mit Kopf/Hirn lesen musst du schon selbst. Sorry aber echt.
                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      hausl hat doch eindeutig im Beitrag #7 auf dein Fehler hingewiesen.
                      Wenn du bei MySQL(+ Mysqli) bleiben möchtest musst du das Speichern und Abrufen der Daten schon allein machen.
                      Aber:
                      - Entweder dein Array mit json_encode() zum String machen, in der DB speichern und nach den Abrufen wieder mit json_decode() zum Array machen.
                      - Oder mit serialize() und unserialize() arbeiten.

                      SQLite ist bei PHP am Rande bemerkt immer dabei. Wenn du in die Klasse schaust um zu sehen wie es gemacht ist, dort wird PDO benutzt!

                      Edit: zu langsam..
                      PHP-Klassen auf github

                      Kommentar


                      • #12
                        ich probiere Doch schon selber
                        ich habe mich nach diesem Beispiel gehalten
                        https://kau-boys.de/643/webentwicklu...bank-speichern

                        was die aber nicht schreiben wie muss die Datenbank aussehen

                        Kommentar


                        • #13
                          Dann schau dort aber auf jeden Fall den Teil an:

                          Zitat von Tutorial
                          Die elegante Lösung mit JSON
                          Und:

                          was die aber nicht schreiben wie muss die Datenbank aussehen
                          Du musst auch lesen!

                          Zitat von Tutorial
                          in einen String konvertiert und können somit direkt in eine VARCHAR oder TEXT Spalte speichert werden.


                          Lies das mal alles in Ruhe durch und denk darüber nach und versuche es, statt hier im Minutentakt zu posten das dies und jenes nicht funktioniert.

                          LG
                          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                          PHP.de Wissenssammlung | Kein Support per PN

                          Kommentar


                          • #14
                            ich melde mich mal zurück habe alles gelesen und komme nun dahinter
                            PHP-Code:
                            unserialize(): Error at offset 314 of 1407 bytes in /var/www/html/menue.php on line 181
                            a
                            :2:{s:4:"FQDN";s:4:"FQDN";s:16:"endpoints.Online";s:15:"Endpunkt online";} 
                            im Internet schreiben sie das in der PHP 7.2 wohl broken ist ich selber kann da aber keinen Fehler sein

                            Kommentar


                            • #15
                              Und warum machst du es jetzt nicht als JSON?
                              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                              PHP.de Wissenssammlung | Kein Support per PN

                              Kommentar

                              Lädt...
                              X