Zum Inhalt wechseln



- USB-Partner (Interessiert?) -
Foto

[PHP] Array abarbeiten


  • Please log in to reply
130 replies to this topic

#61
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M

Hö? Wenn auf den Servern PHP läuft, dann doch auch diese Erweiterung


http://www.pdflib.co...amily/pdflib-7/

geb nur das wieder was ich aus der tabelle rausles...

AIX 5 Supported, aber nur c,c++,java...
  • 0

#62
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M

ich möcht per js ne tabelle dynamisch erweitern, jemand ne idee wo der fehler steckt?

ich bekomm immer "document.getElementById ist Null"


Bei welchem Aufruf?
  • 0

#63
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M

ich möcht per js ne tabelle dynamisch erweitern, jemand ne idee wo der fehler steckt?

ich bekomm immer "document.getElementById ist Null"


Bei welchem Aufruf?

was hast du denn gefressen :banga:

das is doch schon aaaalt ^^
  • 0

#64
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
Argh...

Sorry, ich hab kürzlich auf diese "Thema+" Übersicht umgestellt und deswegen wird mir jetzt jedes Mal das erste Posting des Themas zu beginn einer Seite angezeigt. Das hat mich gerade verwirrt :banga:
  • 0

#65
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
macht ja nix ^^


so ich mach für heut schluss hier, keen bock mehr :]

frohes leben noch & bis später
  • 0

#66
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
hab gerad ma wieder angefangen, möcht den kram nun in ne db speichern und hab dazu ein paar fragen:

1. wie gestallte ich die db am besten? im moment siehts so aus:

use meeting
create table data
(
ID INT AUTO_INCREMENT PRIMARY KEY,
teilnehmer TEXT,
author VARCHAR(64),
startzeit VARCHAR(64),
endzeit VARCHAR(64),
thema TEXT,
aktion VARCHAR(1),
bearbeitung VARCHAR(64),
termin VARCHAR(64),
erstellung DATETIME
);

Ich würde dann anhand der ID drauf zugreifen, is kla... suchen würde ich über das erstellungsdatum oder?

2. den kram mit der tabelle kennt ihr ja schon, ich wollte das nun auf ein sql statement übertragen, %s wird aber nicht gewandelt und die arrays ebenfalls nicht... muss ich erst wieder in nen string konvertieren oder gibts was simpleres?

foreach ($_POST['thema'] as $key => $thema) {
  $writedb = "INSERT INTO data (thema, aktion, bearbeitung, termin, startzeit, endzeit, teilnehmer, author, erstellung) VALUES ('%s', '%s', '%s', '%s', '$_POST[startzeit]', '$_PO
ST[endzeit]', '$_POST[teilnehmer]', '$author', NOW())";
  mysql_query($writedb);
  printf("<tr><td>%s</td><td align=\"center\">%s</td><td align=\"center\">%s</td><td align=\"center\">%s</td></tr>\n",
		 $thema,
		 $_POST['aktion'][$key],
		 $_POST['bearbeitung'][$key],
		 $_POST['termin'][$key]);
}

dadurch das ich ja nicht weiss wieviel datensätze da kommen musste ich ja dynamisch die tabelle erweitern und gehe nun mit der foreach schleife alles durch, natürlich wird dann für jeden eintrag im bericht ein neuer sql-table angelegt, ist das okay so? damit arbeiten kann man ja indem man halt nach dem erstellungsdatum anzeigen lässt, aber is das best-practice? kommt mir nicht so vor...


ich glaub das wars erstmal :banga:


edit:

hab den sql 'output' vergessen, damit ihr seht was ich mein:

mysql> select * from data;
+----+------------+--------------+-----------+---------+-------+--------+-------------+--------+---------------------+
| ID | teilnehmer | author	   | startzeit | endzeit | thema | aktion | bearbeitung | termin | erstellung		  |
+----+------------+--------------+-----------+---------+-------+--------+-------------+--------+---------------------+
|  1 | Array	  | F. Luettgens | 13:30	 | 14:30   | %s	| %	  | %s		  | %s	 | 2007-08-29 13:31:34 |
|  2 | Array	  | F. Luettgens | 13:30	 | 14:30   | %s	| %	  | %s		  | %s	 | 2007-08-29 13:31:34 |
+----+------------+--------------+-----------+---------+-------+--------+-------------+--------+---------------------+
2 rows in set (0.00 sec)

