PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Arry aus Datenbank füllen (http://www.selfphp.de/forum/showthread.php?t=5750)

kawa1500 10.10.2003 14:32:40

Arry aus Datenbank füllen
 
Hallo an alle,

ich bin noch Anfänger und versuche mich nun auf meinem PC mit der PHP-Programmierung "anzufreunden". Da ich am effektivsten lerne, wenn ich eine Aufgabenstellung habe, habe ich mir halt eine gegeben.

Jetzt stehe ich allerdings vor einem Problem, bei dem ich auch mit intensiven Studieren von Büchern und Foren nicht mehr weiter komme:

Aufgabenstellung:
Aus einer MySQL soll eine Tabelle (Musik) selektiv ausgelesen werden (das klappt auch schon).

Das nun folgende ist der eigentliche "Zahnausbeisser":
?????????????????
Nun sollen drei Felder eines jeden Datensatzes in ein Arry gepackt werden (Nr, Titel, Länge), aus welchem ich dann nach dem Zufallsprinzip 5 Titel auswählen möchte, die dann in der Tabelle wiederum "upgedatet" werden sollen.
?????????????????

Könntet Ihr als "versierte Füchse" mir bitte Hilfestellung geben und einen Lösungsansatz posten --- das wäre wirklich klasse!!!

Danke schon mal im Voraus
kawa1500

Ben20 11.10.2003 08:45:16

PHP-Code:

//Ausgabe der DB in Array lesen

while($arr = @mysql_fetch_row($queryhandle)) {

$titel[][0] = $arr[0];
$titel[][1] = $arr[1];
...

}

//Array zufällig sortieren
shuffle($titel);

//Wieder in DB updaten
for($i 0$i <= 5$i++) {

mysql_query("UPDATE tabelle SET wert1 = '$title[$i][1]' WHERE id = '$titel[$i][0]');




kawa1500 11.10.2003 11:04:40

-> Ben20

vielen Dank für das Script - das ist wirklich sehr kurz - so kann ich noch nicht programmieren - aber vielleicht kommt das noch!

Aber hier habe ich noch Probs das zu kapieren:

Zitat:

//Ausgabe der DB in Array lesen

while($arr = @mysql_fetch_row($queryhandle)) {

$titel[][0] = $arr[0];
$titel[][1] = $arr[1];
...

}
Also die while-Schleife durchläuft die selektierte DB - sehe ich das richtig?
Die DB wurde vorher etwa so geöffnet:
$DB = new SQLDatabase();
$DB->dbconnect();
$sql= "SELECT nr,titel,laenge FROM Musik LIMIT 15";
$data = $DB->dbselect($sql);

Hättest Du da evtl auch einen "kürzeren" Vorschlag?

Dein "$queryhandle" ist vermutlich mein "$data" ???

Aber das mit der Arry-Zuweisung ist mir ????????????????????????????

Ich versuche mal mir das zu "erklären":
mit "$titel[][0] = $arr[0];" schreibe ich in das Arry "$titel" das Feld "0" > also die Nr.?
mit "$titel[][1] = $arr[1];" schreibe ich in das Arry "$titel" das Feld "1" > also den Titel?
mit "$titel[][2] = $arr[2];" schreibe ich in das Arry "$titel" das Feld "2" > also die Länge?

Beim Sortieren des Arrys "$titel" bleiben die jeweiligen Felder zusammen?

Sehe ich das so richtig????????????


Noch eine Frage zum Schluß:
Muss ich die geöffnete DB wieder manuell schließen (mit close oder so), oder braucht man das nicht?


Bitte erleuchte mich nochmal kurz!!

Vielen Dank und ein schönes WE

Niederbayrische Grüße
kawa1500

Ben20 11.10.2003 14:11:35

Zitat:

Also die while-Schleife durchläuft die selektierte DB - sehe ich das richtig?
Ja, siehst Du richtig!


Zitat:

Hättest Du da evtl auch einen "kürzeren" Vorschlag?
Nö, kürzer geht nicht. Es sei denn Du arbeitest mit mysql oder mssql dafür gibts eigene Funktionen!

Zitat:

Dein "$queryhandle" ist vermutlich mein "$data" ???
Ja.


Zitat:

Ich versuche mal mir das zu "erklären":
mit "$titel[][0] = $arr[0];" schreibe ich in das Arry "$titel" das Feld "0" > also die Nr.?
mit "$titel[][1] = $arr[1];" schreibe ich in das Arry "$titel" das Feld "1" > also den Titel?
mit "$titel[][2] = $arr[2];" schreibe ich in das Arry "$titel" das Feld "2" > also die Länge?
Genau richtig! $titel ist ein mehrdimensionales Array. Jedes Element besteht aus 3 Elementen (sprich 1 Element ist ein Datensatz)


Zitat:

Beim Sortieren des Arrys "$titel" bleiben die jeweiligen Felder zusammen?

Sollte so sein!


Zitat:

Muss ich die geöffnete DB wieder manuell schließen (mit close oder so), oder braucht man das nicht?
Eigentlich braucht man es nicht machen (PHP beendet die Verbindung am Ende des Scriptes normalerweise). Allerdings ist es sauberer die Verbindung zu beenden sobald man sie nicht mehr braucht.


Ich hoffe ich konnte Dir helfen!

kawa1500 11.10.2003 15:11:27

-> Ben20

ja, Du hast mir schon sehr geholfen, nur komme ich irgendwie mit den Funktionen (siehe "Die DB wurde vorher etwa so geöffnet") nicht klar!

wenn ich Dein Scriptchen da einbaue und entsprechend meinen Variablen abändere ($queryhandle -> $data) passiert irgendwie überhaupt nichts.

Bei meinem Script (ich verändere ein vorhandenes Programm, in dem mehrere Dateien, u.a. auch baseclass.php, per require implementiert werden.
Daraus sind auch die Aufrufe, wie ich die DB öffne (siehe vorheriges posting).

Ich habe aber den Eindruck, dass die beiden Varianten irgendwie nicht zusammen harmonieren??!!??

Könntest Du BITTE Dein Script soweit ergänzen, dass ich sehen kann, wie Du die DB öffnen würdest, die Aufgabenstellung ausführtst (den Teil hast Du ja schon gepostet), und dann die DB wieder schließt?

Das wäre eine super Sache, dann komme ich vielleicht besser dahinter, wie diese komischen Funktionen funktionieren, und kann mich dann entscheiden, ob ich sie verwende oder es manuell (nach Deiner Anleitung) mache.

Ich hoffe, ich mache Dir nicht zu viele Mühe. Danke nochmals!

Niederbayrische Grüße
kawa1500

Ben20 11.10.2003 22:41:09

Schau mal bei den mySQL Funktionen in der Funktionsreferenz nach, dort sind alle Funktionen die Du brauchst aufgelistet und auch beschrieben:

Datenbankverbindung herstellen:

mysql_connect("Serveradresse", "Username", "Passwort");


Datenbank auswählen:

mysql_select_db("Datenbankname");

(Danach kommt mein bisheriges Script)


Datenbank wieder schließen:

mysql_close();

kawa1500 12.10.2003 11:14:55

-> Ben20

Super - Danke Dir

kawa1500


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:09:45 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.