Jump to content



- USB-Partner (Interessiert?) -
Photo

[PHP] Array abarbeiten


  • Please log in to reply
130 replies to this topic

#121
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
geht klar, mies das du nich zum phantasia-land kommen kannst, da hätt ma das durchziehn können... achnee halt, da wärste ja fahrer gewesen... naja whatever :banga: beim nächsten mal halt ^^)

ich lasse mir die teilnehmer ja auch ausgeben, glaube, meine function ist un-nötig und garkeinesfalls best-practice oder?

(aber ey et funzt ^^)

function id2name($user) {
		$get = ("SELECT nachname FROM teilnehmer WHERE id = '$user'");
		$answer = mysql_result(mysql_query($get),0);
		return $answer;
}


if (isset ($_POST['teilnehmer'])) {
		foreach ($_POST['teilnehmer'] as $k) {
				$dood = id2name($k);
				print "$dood, ";
		}
} else {
		print "Kein Teilnehmer angegeben!";
}

Edited by Mindfuck, 03. Sep. 2007 - 14:47 Uhr.

  • 0

#122
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
ich mal wieder...

mit welchem sql statement kann ich den letzten eintrag einer spalte anzeigen? (typ varchar)

max(id) funzt, aber max(erstellung) nicht...

tabelle
-------------------------
| vorname |	name |
-------------------------
| bernd	 | berndsen|
-------------------------
| mark	 | marksen |
-------------------------
| peter	 | petersen |
-------------------------

ich will jetzt quasi nur petersen ausgeben

select name from tabelle where name = max(name);

^ funzt natürlich nicht, aber so in etwa stell ich mir das vor.. ich hab gerad auch ma nach mysql group commands geguckt, aber ich finde nur sort by, max, min, usw...

gibts ein einfaches sql command um halt ans zeilenende zu springen?
  • 0

#123
eMrOx

eMrOx

    USB-Ultimate: Hat USB-Tattoo...

  • Obermotz
  • 3,236 posts
  • Vorname: Stefan
  • Geschlecht:M
Am einfachsten ist wenn du in der Tabelle noch eine Auto-Increment-Spalte (name_id z.b.) mitfuehren laesst.
Die Selektion nach dem letzten Eintrag sehe den so aus:
SELECT vorname, name FROM tabelle ORDER BY name_id DESC LIMIT 0,1

  • 0
« Twitter · Flickr · GitHub · Soundcloud · Facebook »

"Die Leute haben damals getanzt die die Bekloppten. Sie waren glücklich - auch und gerade weil es keine Star-DJs gab. Und was passierte? Kurze Zeit später simulierten sie das Rock'n'Roll-Modell mit Stars auf der Bühne und passivem Publikum davor. Nach nur fünf Jahren der Freiheit wurden DJs zum Band-Ersatz, es wurde einem neuem Götzen gehuldigt. In Wirklichkeit geht es doch um uns, die Tänzer! Wir sollten das ganze Genießen und all unsere Energie geben"
Tony Andrews, Groove #114 Interview

#124
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9,944 posts
  • Vorname: Palle™
  • Geschlecht:M
Versteh ich gerade nicht so ganz...

Willst Du wirklich nur den Peter Petensen Datensatz ausgeben? dann such danach mit ner WHERE-Bedingung.

SELECT vorname, name
FROM tabelle
WHERE name = 'petersen'

Wenn Du die letzte Zeile ausgeben willst, such nach nach der MAX(id)

SELECT vorname, name
FROM tabelle
WHERE id = MAX(id)

edit: Okay, die Tabelle sollte natürlich ne ID-Spalte enthalten. Sowas sollte eigentlich IMMER der Fall sein (ausgenommen vielleicht Join-Tables)

Edited by P. Stylez, 07. Sep. 2007 - 12:04 Uhr.

  • 0

#125
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
hm nagut dann erklär ich warum ich das so und nicht anders brauch:

ich habe meine meetingstabelle:

mysql> select * from meetings;
+----+--------+-----------+---------+-----------------------------------------------+--------+--------------+--------+------------+
| ID | author | startzeit | endzeit | thema										 | aktion | bearbeitung  | termin | erstellung |
+----+--------+-----------+---------+-----------------------------------------------+--------+--------------+--------+------------+
|  1 | 7	  | 10:41	 | 14:30   | Erster Test-Eintrag in der frischen Datenbank | I	  | F. Luettgens | Heute  | 2007-09-04 |
|  2 | 7	  | 10:08	 | 14:30   | Test 1										| I	  | F. Luettgens | Heute  | 2007-09-07 |
|  3 | 7	  | 10:08	 | 14:30   | Test 2										| A	  | F.Luettgens  | Morgen | 2007-09-07 |
+----+--------+-----------+---------+-----------------------------------------------+--------+--------------+--------+------------+

wie du sehen kannst wurden 3 berichte hinzugefügt, davon jedoch einer vor ein paar tagen.

um nun alle von einem bestimmten tag anzeigen zu lassen, ohne zu wissen welcher tag überhaupt der letzte war, hätte ich mir gern den letzten wert aus der 'erstellung' spalte gezogen, einer variablen zugewiesen und bei ner weiteren query dann select thema from meeting where erstellung = $lastdate

so in etwa denk ich mir das, wenn ud ne bessere lösung hast, (ohne das ich wieder alles umstricken muss!) immer her damit
  • 0

#126
eMrOx

eMrOx

    USB-Ultimate: Hat USB-Tattoo...

  • Obermotz
  • 3,236 posts
  • Vorname: Stefan
  • Geschlecht:M

um nun alle von einem bestimmten tag anzeigen zu lassen, ohne zu wissen welcher tag überhaupt der letzte war, hätte ich mir gern den letzten wert aus der 'erstellung' spalte gezogen, einer variablen zugewiesen und bei ner weiteren query dann select thema from meeting where erstellung = $lastdate


Siehe mein Beispiel oben, einfach Absteigend nach der ID sortieren lassen, nur einen Eintrag ausgeben (LIMIT) - davon das Datum ist das Datum des letzten Eintrags
  • 0
« Twitter · Flickr · GitHub · Soundcloud · Facebook »

"Die Leute haben damals getanzt die die Bekloppten. Sie waren glücklich - auch und gerade weil es keine Star-DJs gab. Und was passierte? Kurze Zeit später simulierten sie das Rock'n'Roll-Modell mit Stars auf der Bühne und passivem Publikum davor. Nach nur fünf Jahren der Freiheit wurden DJs zum Band-Ersatz, es wurde einem neuem Götzen gehuldigt. In Wirklichkeit geht es doch um uns, die Tänzer! Wir sollten das ganze Genießen und all unsere Energie geben"
Tony Andrews, Groove #114 Interview

#127
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
:banga:

da hast du recht, so gehts ja auch :P


mysql> SELECT max(ID) from meetings;
+---------+
| max(ID) |
+---------+
| 3 |
+---------+
1 row in set (0.00 sec)

mysql> SELECT 'erstellung' FROM meetings WHERE 'ID' = MAX(id);
ERROR 1111: Invalid use of group function


Edited by Mindfuck, 07. Sep. 2007 - 12:13 Uhr.

  • 0

#128
eMrOx

eMrOx

    USB-Ultimate: Hat USB-Tattoo...

  • Obermotz
  • 3,236 posts
  • Vorname: Stefan
  • Geschlecht:M
Alternativ kannst Du auch nach dem Datum sortieren lassen. Bei groesseren Datenmengen dann halt nur aufpassen das auch ein Index genutzt wird. (ist bei id's meistens der Fall, deswegen nutze ich zum Sortieren in solchen Faellen gleich die id)
  • 0
« Twitter · Flickr · GitHub · Soundcloud · Facebook »

"Die Leute haben damals getanzt die die Bekloppten. Sie waren glücklich - auch und gerade weil es keine Star-DJs gab. Und was passierte? Kurze Zeit später simulierten sie das Rock'n'Roll-Modell mit Stars auf der Bühne und passivem Publikum davor. Nach nur fünf Jahren der Freiheit wurden DJs zum Band-Ersatz, es wurde einem neuem Götzen gehuldigt. In Wirklichkeit geht es doch um uns, die Tänzer! Wir sollten das ganze Genießen und all unsere Energie geben"
Tony Andrews, Groove #114 Interview

#129
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
schau ma eben, ich bekomm nen fehler :banga:
  • 0

#130
eMrOx

eMrOx

    USB-Ultimate: Hat USB-Tattoo...

  • Obermotz
  • 3,236 posts
  • Vorname: Stefan
  • Geschlecht:M

Am einfachsten ist wenn du in der Tabelle noch eine Auto-Increment-Spalte (name_id z.b.) mitfuehren laesst.
Die Selektion nach dem letzten Eintrag sehe den so aus:

SELECT vorname, name FROM tabelle ORDER BY name_id DESC LIMIT 0,1


Mit dieser Methode geht es auf jeden Fall ..
Hier noch einmal fuer Dich umgeschrieben:

SELECT erstellung FROM meetings ORDER BY id DESC LIMIT 0,1

  • 0
« Twitter · Flickr · GitHub · Soundcloud · Facebook »

"Die Leute haben damals getanzt die die Bekloppten. Sie waren glücklich - auch und gerade weil es keine Star-DJs gab. Und was passierte? Kurze Zeit später simulierten sie das Rock'n'Roll-Modell mit Stars auf der Bühne und passivem Publikum davor. Nach nur fünf Jahren der Freiheit wurden DJs zum Band-Ersatz, es wurde einem neuem Götzen gehuldigt. In Wirklichkeit geht es doch um uns, die Tänzer! Wir sollten das ganze Genießen und all unsere Energie geben"
Tony Andrews, Groove #114 Interview

#131
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6,560 posts
  • Geschlecht:M
Irgendwie bin ich jetz durcheinander... ich bekomme nun "test 1" ausgegeben, also der ersten datensatz, aber nur diesen, kein array.. hab ich wieder was vergessen? :banga:

$getlastdate = mysql_result(mysql_query("SELECT erstellung FROM meetings ORDER BY id DESC LIMIT 0,1"),0);
$oldmeetingsquery = sprintf("SELECT thema FROM meetings WHERE erstellung = '$getlastdate'");

$oldmeetings = mysql_result(mysql_query("$oldmeetingsquery"),0);

echo ("$oldmeetings\n<br>");

foreach ($oldmeetings as $oldmeeting) {
		echo ("<td><textarea name=\"thema[]\" rows=\"3\" cols=\"90\" value=\"$oldmeeting\"></textarea></td>");
}

Test 1

Warning: Invalid argument supplied for foreach() in /usr/local/apache2/htdocs/meeting.php on line 178



edit: ich habe gerade herausgefunden das es wohl an der mit übergebenen 0 beim mysql_result liegt, ich konnt mich gerad noch an den anderen befehl errinnern von wegen fetch rows oder so.. na ma schaun :P


edit2: und siehe da, ich erhalte ein array :P

Edited by Mindfuck, 07. Sep. 2007 - 12:40 Uhr.

  • 0




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users