Zum Inhalt wechseln



- USB-Partner (Interessiert?) -
Foto

[PHP] Array abarbeiten


  • Please log in to reply
130 replies to this topic

#91
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12.871 Beiträge
  • Geschlecht:M
:banga:
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#92
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
ehrm... wenn ich keine fehlermeldung bekomme, aber effektiv nix in die db geschrieben wird ist das sql statement falsch oder?

foreach ($_POST['thema'] as $key => $thema) {
		$writedb = sprintf("INSERT INTO meetings (thema, aktion, bearbeitung, termin, startzeit, endzeit, author, erstellung) VALUES ('%s', '%s', '%s', '%s', '$_POST[startzeit]',
 '$_POST[endzeit]', '$author', curdate())",
				$thema,
				$_POST['aktion'][$key],
				$_POST['bearbeitung'][$key],
				$_POST['termin'][$key]
);
$meetingId = ("SELECT max(id) FROM meetings");
foreach ($_POST['teilnehmer'] as $teilnehmer => $teilnehmerId) {
		$addteilnehmer = ("INSERT INTO meeting_teilnehmer (meeting_id, teilnehmer_id) VALUES ($meetingId, $teilnehmerId)");
		mysql_query($addteilnehmer);
}
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]);
}

  • 0

#93
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
$meetingId = ("SELECT max(id) FROM meetings");

glaub, da hast du was vergessen :P
So machts mehr Sinn:

mysql_query("SELECT max(id) FROM meetings");
$meetingId = ... // Ergebnis fetchen

Aber eigentlich solltest du nen Fehler bekommen, denn immerhin versuchst du hier

$addteilnehmer = ("INSERT INTO meeting_teilnehmer (meeting_id, teilnehmer_id) VALUES ($meetingId, $teilnehmerId)");
mysql_query($addteilnehmer);

einen String in eine INT-Spalte zu schreiben.
Sicher, dass mysql_error() nix sagt?


[korinthenkack]

Im übrigen find ich's recht gewöhnungsbedürftig, wie du die Query-Variablen benennst.
Ich würde sie konsistenterweise als $query nennen und nicht einmal $writedb und ein anderes Mal $addteilnehmer

Denglisch ist sowieso scheisse beim Entwickeln... Entweder komplett in Englisch oder komplett in Deutsch :banga:

[/korinthenkack]

Dieser Beitrag wurde von P. Stylez bearbeitet: 31. Aug. 2007 - 10:08 Uhr

  • 0

#94
Synthor

Synthor

    Sub.FM addicted

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

$meetingId = ("SELECT max(id) FROM meetings");

$addteilnehmer = ("INSERT INTO meeting_teilnehmer (meeting_id, teilnehmer_id) VALUES ($meetingId, $teilnehmerId)");

sowas funktioniert? :P
ich mache immer $xyz = "select * from blablubb";
wundert mich das php nich wegen der klammern vor und nach den anführungszeichen meckert...

[korinthenkack]

Im übrigen find ich's recht gewöhnungsbedürftig, wie du die Query-Variablen benennst.
Ich würde sie konsistenterweise als $query nennen und nicht einmal $writedb und ein anderes Mal $addteilnehmer

Denglisch ist sowieso scheisse beim Entwickeln... Entweder komplett in Englisch oder komplett in Deutsch /public/style_emoticons/default/p.gif...

[/korinthenkack]


stimmt schon, aber wenn du es ganz auf deutsch machen willst kannste dir ne eigene sprache mit deutscher syntax entwickeln :banga:

Dieser Beitrag wurde von Synthor bearbeitet: 02. Sep. 2007 - 16:32 Uhr

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

#95
eMrOx

eMrOx

    USB-Ultimate: Hat USB-Tattoo...

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

sowas funktioniert? /public/style_emoticons/default/o.gif...
ich mache immer $xyz = "select * from blablubb";


