[PHP & MySQL] Abfrage funktioniert nur hin und wieder

Leila
Ich wusste nicht genau, wie ich es formulieren sollte...

Seit kurzem lasse ich auf RGE die Nachkomen der Pferde anders ausgeben. Vorher habe ich nur den Namen des Elterntier in der DB-Tabelle eingetragen gehabt, die Kürzel weggelassen.
Ich habe die Datensätze in der DB nun geändert und die Kürzel davor und/oder dahinter gehängt. Habe die Abfrage entsprechend geändert, jetzt funktioniert es nurnoch bei einigen Pferden.
Wenn es jetzt nur funktionieren würde bei Pferden mit nur Kürzel davor oder nur Kürzel dahinter oder nur Perde mit beiden Kürzeln, wüsste ich, wonach ich suchen muss.

Ich such mal nur die Signifikaten Stellen raus:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
<?php
include('/users/rge/www/rge/einbinden/head.php');
include('/users/rge/www/rge/einbinden/db.php');

$id "$_GET[id]";

$bla mysql_query("SELECT name,praefix,postfix,geschlecht FROM pferd WHERE id = '$id'");
if (@mysql_num_rows($bla) == 0) {
echo "Dieses Pferd existiert nicht!";
}
//[...]

else {
$Data mysql_fetch_array($bla);
$nameganz $Data[name];
if ($Data[praefix] != "") {$nameganz "$Data[praefix] $Data[name]";}
if ($Data[postfix] != "") {$nameganz "$nameganz $Data[postfix]";}

if ($Data[geschlecht] == 'Hengst')
 {
 $result1 mysql_query("SELECT * FROM nachkommen WHERE sex = 'Hengst' AND vater = '$nameganz' ORDER BY id");
 }
else
 {
 $result1 mysql_query("SELECT * FROM nachkommen WHERE sex = 'Hengst' AND mutter = '$nameganz' ORDER BY id");
 }

while ($row mysql_fetch_assoc($result3))
 {
//[...]
 }

//[...]

 }
mysql_close();
?>


Hab mir die Variable $nameganz schonmal zusätzlich ausgeben lassen, funktioniert immer und die Einträge in der DB sind auch fehlerfrei.
Habe festgestellt, dass es grundsätzlich funktioniert, wenn es nur davor ein Kürzel gibt oder garkeins.
Allerdings gibt es dann Abfragen mit beiden Kürzeln oder nur hinten einem, bei denen es funktioniert und welche, bei denen es dann nicht funktioniert...

Vllt findet ja wer nen Fehler...

Zur Not kann ich auch Beispiele geben.
Oli
Hi,

wo kommt $result3 her?
php:
1:
while ($row mysql_fetch_assoc($result3))

Die vorherigen Querys wurden mit $result1 durchgeführt:
php:
1:
$result1 mysql_query("SELECT * FROM nachkommen WHERE sex = 'Hengst' AND vater = '$nameganz' ORDER BY id");



LG,
Oli
Leila
ich hab im Laufe der Datei 3 Abfragen im Stil von result 1, habs nicht komplett aus der Datei entnehmen wollen, hatte auf die Zahl nicht geachtet. Wie gesagt, die Abfrage klappt im Grunde, aber eben nicht immer... Irgendwas, was mit $nameganz zu tun hat, den hab ich mir auch schon einzeln ausgeben lassen, da war nei ein Fehler drin

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
if ($Data[geschlecht] == 'Hengst')
 {
 $result1 mysql_query("SELECT * FROM nachkommen WHERE sex = 'Hengst' AND vater = '$nameganz' ORDER BY id");
 }
else
 {
 $result1 mysql_query("SELECT * FROM nachkommen WHERE sex = 'Hengst' AND mutter = '$nameganz' ORDER BY id");
 }

while ($row mysql_fetch_assoc($result1))
 {
//[...]
 }

//[...]

if ($Data[geschlecht] == 'Hengst')
 {
 $result2 mysql_query("SELECT * FROM nachkommen WHERE sex = 'Hengst' AND vater = '$nameganz' ORDER BY id");
 }
else
 {
 $result2 mysql_query("SELECT * FROM nachkommen WHERE sex = 'Hengst' AND mutter = '$nameganz' ORDER BY id");
 }

while ($row mysql_fetch_assoc($result2))
 {
//[...]
 }

//[...]

if ($Data[geschlecht] == 'Hengst')
 {
 $result3 mysql_query("SELECT * FROM nachkommen WHERE sex = 'Hengst' AND vater = '$nameganz' ORDER BY id");
 }
else
 {
 $result3 mysql_query("SELECT * FROM nachkommen WHERE sex = 'Hengst' AND mutter = '$nameganz' ORDER BY id");
 }

while ($row mysql_fetch_assoc($result3))
 {
//[...]
 }

//[...]
Julia712
Ich würde die Zuweisung anders machen. Ob das hilft, kann ich dir aber auch nicht sagen Zunge raus

php:
1:
$nameganz $Data[praefix]." ".$Data[name];



Oder kann es sein, dass du bei manchen Pferden beim Prä- oder Postfix ein Leerzeichen irgendwo zu viel hast, sodass du dann ein doppeltes Leerzeichen bekommst?


Lg
Julia
Leila
Nein, Leerzeichen zu viel oder zu wenig nicht. Hab die Datei bissel bearbeitet und mir $nameganz ausgeben lassen, wird richtig ausgegeben...

EDIT: habs mal in ." ". geändert und über trim() die möglicherweise überflüssigen Leerzeichen abgenommen, nix
Leila
keiner ne Idee?
kext
Ist das Absicht, dass es mal „sex“ und mal „Geschlecht“ heißt? Du solltest da vielleicht konsequent bleiben.
Leila
"geschlecht" heißts in der Tabelle "pferd" und "sex" heißts in der Tabelle "nachkommen"

ich find man gerät weniger durcheinander, wenn man es in verscheidenen Tabellen unterschiedlich benennt