Verwendung von Array- oder Advanced-Matrizen und Einkaufswagen mit PHP

Arrays sind Vektoren oder Matrizen mit einer oder mehreren Dimensionen. Wenn wir programmieren, verstehen wir, dass es sich um eine Gruppe von Daten handelt, die in Java oder .NET speziell zum Verwalten von Datenbanken verwendet werden und als Dataset bezeichnet werden.

Der Inhalt, in dem eine Datenmatrix gespeichert ist, wird durch eine Spalte dargestellt. Dies sind das Feld oder die Variable und die Zeilen, die die betreffenden Daten darstellen.

Ein Beispiel für Matrixstrukturen ist eine Tabelle oder eine Abfrage an phpmyadmin oder einen Einkaufswagen.

matrices-avanzado.jpg

Wenn wir zum Beispiel in Excel eine Tabelle in das CSV-Format exportieren, getrennt durch Kommas oder Tabulatoren, können wir diese Datei von PHP lesen, in ein Array konvertieren und in eine Datenbank importieren. Sehen wir uns ein Beispiel an.

Wir haben eine Verkaufstabelle, die wir aus PHP lesen und dann in eine Datenbank importieren oder Datensätze aktualisieren möchten.

matrices-avanzado2.jpg

Wir exportieren die Vorlage sales.xlsx nach sales.csv, getrennt durch Kommas. In der Textdatei sieht die Struktur also folgendermaßen aus:

matrices-avanzado3.jpg

