PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Mysql Abfrag in einer Function


Rudolpho
01.05.2009, 21:07:18
Guten Abend! Ich hoffe hier eine Antwort zu finden zu folgendem Problem:
Erstmal der ganze Code:

<?php
require("./xajax/xajax_core/xajax.inc.php");

function getIngredient($ingredient)
{
$query_ingredient=" SELECT e.*, s.*
FROM eco_recipes_raw as e
LEFT JOIN eco_structures as s
ON e.Structure=s.Name
WHERE e.Output = '".$ingredient."'
AND e.ID > '5'";

$result_ingredient = mysql_query($query_ingredient) or die(mysql_error());
while($ro = mysql_fetch_object($result_ingredient))
{
$icon_in = $ro->Icon;
$quantity_in = $ro->Quantity;
$labor_in = $ro->Labor;
$tip_in = $ro->Tip;
$upkeep_in = $ro->upkeep_cost;
}
}
function getManufactured($bFormValues)
{
$objResponse = new xajaxResponse();
$recipeid = $bFormValues['manufact_recipe'];
$taxrate = $bFormValues['tax'];
$markup = $bFormValues['markup'];
$uAdv = $bFormValues['useAdvanced'];
if(empty($recipeid) || empty($taxrate))
{
$objResponse->assign("holder", "innerHTML", "<font color='red'>Please fill out the form completely.</font>");
$objResponse->redirect("http://www.les-elites.org/index.php?article_id=125", "4");
return $objResponse;
}
else
{
$link = mysql_connect('xxx', 'xxxx', 'xxxxx');
mysql_select_db('xxxxxx', $link);
$sql="SELECT e.*, s.*
FROM eco_recipes_manufactured as e
LEFT JOIN eco_structures as s
ON e.Structure=s.Name
WHERE e.ID = '".$recipeid."'";

$result = mysql_query($sql) or die(mysql_error());

while($row = mysql_fetch_object($result))
{
$icon = $row->icon;
$name = $row->Recipe;
$output = $row->Output;
$quantity = $row->Quantity;
$structure = $row->Structure;
$alt_structure = $row->Alt_Structure;
$labor = $row->Labor;
$tip = $row->Tip;
$upkeep = $row->upkeep_cost;
$ing1 = $row->ing_1;
$qty1 = $row->qty_1;
$ing2 = $row->ing_2;
$qty2 = $row->qty_2;
$ing3 = $row->ing_3;
$qty3 = $row->qty_3;
$ing4 = $row->ing_4;
$qty4 = $row->qty_4;
$ing5 = $row->ing_5;
$qty5 = $row->qty_5;
$ing6 = $row->ing_6;
$qty6 = $row->qty_6;
$ing7 = $row->ing_7;
$qty7 = $row->qty_7;
$ing8 = $row->ing_8;
$qty8 = $row->qty_8;
$ing9 = $row->ing_9;
$qty9 = $row->qty_9;
$ing10 = $row->ing_10;
$qty10 = $row->qty_10;
$ing11 = $row->ing_11;
$qty11 = $row->qty_11;
$ing12 = $row->ing_12;
$qty12 = $row->qty_12;
}
if ($uAdv == "Advanced")
{
$adv = 0.8;
}
else
{
$adv = 1;
}

$sOut = "<table><tr><th id=\"icons\"><img src=\"/files/icons/".$icon."\"></th><th colspan=3><span>". $name ."</span></th><th><input type=\"reset\" name=\"reset\" value=\"Reset\" onclick=\"refreshPage()\" style=\"font-size: 0.8em;\" /></th></tr>";
$sOut .= "<tr><td>Produced Item: ".$output."</td><td>Quantity: ".$quantity."</td><td colspan=2></td></tr>";
if (!empty($ing1))
{
$ingredient = $ing1;
getIngredient($ingredient);
$sOut .= "<tr><td id=\"icons\"><img src=\"/files/icons/".$icon_in."\"></td><td>".$ing1."</td><td>".$qty1."</td><td>".$tip_in."</td></tr>";
}
if (!empty($ing2))
{
$ingredient = $ing2;
getIngredient($ingredient);
$sOut .= "<tr><td id=\"icons\"><img src=\"/files/icons/".$icon_in."\"></td><td>".$ing2."</td><td>".$qty2."</td><td></td></tr>";
}
if (!empty($ing3))
{
$ingredient = $ing3;
getIngredient($ingredient);
$sOut .= "<tr><td id=\"icons\"><img src=\"/files/icons/".$icon_in."\"><td>".$ing3."</td><td>".$qty3."</td><td></td></tr>";
}
if (!empty($ing4))
{
$ingredient = $ing4;
getIngredient($ingredient);
$sOut .= "<tr><td id=\"icons\"><img src=\"/files/icons/".$icon_in."\"><td>".$ing4."</td><td>".$qty4."</td><td></td></tr>";
}
if (!empty($ing5))
{
$ingredient = $ing5;
getIngredient($ingredient);
$sOut .= "<tr><td id=\"icons\"><img src=\"/files/icons/".$icon_in."\"><td>".$ing5."</td><td>".$qty5."</td><td></td></tr>";
}
if (!empty($ing6))
{
$ingredient = $ing6;
getIngredient($ingredient);
$sOut .= "<tr><td id=\"icons\"><img src=\"/files/icons/".$icon_in."\"><td>".$ing6."</td><td>".$qty6."</td><td></td></tr>";
}
if (!empty($ing7))
{
$ingredient = $ing7;
getIngredient($ingredient);
$sOut .= "<tr><td id=\"icons\"><img src=\"/files/icons/".$icon_in."\"><td>".$ing7."</td><td>".$qty7."</td><td></td></tr>";
}
if (!empty($ing8))
{
$ingredient = $ing8;
getIngredient($ingredient);
$sOut .= "<tr><td id=\"icons\"><img src=\"/files/icons/".$icon_in."\"><td>".$ing8."</td><td>".$qty8."</td><td></td></tr>";
}
if (!empty($ing9))
{
$ingredient = $ing9;
getIngredient($ingredient);
$sOut .= "<tr><td id=\"icons\"><img src=\"/files/icons/".$icon_in."\"><td>".$ing9."</td><td>".$qty9."</td><td></td></tr>";
}
if (!empty($ing10))
{
$ingredient = $ing10;
getIngredient($ingredient);
$sOut .= "<tr><td id=\"icons\"><img src=\"/files/icons/".$icon_in."\"><td>".$ing10."</td><td>".$qty10."</td><td></td></tr>";
}
if (!empty($ing11))
{
$ingredient = $ing11;
getIngredient($ingredient);
$sOut .= "<tr><td id=\"icons\"><img src=\"/files/icons/".$icon_in."\"><td>".$ing11."</td><td>".$qty11."</td><td></td></tr>";
}
if (!empty($ing12))
{
$ingredient = $ing12;
getIngredient($ingredient);
$sOut .= "<tr><td id=\"icons\"><img src=\"/files/icons/".$icon_in."\"><td>".$ing12."</td><td>".$qty12."</td><td></td></tr>";
}
$sOut .= "</table>";
$objResponse->script('xajax_getIngredient($ingredient);');
$objResponse->assign("holder", "innerHTML", $sOut);
$objResponse->assign("holder","style.backgroundColor","white");
$objResponse->assign("form","style.visibility","hidden");
$objResponse->assign("form","style.height","0px");

return $objResponse;

}
}


$xajax = new xajax();
$xajax->configure('javascript URI', 'xajax/');
/// $xajax->configure('debug', true);
$xajax->registerFunction("getRecipe");
$xajax->registerFunction("getManufactured");
$xajax->processRequest();
?>


Und nun mein Problem:


if (!empty($ing1))
{
$ingredient = $ing1;
getIngredient($ingredient);
$sOut .= "<tr><td id=\"icons\"><img src=\"/files/icons/".$icon_in."\"></td><td>".$ing1."</td><td>".$qty1."</td><td>".$tip_in."</td></tr>";
}


Die Funktion getIngredient() per se funktioniert. Die andere Funktion auch.
Wenn man $ingredient ausgibt ist auch der richtige wert drinnen. Nur irgendwo geht das ganze verloren........? z.B. die Variable $tip_in wird nicht ausgegeben. Funktioniert de rCode so wie ich ihn mir ausgedacht habe nicht? Kann ich in einer Funktion eine 2.te Funktion aufrufen die dann die entsprechenden Variablen auch weitergiibt?

vt1816
01.05.2009, 23:01:50
Hi,
willkommen hier im Forum.

$icon_in = $ro->Icon;
$quantity_in = $ro->Quantity;
$labor_in = $ro->Labor;
$tip_in = $ro->Tip;
$upkeep_in = $ro->upkeep_cost;


sind nur in Deiner Funktion bekannt - Deine Funktion hat aber kein Rückgabewert - daher kannst Du außerhalb der Funktion nicht drauf zugreifen.
Packe die Variablen in ein Array und gib es mit return aArray zurück.

Rudolpho
01.05.2009, 23:10:16
ähm sorry bin immer noch ein diletantischer anfänger.
reicht es wenn ich statt mysql_fetch_object mysql_fetch_array nehme oder mit array() ein array erzeugen ?
wie greife ich aus dem array auf die werte zu?

vt1816
01.05.2009, 23:17:39
function getIngredient($ingredient)
{
$query_ingredient=" SELECT e.*, s.*
FROM eco_recipes_raw as e
LEFT JOIN eco_structures as s
ON e.Structure=s.Name
WHERE e.Output = '".$ingredient."'
AND e.ID > '5'";

$result_ingredient = mysql_query($query_ingredient) or die(mysql_error());
aArray = array();
while($ro = mysql_fetch_object($result_ingredient))
{
aArray[] = array($ro->Icon, $ro->Quantity, $ro->Labor, $ro->Tip, $ro->upkeep_cost);
}
return aArray;
}


if (!empty($ing1))
{
$ingredient = $ing1;
aArr = getIngredient($ingredient);
$sOut .= "<tr><td id=\"icons\"><img src=\"/files/icons/".aArr[1]."\"></td><td>".aArr[2]."</td><td>".aArr[3]."</td><td>".aArr[4]."</td></tr>";
}
- ungetestet -
Verstehe es bitte als Denkansatz!

Rudolpho
01.05.2009, 23:26:13
*Dickes Dankeschön*


werd´s gleich mal testen

Rudolpho
02.05.2009, 00:01:14
falls das hier aArray = array();

so gemeint war $aArray = array();

hat´s super funktioniert :)

danke nochmal

vt1816
02.05.2009, 11:00:17
Yes...