Die Klammerung ist optional, hat (in diesem Fall) keine wirkliche Auswirkung.
SELECT * ist unperformant und sollte nicht benutzt werden. Lieber alle Spalten, die man fuer diese Selektion benoetigt einzeln angeben. Spart Resourcen, geht schneller und man hat mehr Ueberblick.
  • 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

#96
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
och mennoooooo *quängel*

was passt denn jetz wieder nich?

foreach ($_POST['thema'] as $key => $thema) {
		$writedb = sprintf("INSERT INTO meetings (thema, aktion, bearbeitung, termin, startzeit, endzeit, author, erstellung) VALUES ('%s', '%s', '%s', '%s', '$_POST[startzeit]',
 '$_POST[endzeit]', '$author', curdate())",
				$thema,
				$_POST['aktion'][$key],
				$_POST['bearbeitung'][$key],
				$_POST['termin'][$key]
);
mysql_query($writedb);
$meetingId = mysql_query("SELECT max(id) FROM meetings");
foreach ($_POST['teilnehmer'] as $teilnehmer => $teilnehmerId) {
		$addteilnehmer = ("INSERT INTO meeting_teilnehmer (meeting_id, teilnehmer_id) VALUES ($meetingId, $teilnehmerId)");
		mysql_query($addteilnehmer);
}
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]);
}

keine errors, aber auch keine einträge zum teilnehmer, db sieht in etwa so aus:

create database teammeeting;
use teammeeting;
create table meetings
(
ID INT AUTO_INCREMENT PRIMARY KEY,
`author` VARCHAR(64),
`startzeit` VARCHAR(64),
`endzeit` VARCHAR(64),
`thema` TEXT,
`aktion` VARCHAR(1),
`bearbeitung` VARCHAR(64),
`termin` VARCHAR(64),
`erstellung` VARCHAR(10)
);

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
);

ALTER TABLE `meeting_teilnehmer`
ADD CONSTRAINT `recipient_id`
FOREIGN KEY(`meeting_id`, `teilnehmer_id`)
REFERENCES `teilnehmer`(`id`, `id`);

ALTER TABLE `meeting_teilnehmer`
ADD CONSTRAINT `meeting_id`
FOREIGN KEY(`meeting_id`, `teilnehmer_id`)
REFERENCES `meetings`(`id`, `id`);


ich würd so langsam gern ma mit der darstellung der berichte anfangen :banga:
  • 0

#97
Synthor

Synthor

    Sub.FM addicted

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

sowas funktioniert? /public/style_emoticons/default/o.gif...
ich mache immer $xyz = "select * from blablubb";


Die Klammerung ist optional, hat (in diesem Fall) keine wirkliche Auswirkung.
SELECT * ist unperformant und sollte nicht benutzt werden. Lieber alle Spalten, die man fuer diese Selektion benoetigt einzeln angeben. Spart Resourcen, geht schneller und man hat mehr Ueberblick.

das mit den klammern wusste ich bisher nich.

es ging nur um die php syntax und nicht um das sql statement. mir ist schon klar das select * nicht besonders gut ist. :P

@flo:

mach doch mal:

mysql_query($addteilnehmer) or die (mysql_error());

so bekommste wenigstens ne fehlermeldung zurück und siehst evtl woran es liegt.
alternativ mal gucken ob deine variablen überhaupt daten enthalten?!
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#98
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
Daten sind drin, hier is der Fehler:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id #3, M.Schroeder)' at line 1


löst das hier vieleicht den fehler aus?

if ("2" == $_POST['Author']) {
		$author = "H. Billion";
} else if ("3" == $_POST['Author']) {
		$author = "T. Koch";
} else if ("4" == $_POST['Author']) {
		$author = "J. Ketabchy";
} else if ("5" == $_POST['Author']) {
		$author = "I. Praum";
} else if ("6" == $_POST['Author']) {
		$author = "M. Schroeder";
} else if ("7" == $_POST['Author']) {
		$author = "F. Luettgens";
} else { echo "Panik!"; }

  • 0

#99
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12.871 Beiträge
  • Geschlecht:M
oh mann, das ist echt kraut und rüben was du da machst :banga:

mach mal den hier:
mysql_query($addteilnehmer) or die (mysql_error() . "<br />" . $writedb);

und poste hier nochmal die komplette fehlermeldung.
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#100
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id #3, M.Schroeder)' at line 1
INSERT INTO meetings (thema, aktion, bearbeitung, termin, startzeit, endzeit, author, erstellung) VALUES ('test', 'A', 'tes1', 'test22', '09:47', '14:30', 'I. Praum', curdate())


hmm
  • 0

#101
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12.871 Beiträge
  • Geschlecht:M
allerdings.
die sql syntax sieht korrekt aus...

aber der meckert ja wegen id#3.
haste mal versucht einfach irgendeinen festen wert da zu übergeben und nich den eigentlichen namen? z.B. 'test' ...
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#102
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
ich glaube du meinstest eher

mysql_query($addteilnehmer) or die (mysql_error() . "<br />" . $addteilnehmer);

$addteilnehmer statt $writedb oder?

da kommt dann

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id #3, M.Schroeder)' at line 1
INSERT INTO meeting_teilnehmer (meeting_id, teilnehmer_id) VALUES (Resource id #3, M.Schroeder)


und ich glaub meeting_id = Ressource id #3 ist falsch wa?
  • 0

#103
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
meeting_id und teilnehmer_id sollten beide eigentlich INT sein.
  • 0

#104
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12.871 Beiträge
  • Geschlecht:M
huch, ja hast recht. mein fehler. :banga:
bin ja eben erst aufgestanden. :P

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
);

du hast in der tabelle "teilnehmer" die namen als text stehen mit einer eindeutigen ID, die du einfach nur in die tabelle "meeting_teilnehmer" einfügst. also wenn du (F. Lüttgens) ID#1 bist kommt in "meeting_teilnehmer" die meeting_id von dem meeting das du gerade einfügen willst und deine 1. genau so verfährst du mit allen anderen teilnehmern.

um jetzt ein meeting hinzuzufügen gehst du so vor:
1. "meeting" hinzufügen
2. die meeting_id abfragen und in "meeting_teilnehmer" mit sämtlichen teilnehmer_ids einfügen (können ja mehrere teilnehmer sein, also immer die selbe id vom meeting mit den verschiedenen ids der teilnehmer. sind dann mehrere tupel (zeilen) in "meeting_teilnehmer"!)
3. das ganze nennt sich verknüpfung um redundanzen zu verhindern.

les dich am besten mal in datenbanken ein, ich denke das ist sehr hilfreich. du wolltest zuerst die leichte variante mit mehr oder weniger gewollten redundanzen machen, aber der palle hat dich jetzt auf die "richtige" redundanzfreie getrimmt. :P

meeting_id und teilnehmer_id sollten beide eigentlich INT sein.


ich glaub er hat den sinn deiner variante nich ganz verstanden...

aber fehlen da nich noch die foreign keys? :P

Dieser Beitrag wurde von Synthor bearbeitet: 03. Sep. 2007 - 11:07 Uhr

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

#105
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
okaaaay....

ich bin kurz davor die teilnehmer ganz wegzulassen :banga:
  • 0

#106
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
Hey, jetzt bist du doch schon fast auf der Zielgeraden :banga:

Um es mal in der Sprache des Admins zu sagen:

Stell dir die meeting_id und die teilnehmer_id als Softlinks auf die Meeting- bzw. die Teilnehmer-Tabelle (besser gesagt auf jeweils einen Datensatz daraus).
  • 0

#107
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12.871 Beiträge
  • Geschlecht:M
echt mal.
da sieht man direkt das du keine programmierschlampe bist. :banga: :P
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#108
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
Der große Admin versagt an einer einfachen Join-Table :banga:

Dabei machen die Schlampen doch schon seit Tagen die Beine für ihn breit *stichel*
  • 0

#109
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
mir fehlt einfach das verständniss, glaube ich hab die datenbank struktur trotzdem noch nich geblickt :banga:

nehmt mich ein letztes mal anne hand :P

aaalso

auf der eingabemaske habe ich mehrere checkboxen die alle in das array teilnehmer speichern:

<br><br><strong>Teilnehmer:</strong><br>
  <input type="checkbox" name="teilnehmer[]" value="2"> H.Billion\t
  <input type="checkbox" name="teilnehmer[]" value="3"> T.Koch\t
  <input type="checkbox" name="teilnehmer[]" value="4"> J.Ketabchy\t
  <input type="checkbox" name="teilnehmer[]" value="7"> I.Praum\t
  <input type="checkbox" name="teilnehmer[]" value="5"> M.Schroeder\t
  <input type="checkbox" name="teilnehmer[]" value="6"> U.Bergefeld\t
  <input type="checkbox" name="teilnehmer[]" value="1"> F.Luettgens\t

in der datenbank habe ich in den table teilnehmer folgende datensätze hinzugefügt:

mysql> select * from teilnehmer;										   
+----+---------+-----------+
| id | vorname | nachname  |
+----+---------+-----------+
|  1 | Florian | Luettgens |
|  2 | Horst   | Billion   |
|  3 | Thomas  | Koch	  |
|  4 | Jahan   | Ketabchy  |
|  5 | Michael | Schroeder |
|  6 | Uwe	 | Bergefeld |
|  7 | Ingo	| Praum	 |
+----+---------+-----------+
7 rows in set (0.00 sec)

auf der post-page habe ich

$meetingId = mysql_query("SELECT max(id) FROM meetings");
foreach ($_POST['teilnehmer'] as $teilnehmer => $teilnehmerId) {
		$addteilnehmer = ("INSERT INTO meeting_teilnehmer (meeting_id, teilnehmer_id) VALUES ($meetingId, $teilnehmerId)");
		mysql_query($addteilnehmer) or die (mysql_error() . "<br />" . $addteilnehmer);
}