Der PHP-Code zum Lesen dieser Datei lautet wie folgt:

 <? $ file = 'sales.csv'; $ row = 0; if (($ filecsv = fopen ($ file, "r"))! == FALSE) { while (($ data = fgetcsv ($ filecsv, 0, ","))! == FALSE) { if ($ row == 0) { // Wenn es die erste Zeile ist, zeige ich die Titel jeder Spalte echo $ data [0]. ' '. $ data [1].' '. $ data [2].' '. $ data [3].' <br/> '; $ row ++; } else { // $ data [0] = product; $ data [1] = Kaufpreis; $ data [2] = Verkaufspreis; $ data [3] = gain echo $ data [0]. ' '. $ data [1].' '. $ data [2].' '. $ data [3].' <br/> '; // Hier würden wir die mysql-Anweisung setzen, um die Daten einzufügen oder zu aktualisieren } } } else { echo 'csv file failed.'; } fclose ($ filecsv); ?> 

matrices-avanzado4.jpg

Diese Art von Struktur wird häufig in virtuellen Geschäften für Einkaufswagen verwendet, in der Regel kauft der Benutzer und die Daten werden in einer Sitzungsmatrix gespeichert. Wenn der Kauf abgeschlossen ist, werden diese Daten dauerhaft gespeichert, sodass der Benutzer die Daten speichern kann. Daten im Cache Ihres Browsers und damit nicht so viele Aufrufe an den Server, sehen wir uns ein Beispiel an.

Wir haben eine Einkaufssitzung erstellt, zu der wir Daten hinzugefügt haben. Dies erfolgt nach Auswahl des zu kaufenden Produkts

 <? php session_start (); // Ich füge drei Prudctos hinzu $ _SESSION ['cart'] [1] = Array ('amount' => 2, product '=>' Pants ',' color '=>' BLUE ',' price '=> 60.00); $ _SESSION ['cart'] [2] = Array ('amount' => 2, 'product' => 'Shirt', 'color' => 'Red', 'price' => 70.00); $ _SESSION ['cart'] [3] = array ('amount' => 1, 'product' => 'Shoes', 'color' => 'Black', 'price' => 50.00); // Bereiten Sie die im Warenkorb befindlichen Produkte vor Echo '<table border = 1> <tr> <td> Produkt </ td> <td> Farbe </ td> <td> Menge </ td> <td> Preis </ td> '; foreach ($ _ SESSION ['cart'] als $ row) { Echo '<tr> <td> '. $ row [' product '].' </ td> <td> '. $ row [' color '].' </ td> <td> '. $ row [' amount '].' </ td> <td> '. $ row [' price '].' </ td> </ tr> '; } echo '</ table>'; // Ich zeige das Array, um zu sehen, wie es aussieht echo "<pre>"; print_r ($ _ SESSION ['cart']); Echo "</ pre>"; ?> 

matrices-avanzado5.jpg

Funktionen zum Verwalten und Ausführen von Operationen mit Arrays oder Matrizen

Teilen Sie eine Matrix in Teile oder Untermatrizen

Mit Array_chunk können wir eine Matrix in gleiche Teile teilen, der letzte Teil kann weniger Elemente enthalten. Wenn wir zum Beispiel eine sehr große Matrix haben, können wir sie in mehrere Teile teilen.

Im vorherigen Beispiel können wir die Matrix in zwei Teile teilen:

 print_r (array_chunk ($ _ SESSION ['cart'], 2)); 

Wir haben ein Array mit drei Elementen und konvertieren sie in zwei Arrays, eines mit zwei Elementen und das andere mit einem.

 Array ( [0] => Array ( [0] => Array ( [Betrag] => 2 [Produkt] => Hosen [Farbe] => BLAU [Preis] => 60 ) [1] => Array ( [Betrag] => 2 [Produkt] => Shirt [Farbe] => Rot [Preis] => 70 ) ) [1] => Array ( [0] => Array ( [Anzahl] => 1 [Produkt] => Schuhe [Farbe] => Schwarz [Preis] => 50 ) ) ) 

Ruft die Daten einer Spalte ab

Array_column () gibt die Daten einer Spalte der Matrix zurück, die Spalte wird durch ihren Codenamen identifiziert.

See also  So brennen Sie Ubuntu-Bildschirm kostenlos

Beispiel zeigen separat die Daten der Spaltenprodukte und die Spaltenpreise.

 echo "<pre>"; $ products = array_column ($ _ SESSION ['cart'], 'product'); $ prices = array_column ($ _ SESSION ['cart'], 'price'); print_r ($ products); print_r ($ prices); Echo "</ pre>"; 

Das Produkt der Ergebnisspalte:

 Array ( [0] => Hosen [1] => Shirt [2] => Schuhe ) ?> 

Preis der Ergebnisspalte:

 Array ( [0] => 60 [1] => 70 [2] => 50 ) 

Sortieren Sie ein Array nach einer oder mehreren Spalten

Mit Array_multisort () können mehrere Arrays gleichzeitig oder ein mehrdimensionales Array nach einer oder mehreren Dimensionen sortiert werden.

 echo "<pre>"; // Liste der Spalten abrufen $ data = $ _ SESSION ['cart']; // Scrolle durch die Spalte, um die Daten zu sortieren foreach ($ data als $ key => $ row) { $ product [$ key] = $ row ['product']; } // Sortieren Sie die Produktdaten in aufsteigender Reihenfolge array_multisort ($ product, SORT_ASC, $ data); // Wir zeigen die Daten print_r ($ data); Echo "</ pre>"; ?> 

Das Ergebnis dieser Bestellung ist:

 Array ( [0] => Array ( [Betrag] => 2 [Produkt] => Shirt [Farbe] => Rot [Preis] => 70 ) [1] => Array ( [Betrag] => 2 [Produkt] => Hosen [Farbe] => BLAU [Preis] => 60 ) [2] => Array ( [Anzahl] => 1 [Produkt] => Schuhe [Farbe] => Schwarz [Preis] => 50 ) ) 

Suchen Sie nach Daten in einer bestimmten Spalte

Array_search ist eine Funktion von PHP, mit der ein Array durchsucht und die Position oder der Schlüssel zurückgegeben wird, an der sich die Daten befinden.

Beispiel

 echo "<pre>"; // Liste der Spalten abrufen $ data = $ _ SESSION ['cart']; // Wir erhalten die Daten einer Spalte $ products = array_column ($ _ SESSION ['cart'], 'product'); $ key = array_search ('Shirt', $ products); echo "Das Shirt-Produkt existiert mit der ID:". $ password; Echo "</ pre>"; 

Das Ergebnis wird folgendes sein:

Das Shirtprodukt existiert mit ID: 1

Fügen Sie Elemente am Ende eines Arrays hinzu

Die Funktion array_push fügt ein oder mehrere Elemente am Ende eines Arrays hinzu

 echo "<pre>"; // Liste der Spalten abrufen $ data = $ _ SESSION ['cart']; // Array mit hinzuzufügenden Daten $ newcompra = array ('amount' => 1, 'product' => 'T-shirt', 'color' => 'Green', 'price' => 20.00, 'stock' => 5); // Wir fügen die neuen Daten dem Array hinzu array_push ($ data, $ new purchase); print_r ($ data); Echo "</ pre>"; 

Das Ergebnis wird folgendes sein:

 Array ( [1] => Array ( [Betrag] => 2 [Produkt] => Hosen [Farbe] => BLAU [Preis] => 60 [stock] => 0 ) [2] => Array ( [Betrag] => 2 [Produkt] => Shirt [Farbe] => Rot [Preis] => 70 [stock] => 5 ) [3] => Array ( [Anzahl] => 1 [Produkt] => Schuhe [Farbe] => Schwarz [Preis] => 50 [stock] => 1 ) [4] => Array ( [Anzahl] => 1 [Produkt] => T-Shirt [Farbe] => Grün [Preis] => 20 [stock] => 5 ) ) 

Entfernen Sie ein Element aus einem Array

Die Unset-Funktion ermöglicht es uns, Daten in PHP als Sessions und leere Variablen zu löschen. In diesem Fall verwenden wir sie zum Beispiel, um Elemente aus einer Matrix zu entfernen.

 echo "<pre>"; // Liste der Spalten abrufen $ data = $ _ SESSION ['cart']; // Element mit 2 entfernen nicht gesetzt ($ data [2]); print_r ($ data); Echo "</ pre>"; 

Wenn wir alle Elemente der Matrix löschen wollen, verwenden wir:

 nicht gesetzt ($ data); 

Dieselbe Funktion wird verwendet, um die Sitzung zu löschen , sobald der Kauf bezahlt und die Daten gespeichert wurden:

 nicht gesetzt ($ _ SESSION [cart]); 

matrices-avanzado6.jpg

Bestimmen Sie die aktuelle Position und bewegen Sie sich innerhalb einer Matrix:

 echo "<pre>"; // Liste der Spalten abrufen $ data = $ _ SESSION ['cart']; // Aktuelle Position Echo 'Aktuelle Position <br>'; $ position = current ($ data); print_r ($ position); Echo '<br> <br> Nächste Position <br>'; $ proxima_posicion = next ($ data); Echo '<br> <br> Nächste Position'; print_r ($ proxima_position); Echo "</ pre>"; session_unset (); session_destroy (); ?> 
Andere Funktionen, um sich innerhalb einer Matrix zu bewegen

Zum vorherigen Element zum aktuellen Element wechseln

 $ previous_position = prev ($ data); Bewegen Sie sich auch zum letzten Element der Matrix $ last = end ($ data); 

Gehen Sie zum ersten Element der Matrix

 $ first = reset ($ data); 

Auf diese Weise können wir uns leicht in der Matrix bewegen, als wäre es ein Datensatz in anderen Sprachen.

Implementieren Sie einen Warenkorb mit MySQL und Matrizen

Wir werden einen Warenkorb in PHP erstellen, um zu verstehen, wie das Array funktioniert. Zuerst haben wir eine Datenbank, einen Speicher und eine Katalogtabelle erstellt.

 - - Tabellenstruktur für die Tabelle `catalog` - CREATE TABLE IF NOT EXISTS `catalog` ( `id` int (11) NICHT NULL, `product` varchar (100) STANDARD NULL, `price` decimal (9.2) STANDARD NULL ) ENGINE = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = latin1; Wir fügen einige Daten für unser Beispiel ein INSERT IN `catalog` (` id`, `product`,` price`) VALUES (1, "Hosen", "50,00"), (2, 'Shirt', '40 .00 '), (3, 'Schuhe', '30 .00 ') 

Wir werden dann die Datei catalog.php erstellen, um die Produkte anzuzeigen. Die Benutzeroberfläche sieht folgendermaßen aus:

See also  Senden Sie kostenlos sichere E-Mails und Nachrichten

matrices-avanzado7.jpg

Die Symbole lauten wie folgt:

Visualisieren Sie Einkäufe im Warenkorb
matrices-avanzado8.jpg

Produkte zum Warenkorb hinzufügen
matrices-avanzado9.jpg

Wir kopieren den folgenden Code in die Datei catalogo.php

 <? session_start (); // Verbindung zur Datenbank herstellen mysql_connect ("localhost", "root", ""); mysql_select_db ("store"); // Wir prüfen, ob der Warenkorb Daten enthält, // Wenn es enthält, ordnen wir die Sitzung in der Cart-Matrix zu if (isset ($ _ SESSION ['cart'])) { $ cart = $ _ SESSION ['cart']; } else { $ cart = false; } ?> <html> <head> <title> Produktkatalog </ title> <meta http-equiv = "Inhaltstyp" content = "text / html; charset = iso-8859-1"> </ head> <body> <table width = "350px" align = "center" cellpadding = "3" cellspacing = "0" style = "border: 1px solid # 000000;"> <tr valign = "middle" bordercolor = "# 000" bgcolor = "# B7F68A"> <td width = "150"> <strong> Produkt </ strong> </ td> <td width = "100"> <strong> Preis </ strong> </ td> <td width = "100" align = "right"> <a href="vercarrito.php" title="Meine Einkäufe anzeigen"> <img src = "button.png" width = "150" height = "46" border = "0"> </a> </ td> </ tr> <? php // konsultiere die Datenbank $ rscatalogo = mysql_query ("wähle * aus Katalog ***** nach Produkt auf"); // wir zeigen alle produkte $ i = 0; while ($ row = mysql_fetch_assoc ($ rscatalogo)) { $ i ++; // Wenn die Reihe ungerade ist, setze ich graue Farbe // aber weiß if ($ i% 2! == 0) { $ bgcolor = "# f8f8f8"; } else { $ bgcolor = "# ffffff"; } ?> <tr valign = "middle" bgcolor = "<? echo $ bgcolor?>"> <td> <? php echo utf8_encode ($ row ['product'])?> </ td> <td> <? php echo $ row ['price']?> </ td> <td align = "center"> <? php if (! $ cart ||! isset ($ cart [$ row ['id']]) || $ cart [$ row ['id']]! = $ row ['id']) { // Überprüfen Sie, ob sich das Produkt in der Datenbank befindet ?> <a href="addlecompra.php?id=<?php echo $fila['id'); ?> "> <img src = "add.png" width = "23" height = "19" border = "0" title = "In den Warenkorb"> </a> </ td> </ tr> <? php} }?> </ table> <br> <br> // Wir säubern den Wagen <a href="index.php?borrar=1"> Löschen </a> </ body> </ html> <? php ob_end_flush (); if ($ _GET ['delete'] == 1) { session_unset (); session_destroy (); } ?> 

Das Ergebnis der Ausführung in einem Browser ist der vorherige Bildschirm:

matrices-avanzado10.jpg

Als Nächstes erstellen wir die Datei addcompra.php, die den Link mit der ID des Produkts erhält und über die Sitzung und das Array in den Warenkorb legt.

 <? php session_start (); // Wir haben die Sitzung gestartet. Wenn sie bereits gestartet wurde, haben wir sie zurückgenommen // Verbindung zur Datenbank herstellen mysql_connect ("localhost", "root", ""); mysql_select_db ("store"); // Wir überprüfen die Anzahl der Produkte im Warenkorb // Wenn es null ist, setzen wir eins if (! isset ($ amount)) {$ quantity = 1;} // Wir nehmen die ID des ausgewählten Produkts $ id = $ _ GET ['id']; // Wir konsultieren den Katalog, um festzustellen, welches Produkt das ist $ rscatalogo = mysql_query ("wähle * aus dem Katalog wo id = ". $ id); $ row = mysql_fetch_array ($ rscatalogo); // Überprüfen Sie, ob der Einkaufswagen Daten enthält oder leer ist if (isset ($ _ SESSION ['Warenkorb'])) // Wenn Sie Daten haben, weisen wir sie einem Array zu $ cart = $ _ SESSION ['cart']; // Nun fügen wir das neue Produkt in die Matrix ein // Wenn die Produkt-ID existiert, fügen wir 1 hinzu $ amount = $ cart [$ id] ['Quantity'] + 1; // Wir fügen es hinzu, wenn es nicht existiert oder aktualisieren es, wenn es existiert $ cart [$ id] = array ($ id, 'Menge' => $ Menge, 'Produkt' => $ Reihe ['Produkt'], 'price' => $ row ['price'], 'id' => $ id); // Wir aktualisieren den Sitzungskorb in der Matrix $ _SESSION ['cart'] = $ cart; // Wir senden den Warenkorb mit den Änderungen zu sehen header ("Ort: vercarrito.php"); ?> 

Unten haben wir die Datei vercarrito.php, in der wir die Beträge und die zu zahlenden Beträge anzeigen und berechnen müssen

 <? php session_start (); // Starte oder starte das // session if (isset ($ _ SESSION ['Warenkorb'])) $ cart = $ _ SESSION ['cart']; sonst $ cart = false; // Wir weisen es der Variablen zu // $ car wenn es existiert oder wir setzen auf false $ car // sonst ?> <html> <head> <title> IN DEN WARENKORB HINZUFÜGENDE PRODUKTE </ title> <meta http-equiv = "Inhaltstyp" content = "text / html; charset = iso-8859-1"> <style type = "text / css"> Körper { Schriftgröße: 12px; Farbe: # 0000; } .encabezados { Schriftgröße: 12px; Farbe: #ffffff; } </ style> </ style> </ head> <body> <h1 align = "center"> Meine Einkäufe </ h1> <? php if ($ cart) { // Wenn das Auto nicht leer ist, // wir zeigen die produkte ?> <table width = "720" border = "0" cellspacing = "0" cellpadding = "2" align = "center" style = "font-size: 15px"> <tr bgcolor = "# 333333" class = "headers"> <td width = "105"> Produkt </ td> <td width = "207"> Preis </ td> <td colspan = "2" align = "center"> Anzahl der Einheiten </ td> </ tr> <? php // Ändere die Farben je nach Zeile, egal ob gerade oder ungerade $ bgcolor = array ("# ​​ffffff", "# F0F0F0"); // Variablen initialisieren $ colorfila = 0; $ importetotal = 0; $ productproducts = 0; // Wir gehen die Cart-Matrix durch, um die Daten zu extrahieren foreach ($ cart as $ key => $ row) { // Wir berechnen die Menge der Produkte und die Gesamtmenge $ total_subtotal = $ row ['amount'] * $ row ['price']; $ importetotal = $ importetotal + $ amount_subtotal; $ productproducts = $ products + $ row ['Quantity']; $ colorfila ++; // colorfila wir benutzen es um die Farben zu ändern ?> <tr bgcolor = "<? php echo $ bgcolor [$ colorfila% 2];?>" '> <td> <? php echo utf8_encode ($ row ['product'])?> </ td> <td> <? php echo $ row ['price']?> </ td> <td width = "43" align = "center"> <? php echo $ row ['amount']?> </ td> </ tr> <? }?> </ table> <! - Wir zeigen die Menge der Produkte -> <div align = "center"> <span> Gesamtanzahl der Produkte: <? echo $ productproducts; ?> </ span> </ div> <br> <! - Wir zeigen den zu zahlenden Betrag -> <div align = "center"> Zu zahlender Betrag: <? php echo number_format ($ totalmotal, 2); ?> </ div> <br> <div align = "center"> <a href="index.php"> Zurück zu den Produkten </a> </ div> <? php} else {?> <p align = "center"> <a href="index.php"> Sie haben keine Einkäufe getätigt </a> <? php}?> </ p> </ body> </ html> 

matrices-avanzado11.jpg

Fazit
Der Einkaufswagen ist einfach, es gibt keine großen Funktionen und keine große Komplexität, um zu verstehen, wie die Matrizen funktionieren und wie wir sie verwenden können. Dieser Fall ist nur eine von allen Anwendungen, die wir implementieren können.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *