PHP Formular

joe69

Grünschnabel
Hallo liebe Community,

ich hätte eine Frage, womit ich wirklich ein Problem hab.

Also, ich hab ein kleines Projekt laufen, das eigentlich für mich kein Problem darstellt, nur will mein Partner das anders programmieren als ich und somit stell ich zuerst die Frage welche Methode effektiver ist und 2tens wie man seine Methode umsetzt.
Es geht ihm darum möglichst wenig DB - Verbindungen aufzubauen.

Also wir haben eine view.php

Dieses zeigt alle Datensätze an aus der Datenbank
ich würd einfach eine mysql_query Abfrage machen und diese dann via while schleife ausgeben.

Mein Freund sagt:
Wir laden alle Datensätze in ein Array speichern die in einer Session ab und benutzen immer die Datensätze für die nächsten Schritte... nur wenn WHERE modifieded AFTER lastload anders ist wird wieder neu in das Array geladen?
Geht sowas? Kann ich die dann wirklich immer benutzen?
Wie würde sowas aussehen ?

Also meine Methode ist auf alle Fälle die leichte, ich holl mir wenn die view immer kommt alle Datensätze neu.
Er will das so , das wenn man auf die View geht nur die Datensätze geholt werden die modifiziert wurden. Ist das wirklich ressourcen sparender?

2.master.php

Die gib mir sozusagen den HTML Code aus
Vorname , Nachname, Straße

und wenn sie eine Id von view bekommt, ladet die function edit() und es werden alle Daten in die felder?
Kann ich das mit dem gespeicherten Array dann verwirklichen , wie holle ich mir zum beispiel die Daten aus dem array über die session?

ich hab das früher immer so gemacht ich holle mir die id und frag dann die datenbank ab nach genau der id und schwubti wubsi wars schon geladen. Ist es mit der Array Session variante effizenter?

okay, so sagen wir die daten wurden geladen wir sind in der edit funktion, so muss ich jetzt auch wieder das array editieren und ein update in der db durchführen..
Wie editiere ich das Array?

Ich hab mir die Array Manual durchgelesen aber vll 2-3 bsp. Code die mir diese funktionen näher bringen würden, würde mir sehr helfen.

Danke
 
Hi, ob es effizenter ist kann ich nicht genau sagen. Ich denke aber schon, da man ja weniger aufrufe der db braucht. du kannst eine $_SESSION ja auch direkt als array deklarieren. Ein Array kannst du ja dann bequem per foreach schleife auslesen, zb. so:
PHP:
foreach(array as $key){
print $key;
}
wenn du änderungen mit Datum speicherst, kannst du ja anhand des Datums anfragen welche Datensätze geladen werden sollen und welche nicht.
Bin leider auch noch kein Profil, hoffe aber ich konnte ein bissl helfen.
lg
 
Ja wenn ich zum Beispiel 100 Einträge in meiner DB hab, wie kann ich dann auf den 77 zugreifen? das ich nur vom 77 die Vorname , Nachname, Datum
 
PHP:
$load = $connect->query("SELECT * FROM test");
	while($row = $load->fetch_assoc()){
	foreach($row as $key => $value){
		if($value == 77 && $key == 'id') print $key." ".$value."<br>";
		}
	}
würde nur eintrag 77 liefern. allerdings kann man so die daten nicht auslesen, da jede spalte auch hier eine spalte ist. heißt also, das man nicht alle daten aus dem datensatz bekommt sonder nur einen. deswegen müsste man sich vorher ein array basteln, dann würde das gehn. aber es gibt sicher noch andere die einen besseren vorschlag haben.^^ wie gesagt ich bin selbst noch kein profi.
lg
 
Hi,

das ist aber furchtbar ineffektiv ;) Besser wäre man verlagert die Bedingung in das SQL Statement. Sowas wie:

SQL:
SELECT * FROM test WHERE id = 77

Wie das dann genau aussieht hängt von deinen Strukturen ab.

Best regards
 
Aso, stimmt. Aber durch jeden Tipp den ich geben kann lern ich selbst noch wieder was dazu^^ Vor allem, weil so wie ich es machen würde brichtigt wird.
 
Hi,

das ist aber furchtbar ineffektiv ;) Besser wäre man verlagert die Bedingung in das SQL Statement. Sowas wie:

SQL:
SELECT * FROM test WHERE id = 77

Wie das dann genau aussieht hängt von deinen Strukturen ab.

Best regards

Aber so würd ich wieder DB anfragen, ich will alle Daten einmal abfragen diese in ein Array speichern und dann mit dem Array arbeiten...
Also wenn ich dann einen Datensatz brauch und editieren will soll er aus dem Array geladen werden und nicht aus der DB wieder.
 
Du solltest dann dem Array als schlüssel die id geben und den rest als Wert, dann kannst du immer den Schlüssel überprüfen. Du kannst ein Array auch mit in_array auf bestimmte Werte prüfen, wenn dir das noch hilft.
 
Stell dir mal folgende Situation vor:

1. Abfrage aller benötigten Daten aus der DB und liegen alle in einem Array
2. Array serialisieren und in Session speichern. (hierdurch hast du immer alle datensätze und musst dir den richtigen raussuchen, also jedesmal durch das gesamt Array iterieren)
3. das ganze Array wird immer in der Session gehalten (ne riesen Menge an Daten)
4. für die View benötigten Daten deserialisieren und durchiterrieren

Effektiver:
1. Abfrage aller benötigten Daten aus der DB und liegen alle in einem Array
2. Daten aus dem Array asugeben
3. Den Datensatz welchen du editieren willst wie Tim schon gesagt mit einer neuen Abfrage.

Somit musst du nicht hunderte von Daten in der Session speichern und von Seite zu Seite tragen.
1 MySQL-Query ist wohl schneller als durch hunderte Datensätze iterrieren. Das Update des Datensatzes bringt dir im Endeffekt im Array erstmal nichts, du willst ja schliesslich die Daten auch in der Datenbank ändern.
 
Also kann man gerne viele DB-Anfragen haben und es kostet keine Performence? Hätte ich nicht gedacht ich habe auch bei mir schon versucht viele DB-Anfragen zu beseitigen, weil ich dachte es wäre nicht so gut.
Ist ja gut zu wissen.
 
Zurück