fehlermeldung:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id #3, 4)' at line 1
INSERT INTO meeting_teilnehmer (meeting_id, teilnehmer_id) VALUES (Resource id #3, 4)



könnt ihr mir bitte explizit sagen was ich falsch mache? und thorsten was meinst du mit "aber fehlen da nich noch die foreign keys? :P"

bin mal gespannt ob das auswerten nachher genauso ein trip wird ^^

Der große Admin versagt an einer einfachen Join-Table /public/style_emoticons/default/p.gif...

Dabei machen die Schlampen doch schon seit Tagen die Beine für ihn breit *stichel*


lol, jaja stichelt nur rum, is halt nich mein fachgebiet, und ich erheb ja auch garkeinen anspruch drauf die weisheit mit löffeln gefressen zu haben :P

wenn ich das alles schon könnt würd mein gehalt sicher noch 1-2 stufen besser ausfallen ^^
  • 0

#110
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

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

REDUNDANZEN VERMEIDEN !!!


Wofür machst du ne Teilnehmer-Tabelle, wenn du die Namen eh als HTML hardcodest - pfui! aus! :banga:

Hol dir die schön aus der Tabelle:

// Eintraege holen ...

$query = "SELECT id, vorname, nachname FROM teilnemer";
$res = mysql_query($query)
if (!$res) {
   // Fehlerbehandlung
} else {
   $teilnehmerArray = array();
   while($row = mysql_fetch_assoc()) {
	  $teilnehmerArray[] = $row;
   }
}

// Anzeige

<strong>Teilnehmer:</strong>
<?php foreach($teilnehmerArray as $teilnehmer) : ?>
   <br><input type="checkbox" name="teilnehmer[]" value="<?= $teilnehmer['id'] ?>"> <?= $teilnehmer['nachname'] ?>
<?php endforeach ?>

Wenn du jetzt was an der Tabelle änderst, Teilnehmer hinzufügst oder entfernst, dann bleibt auch deine Anzeige up-to-date :P

und zweitens:

$meetingId = mysql_query("SELECT max(id) FROM meetings");
foreach ($_POST['teilnehmer'] as $teilnehmer => $teilnehmerId) {
		$addteilnehmer = ("INSERT INTO meeting_teilnehmer (meeting_id, teilnehmer_id) VALUES ($meetingId, $teilnehmerId)");
		mysql_query($addteilnehmer) or die (mysql_error() . "<br />" . $addteilnehmer);
}

das geht so net...

die foreach-Syntax ist:

foreach(<array> as <key> => <value>) ...

versuch's mal so:

$meetingId = mysql_query("SELECT max(id) FROM meetings");
foreach ($_POST['teilnehmer'] as $teilnehmerId => $teilnehmer) {
		$addteilnehmer = ("INSERT INTO meeting_teilnehmer (meeting_id, teilnehmer_id) VALUES ($meetingId, $teilnehmerId)");
		mysql_query($addteilnehmer) or die (mysql_error() . "<br />" . $addteilnehmer);
}

Dieser Beitrag wurde von P. Stylez bearbeitet: 03. Sep. 2007 - 12:15 Uhr

  • 0

#111
Synthor

Synthor

    Sub.FM addicted

  • USB-Security
  • 12.871 Beiträge
  • Geschlecht:M
will dich ja jetzt nich überfordern...

aber ein primary key ist ja zur eindeutigen identifikation da. z.B. in teilnehmer wäre das 1 | Florian | Luettgens oder jede andere zeile darin. es darf jede zahl nur einmal vorkommen, denn wenn es z.B. jetzt noch 666 | Florian | Luettgens geben würde wäre die datenbank redundant, also fehlerbehaftet und nicht der realität entsprechend (zitat meines datenbankdozenten :banga:), weil es eben nur einen Florian Luettgens geben kann. :P

der foreign key dient eigentlich nur dazu das keine redundanzen auftreten.

ein beispiel:
in einem meeting gibt es eine teilnehmer_id, die es gar nicht in der tabelle teilnehmer gibt.
sowas kommt leicht zustande wenn der teilnehmer gelöscht wurde, seine id aber noch in der meeting irgendwo auftaucht. damit sowas beim delete, insert oder update entdeckt wird gibt es die foreign keys. die sorgen dafür das die beziehungen zwischen den tabellen (s.o.) mit hilfe der referenziellen integrität des dbms (databasemanagementsystem) gültig sind.

ich hoffe das konnte dir jetzt irgendwie helfen. :P
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#112
Guest_Valhalla_*

Guest_Valhalla_*
  • Guests

zitat meines datenbankdozenten

OT:
Wen hatteste? Hatte Krieps oder Krebs ... ka schon was länger her!
Aber fähiger Mann!
  • 0

#113
Synthor

Synthor

    Sub.FM addicted

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

zitat meines datenbankdozenten

OT:
Wen hatteste? Hatte Krieps oder Krebs ... ka schon was länger her!
Aber fähiger Mann!

jaaaa den kriebs :P
kann man das nachvollziehen? :banga: :P :P

du kennst ihn sogar...unglaublich :P
  • 0
Download your energy, upload your mind!
 
$P_UMFALLWAGEN=1003;

#114
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
hm, weiter gehts:

fehler:

Warning: Wrong parameter count for mysql_fetch_assoc() in /usr/local/apache2/htdocs/meeting.php on line 142

http://de.php.net/mysql_fetch_assoc hat mir da gerad auch nich weiter geholfen :banga:

code:

$query = "SELECT id, vorname, nachname FROM teilnehmer";
$res = mysql_query($query);
if (!$res) {
   echo ("Panik");
} else {
   $teilnehmerArray = array();
   while($row = mysql_fetch_assoc()) {
	  $teilnehmerArray[] = $row;
   }
}

echo ("<br><br><strong>Teilnehmer:</strong>");
foreach($teilnehmerArray as $teilnehmer) {
echo("<br><input type=\"checkbox\" name=\"teilnehmer[]\" value=\"$teilnehmer[id]\">$teilnehmer[nachname]");
}

zeile 142:

while($row = mysql_fetch_assoc()) {
	  $teilnehmerArray[] = $row;
   }

naja wie gesagt, hab gerad ma die php.net site angesehn, aber so von der syntax her seh ich keinen fehler, bitte um aufklärung (oder.. erlösung ^^)
  • 0

#115
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

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

muss heissen:

while($row = mysql_fetch_assoc($res)) {

(Zu meiner Verteidigung: wir verwenden dazu ne eigene Datenbank-Klasse, welche die einzelnen Aufrufe kapselt. Bin also nicht so vertraut mit den "rohen" MySQL-Befehlen von PHP)
  • 0

#116
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M
ahh okay, dann kommt da doch was rein, hatte mich ein bischen gewundert aber dacht mir, wenns vom palle kommt wirds schon stimmen :banga: :P :P

er zieht nun korrekterweise die teilnehmer aus der db und gibt die checkboxen aus, so weit so gut, nun beim absenden kommt fogender fehler:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id #3, 0)' at line 1
INSERT INTO meeting_teilnehmer (meeting_id, teilnehmer_id) VALUES (Resource id #3, 0)


ich verstehe die aber nicht wirklich, meckert es jetzt weil die teilnehmer_id == 0 ist?

code:
$meetingId = mysql_query("SELECT max(id) FROM meetings");
foreach ($_POST['teilnehmer'] as $teilnehmerId => $teilnehmer) {
		$addteilnehmer = ("INSERT INTO meeting_teilnehmer (meeting_id, teilnehmer_id) VALUES ($meetingId, $teilnehmerId)");
		mysql_query($addteilnehmer) or die (mysql_error() . "<br />" . $addteilnehmer);
}

  • 0

#117
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
Aaaaaah... du das mit $meetingId geht so net.

mysql_query liefert so ne Datenbank-Ressource zurück, von der du dann das eigentliche Ergebnis fetchen kannst.

Try this:

$res = mysql_query("SELECT max(id) AS id FROM meetings");
$row = mysql_fetch_assoc($res);
$meetingId = $row['id'];

  • 0

#118
eMrOx

eMrOx

    USB-Ultimate: Hat USB-Tattoo...

  • Obermotz
  • 3.236 Beiträge
  • Vorname: Stefan
  • Geschlecht:M
Du versuchst auf die "Selektions-Ressource" zuzugreifen (mysql_query)
hier msust du erst ein Ergebnis holen

$meetingId = mysql_result(mysql_query("SELECT max(id) FROM meetings"), 0);
foreach ($_POST['teilnehmer'] as $teilnehmerId => $teilnehmer) {
		$addteilnehmer = ("INSERT INTO meeting_teilnehmer (meeting_id, teilnehmer_id) VALUES ($meetingId, $teilnehmerId)");
		mysql_query($addteilnehmer) or die (mysql_error() . "<br />" . $addteilnehmer);
}

Steht aber eigentlich alles im PHP Manual
  • 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

#119
m1ndfuck

m1ndfuck

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 6.560 Beiträge
  • Geschlecht:M

Steht aber eigentlich alles im PHP Manual


geb ich dir vollkommen recht, aber, da steht leider noch ne ganze menge mehr mit der ich rein garnichts anfangen kann

ich wollte doch nur ein kleines script um das meetings-protokoll zu vereinfachen, das da so ein rattenschwanz draus gewachsen iss konnte ich nich vorhersehn, das eure lösungen mich überfordern, war jedoch vorhersehbar :P


Et funzt!

palle nimm dich in acht, beim nächsten wiedersehn hagelt es jägertee & sportzigaretten :banga: :P
  • 0

#120
P. Stylez

P. Stylez

    USB-Ultimate: Hat USB-Tattoo...

  • Mitglied
  • 9.944 Beiträge
  • Vorname: Palle™
  • Geschlecht:M
Verdammt, da müsste ich ja vorher anfangen zu kiffen :banga:

Ich nehm den Jägertee und der Synthor übernimmt den anderen Part. Isn Deal, oder?
  • 0




0 Besucher lesen dieses Thema

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