Dieser Beitrag wurde von Mindfuck bearbeitet: 29. Aug. 2007 - 13:45 Uhr

  • 0

#67
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
1. 'data' als Name find ich ziemlich unglücklich... Warum nimmst Du nicht als Tabellenname 'meetings' (immer den Plural benutzen) und als DB-Name irgendwas anderes?

2. Zeitliche Spalten wie 'startzeit', 'endzeit' und 'termin' als VARCHARs zu definieren ist ja mal ganz schmutzig :P Ich würd bei sowas immer TIMESTAMP nehmen.

3. Ich gehe davon aus, dass du in der Spalte 'teilnehmer' alle Teilnehmer nach dem Muster <name1>, <name2>, <name3> usw. speichern willst... Das ist ganz schlechter Stil! Meetings und Teilnehmer stehen in einer m:n Beziehung, d.h. ein Meeting kann beliebig viele Teilnehmer haben und ein Teilnehmer kann beliebig viele Meetings besucht haben. Du bräuchtest also zuerst mal eine Tabelle 'teilnehmer', in der sämtliche Teilnehmer gespeichert werden. Dann brauchst Du eine Join-Table namens 'meeting_teilnehmer', in der du zwei Spalten definierst, die die ForeignKeys von 'meetings' und 'teilnehmer' aufnehmen.

Like this:

CREATE TABLE `teilnehmer` ( 
	`id`		  int(11) AUTO_INCREMENT NOT NULL,
	`vorname` 	varchar(50) NULL,
	`nachname`	varchar(50) NULL,
	PRIMARY KEY(`id`)
)

CREATE TABLE `meeting_teilnehmer` ( 
	`meeting_id`	  int(11) NOT NULL,
	`teilnehmer_id`	int(11) NOT NULL 
	)
GO
ALTER TABLE `meeting_teilnehmer`
	ADD CONSTRAINT `recipient_id`
	FOREIGN KEY(`meeting_id`, `teilnehmer_id`)
	REFERENCES `teilnehmer`(`id`, `id`)
GO
ALTER TABLE `meeting_teilnehmer`
	ADD CONSTRAINT `meeting_id`
	FOREIGN KEY(`meeting_id`, `teilnehmer_id`)
	REFERENCES `meetings`(`id`, `id`)

Du erstellst also erst das Meeting und lässt Dir die Meeting-ID zurückgeben. Damit und mit den einzelnen Teilnehmer-IDs befüllst Du dann die Join-Table 'meeting_teilnehmer':

$meetingId = 4711; // Beispiel
foreach ($teilnehmerArray as $teilnehmer => $teilnehmerId) {
  $query = "INSERT INTO meeting_teilnehmer (meeting_id, teilnehmer_id)
				 VALUES ($meetingId, $teilnehmerId)";
  // Query ausführen, Fehler abfangen usw ...
}

Wenn Du dann die Teilnehmer eines Meetings zu einer bestimmten Meeting-ID ausgeben willst, benutzt du folgende Query:

$query = "
SELECT tn.vorname, tn.nachname
FROM teilnehmer tn
LEFT JOIN meeting_teilnehmer mtn ON mtn.teilnehmer_id = tn.id
LEFT JOIN meeting m ON m.id = mtn.meeting_id
WHERE m.id = $meetingId";

4. versuchs mal bei "$writedb =" mit sprintf, da kannst du auch solche Ersetzungen wie %s machen, aber in nem normalen String geht das nicht :banga:

Dieser Beitrag wurde von P. Stylez bearbeitet: 29. Aug. 2007 - 14:50 Uhr

  • 0

#68
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
das muss ich ersma verarbeiten, overkill! :banga:
  • 0

#69
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
Relationale Datenbanken können einem das Hirn verknoten, aber wenn man einmal durchsteigt, isses echt logisch :banga:
  • 0

#70
eMrOx

eMrOx

    USB-Ultimate: Hat USB-Tattoo...

  • Obermotz
  • 3.236 Beiträge
  • Vorname: Stefan
  • Geschlecht:M

Relationale Datenbanken können einem das Hirn verknoten, aber wenn man einmal durchsteigt, isses echt logisch /public/style_emoticons/default/d.gif...


