Der folgende Beitrag wurde am 30. 10. 2006, 10:50 Uhr von matthias veröffentlicht.
Hallo Leute,
ich kapiers einfach nicht - und wahrscheinlich ist es ganz einfach...
Ich versuche via while Datensätze aus der Datenbank zu lesen. Wunderbar - nur lässt er den ersten Datensatz aus.
$ptypes=array("standartpersonal", "fremdpersonal", "zusatzpersonal");
$p=array();
for($i=0; $i<count($ptypes); $i++) {
$mysql_query="SELECT * FROM produktionpersonal WHERE id_produktion = ".$_SESSION["m"]["produktion"]["id_produktion"]." AND typ = '".$ptypes[$i]."'";
$mysql_ressource = mysql_query($mysql_query) or die(mysql_error());
$data_result = mysql_fetch_array($mysql_ressource, MYSQL_ASSOC);
if($data_result["id_produktionpersonal"]) {
$p[$ptypes[$i]]=array();
$data=array();
while ($data_result = mysql_fetch_array($mysql_ressource, MYSQL_ASSOC)) {
$data=array();
$data["ppid"]=$data_result["id_preisgruppepersonal"];
$data["name_text"]=getFieldById("personal",
$data_result["id_personal"], "vorname")." ".getFieldById("personal", $data_result["id_personal"], "name");
$data["name_id"]=$data_result["id_personal"];
$data["preis"]=$data_result["preis"];
echo implode($data)."<br>";
array_push($p[$ptypes[$i]], $data);
} // while
}//if
} // for i
Die Datenbank sieht so aus:
--
-- Tabellenstruktur für Tabelle `produktionpersonal`
--
CREATE TABLE `produktionpersonal` (
`id_produktionpersonal` int(11) NOT NULL auto_increment,
`timestamp` int(11) NOT NULL,
`id_personal` int(11) NOT NULL,
`id_preisgruppepersonal` int(11) NOT NULL,
`id_produktion` int(11) NOT NULL,
`typ` text collate latin1_general_ci NOT NULL,
`preis` text collate latin1_general_ci NOT NULL,
`id_editor` int(11) NOT NULL,
PRIMARY KEY (`id_produktionpersonal`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=6 ;
--
-- Daten für Tabelle `produktionpersonal`
--
INSERT INTO `produktionpersonal` VALUES (1, 1162200563, 6, 1, 487, 'standartpersonal', '1.250,00', 0);
INSERT INTO `produktionpersonal` VALUES (2, 1162200563, 5, 2, 487, 'standartpersonal', '300,18', 0);
INSERT INTO `produktionpersonal` VALUES (3, 1162200563, 4, 7, 487, 'standartpersonal', '300,00', 0);
INSERT INTO `produktionpersonal` VALUES (4, 1162200563, 2, 5, 487, 'standartpersonal', '1.100,37', 0);
INSERT INTO `produktionpersonal` VALUES (5, 1162200563, 9, 5, 487, 'standartpersonal', '1.100,37', 0);
Tjoa. Ich bin restlos überfragt. Bzw. erhalte ich nach dieser Abfrage einfach nicht den ersten Datensatz.
Wer weiß weiter?
Matthias
Der folgende Beitrag wurde am 30. 10. 2006, 10:57 Uhr von wahsaga veröffentlicht.
hi,
> Ich versuche via while Datensätze aus der Datenbank zu lesen. Wunderbar - nur lässt er den ersten Datensatz aus.
Nein.
Aber _du_ liest den ersten Datensatz bereits vor deiner Schleife aus - und verwirfst seinen Inhalt dann.
> $data_result = mysql_fetch_array($mysql_ressource, MYSQL_ASSOC);
Das machst du vor der Schleife.
> if($data_result["id_produktionpersonal"]) {
Was bezweckst du mit dieser Abfrage?
Falls du wissen möchtest, ob deine Abfrage überhaupt Ergebnisse gebracht hat, nutze mysql_num_rows().
> while ($data_result = mysql_fetch_array($mysql_ressource, MYSQL_ASSOC)) {
Hier liest du den nächsten Datensatz in $data_result ein, überschreibst damit den vorherigen, ohne mit dessen Inhalt irgendetwas sinnvolles angefangen zu haben.
gruß,
wahsaga
--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }
Der folgende Beitrag wurde am 30. 10. 2006, 11:02 Uhr von Matthias veröffentlicht.
> > $data_result = mysql_fetch_array($mysql_ressource, MYSQL_ASSOC);
>
> Das machst du vor der Schleife.
ja - weil ich wissen möchte, ob es sich überhaupt lohnt loszulegen. dazu frage ich einfach ob, überhaupt ein datensatz vorhanden ist.
>
> > if($data_result["id_produktionpersonal"]) {
>
> Was bezweckst du mit dieser Abfrage?
s.o.
dennoch gracias. na klar! ich habe jetzt eben jetzt diese abfrage:
$numrows=mysql_num_rows($mysql_ressource);
if($numrows>0) {...
gracias
Matthias
Der folgende Beitrag wurde am 30. 10. 2006, 11:06 Uhr von Struppi veröffentlicht.
Ich bin was Rechtschreibung angeht nicht pingelig, aber:
Es heißt Standard, es gibt zwar eine Standarte aber ob du mit dem Begriff 'standartpersonal', Fahnenträger meinst bezweifle ich doch.
Struppi.
--
Javascript ist toll (Perl auch!)
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4