Forum Doku Wiki Blog

Forumsarchiv 2006, Oktober
MySQL gibt nicht den ersten Eintrag zurück

archivierte Beiträge lesen

  1. (DATENBANK) MySQL gibt nicht den ersten Eintrag zurück von matthias, 30. 10. 2006, 10:50

MySQL gibt nicht den ersten Eintrag zurück

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

MySQL gibt nicht den ersten Eintrag zurück

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

MySQL gibt nicht den ersten Eintrag zurück

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

Standard!

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