Dem kann ich 100%ig zustimmen.
  • 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

#71
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
irgentwie is mir jetz die lust vergangen, hasse doll jemacht! :banga:
  • 0

#72
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12.871 Beiträge
  • Geschlecht:M

Relationale Datenbanken können einem das Hirn verknoten, aber wenn man einmal durchsteigt, isses echt logisch /public/style_emoticons/default/d.gif...


nimm halt ne objektorientierte :P
find ich viel einfacher...
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#73
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M

Relationale Datenbanken können einem das Hirn verknoten, aber wenn man einmal durchsteigt, isses echt logisch /public/style_emoticons/default/d.gif...


nimm halt ne objektorientierte /public/style_emoticons/default/d.gif...
find ich viel einfacher...

Nö :P

1. bin ich mittlerweile durchgestiegen und 2. wollen unsere Kunden halt größtenteils MySQL + PHP... da muss man halt durch, auch wenn mans nicht mag ^^
  • 0

#74
Bine

Bine

    USB-Prellbock

  • Mitglied
  • 4.628 Beiträge
  • Geschlecht:W

Nee!!!!

Fang mit Ruby an /public/style_emoticons/default/d.gif...

Wenn du dann Probleme hast, können wir uns gemeinsam durchkämpfen, weil ich vor ein paar Wochen auch damit angefangen hab ^^

Ruby ist ziemlich geil... gerade für einen, der so wie du viel auf Systemebene hantiert.



kriegst du provision oder was? :P


Lerngruppe :banga:

btw: weitermachen! *gespannt mitles*

Dieser Beitrag wurde von Bine bearbeitet: 30. Aug. 2007 - 09:38 Uhr

  • 0

Multidimensionale Ordnung wirkt nur auf den einfach gestrickten Betrachter wie Chaos, da er die Ordnung nicht erfassen kann.


#75
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
Yeah, Lerndruppe!

Keine Sorge, ist von rein egoistischer Natur :P Ruby hat auf jeden Fall Zukunft, auch wenn's hier in Deutschland noch nicht soooooooo bekannt ist. Aber in Sachen Simplizität könnte es eines Tages mit Ruby On Rails sogar mal PHP ablösen. Und wenn der Tag kommt, will ich dastehen und die Hand aufhalten :banga:
  • 0

#76
Bine

Bine

    USB-Prellbock

  • Mitglied
  • 4.628 Beiträge
  • Geschlecht:W
yoar, macht sich bestimmt gut im lebenslauf :banga:
  • 0

Multidimensionale Ordnung wirkt nur auf den einfach gestrickten Betrachter wie Chaos, da er die Ordnung nicht erfassen kann.


#77
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
also leute, ich hab jetzt mal die beiden kapitel hier und hier angefangen durchzulesen, aber ich muss ehrlich zugeben, das is too much, mir schwirrt der kopf! :P

Zumindest werden die daten durch sprintf nun korrekt in der tabelle eingetragen, beim teilnehmer-array wird nur der erste eintrag gespeichert, zu lösen wäre das ja durch die von p.stylez eingebrachte lösung, aaaber... *schwirr* :banga:

foreach ($_POST['thema'] as $key => $thema) {
  $writedb = sprintf("INSERT INTO data (thema, aktion, bearbeitung, termin, startzeit, endzeit, teilnehmer, author, erstellung) VALUES ('%s', '%s', '%s', '%s', '$_POST[startzeit]
', '$_POST[endzeit]', '%s', '$author', curdate())",
		$thema,
		$_POST['aktion'][$key],
		$_POST['bearbeitung'][$key],
		$_POST['termin'][$key],
		$_POST['teilnehmer'][$key]
);

  mysql_query($writedb);

immernoch schmutzig ich weiss, aber das interessiert mich gerade nicht da ich das heute im team-meeting schonmal kurz vorstellen möchte,
hat einer (auch nen extrem schmutzigen) hack für mein problem mit dem teilnehmer array?

ich gelobe auch besserung und werde mich auf jeden mit relationellen db's beschäftigen :P
  • 0

#78
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12.871 Beiträge
  • Geschlecht:M
ich hab mit palles m:n beziehung kein problem, weil ichs auch so gelernt hab :banga:

du willst jetzt aus dem array teilnehmer sagen wir 5 namen in einem tupel der datenbank speichern?!

foreach ($_POST['thema'] as $key => $thema) {
  $teilnehmer = "";
  $foreach($_POST['teilnehmer'] as $key2)
  { $teilnehmer += "$key2, "; }

  $writedb = sprintf("INSERT INTO data (thema, aktion, bearbeitung, termin, startzeit, endzeit, teilnehmer, author, erstellung) VALUES ('%s', '%s', '%s', '%s', '$_POST[startzeit]
', '$_POST[endzeit]', '%s', '$author', curdate())",
		$thema,
		$_POST['aktion'][$key],
		$_POST['bearbeitung'][$key],
		$_POST['termin'][$key],
		$teilnehmer
);

  mysql_query($writedb);

ist jetzt nur so ne schnelllösung.
musste evtl nur nach der foreach-schleif von $teilnehmer rechts das ", " entfernen.

ist aber echt schlechter stil was du da machst :P

Dieser Beitrag wurde von Synthor bearbeitet: 30. Aug. 2007 - 12:05 Uhr

  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#79
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
halt stop zurück, ich probiers gerad mit der relationellen, nur kleiner blackout hier:


ich brauche die id des gerade hinzugefügten eintrags, wie lass ich sie mir am besten zurückgeben?

Du erstellst also erst das Meeting und lässt Dir die Meeting-ID zurückgeben. Damit und mit den einzelnen Teilnehmer-IDs befüllst Du dann die Join-Table 'meeting_teilnehmer':


mahlzeit! :banga:
  • 0

#80
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12.871 Beiträge
  • Geschlecht:M
hast du nen auto-increment werd als id genommen?

falls ja kannste einfach "select max(id) from meetings" ausführen und bekommst die höchste id zurück :banga:

palle weißt du ob mysql mitlerweile auch subselects versteht?

da könnte man sich direkt noch ein bissl tipparbeit sparen indem du beim insert per select die id holst :P
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#81
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
Wenn du sowas meinst:

SELECT foo
FROM (
   SELECT bar
   FROM ...
) myfoo
...

Sowas geht auf jeden Fall :banga:
Aber Sub-Selects sind teuer... sollte man, wenn möglich, mit irgendwelchen Joins umgehen.
  • 0

#82
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12.871 Beiträge
  • Geschlecht:M
genau...sub-/unterselects halt :P
hab ich mit oracle gelernt, da ging das. glaub mein dozent meinte bei mysql geht das nich?! :banga:

was heißt teuer?
aufgrund der performance?

müsste man testen was schneller ist.
einen select für die id und ein insert oder eben ein insert mit subselect...
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#83
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
Ja genau Performance bzw. Datenbanklast.

Kommt aber immer drauf an in welcher Größenordnung du operiertst... bei kleinen Tabellen mit wenigen Einträgen isses egal.


Ganz nützlich ist ein EXPLAIN vor die Query, das zeigt dir dann an wie aufwändig deine Operationen sind.

http://dev.mysql.com...en/explain.html
  • 0

#84
eMrOx

eMrOx

    USB-Ultimate: Hat USB-Tattoo...

  • Obermotz
  • 3.236 Beiträge
  • Vorname: Stefan
  • Geschlecht:M
bei mysql wuerde ich joins subselects vorziehen. kommt natuerlich auf den zweck an - nicht alles laesst sich per joins realisieren.
mysql beherrscht seit der version 4 subselects.
  • 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

#85
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12.871 Beiträge
  • Geschlecht:M
ah, alles klar danke.

da mindfuck eh nur eine kleine db hat werden ein paar subselects sie schon nicht umbringen. :banga:
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#86
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
aber ich mich wenns so weiter geht :banga:
  • 0

#87
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
Was gibts denn jetzt noch für Probleme?
  • 0

#88
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
eigentlich keine, hab magenschmerzen und wollt nur so mal rummeckern :banga: :P
  • 0

#89
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
Aber nicht wegen uuuuuuuns Programmierschlampen, oder? :banga:
  • 0

#90
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
nay nay, alles top... weitermachen! :banga:
  • 0




0 Besucher lesen dieses Thema

Mitglieder: 0, Gäste: 0, unsichtbare Mitglieder: 0