Gegen Bilderklau - Das Original (https://www.gegen-bilderklau.net/index.php)
- Design, Website, Copyright (https://www.gegen-bilderklau.net/board.php?boardid=80)
--- Homepagehilfe (https://www.gegen-bilderklau.net/board.php?boardid=27)
---- Homepagehilfe - Archiv (https://www.gegen-bilderklau.net/board.php?boardid=139)
----- [PHP & MySQL] Abfrage funktioniert nur hin und wieder (https://www.gegen-bilderklau.net/thread.php?threadid=174521)
Geschrieben von Leila am 14.08.2010 um 18:58:
Abfrage funktioniert nur hin und wieder
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.
Geschrieben von Oli am 14.08.2010 um 19:07:
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
Geschrieben von Leila am 14.08.2010 um 19:10:
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))
{
//[...]
}
//[...] |
|
Geschrieben von Julia712 am 15.08.2010 um 10:29:
Ich würde die Zuweisung anders machen. Ob das hilft, kann ich dir aber auch nicht sagen
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
Geschrieben von Leila am 15.08.2010 um 10:34:
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
Geschrieben von Leila am 23.08.2010 um 14:05:
keiner ne Idee?
Geschrieben von kext am 23.08.2010 um 14:19:
Ist das Absicht, dass es mal „sex“ und mal „Geschlecht“ heißt? Du solltest da vielleicht konsequent bleiben.
Geschrieben von Leila am 23.08.2010 um 14:25:
"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
Forensoftware: Burning Board, entwickelt von WoltLab GmbH