Eigene PHP MySql Function funktioniert nicht

F

FurbyHaxx

Hallo Miteinander, ich habe mir eine funktion geschrieben an welche eine id übergeben wird, mitder diese dann verschiedene infos aus der db hohlt.

Wenn ich das ganze ohne funktion probiere geht alles wunderbahr, jedoch mit der funktion bekomm ich keine variablen zurück.

jetzt:
- funktioniert das ganze nicht?

oder:
- versuche ich nur falsch auf die variablen zuzugreifen?


Der Aufruf:

<?php
if(isset($_POST['button'])){
$id = $_POST['id'];
MachineInfo('$id');
echo "Die Maschine mit ID $id hat die Bezeichnung $bezeichnung";
}
?>


Die Funktion:

<?php
function GetMachineInfo($id){
$sql = "SELECT * FROM maschinen WHERE id='".$id."'";
$result = mysql_query($sql) OR die(mysql_error());
if(mysql_num_rows($result)) {
while($row = mysql_fetch_assoc($result)) {
$id = $row['id'];
$bezeichnung = $row['bezeichnung'];
$s1 = $row['1schicht'];
$s3 = $row['3schicht'];
$s5 = $row['5schicht'];
$s7 = $row['7schicht'];
$s9 = $row['9schicht'];
$e1z = $row['extr1zonen'];
$e1k = $row['extr1kammern'];
$e2z = $row['extr2zonen'];
$e2k = $row['extr2kammern'];
$e3z = $row['extr3zonen'];
$e3k = $row['extr3kammern'];
$e4z = $row['extr4zonen'];
$e4k = $row['extr4kammern'];
$e5z = $row['extr5zonen'];
$e5k = $row['extr5kammern'];
$e6z = $row['extr6zonen'];
$e6k = $row['extr6kammern'];
$e7z = $row['extr7zonen'];
$e7k = $row['extr7kammern'];
$e8z = $row['extr8zonen'];
$e8k = $row['extr8kammern'];
$e9z = $row['extr9zonen'];
$e9k = $row['extr9kammern'];
$hersteller = $row['hersteller'];
$breite = $row['breitemax'];
$gdos = $row['gravdos'];
$vdos = $row['voldos'];
$ibc = $row['ibc'];
$reversierung = $row['reversierung'];
$dickenmessung = $row['dickenmessung'];
$seitenfalz = $row['seitenfalz'];
$stippen = $row['stippenpruefung'];
$vorbehandlung = $row['vorbehandlung'];
$wickleranzahl = $row['wickleranzahl'];
$wendekreuz = $row['wendekreuz'];
echo $bezeichnung;
}
}
}

?>


danke für eure hilfe
 
Sorry kleiner fehler beim kopieren, der Aufruf sollte natürlich so aussehen:

<?php
if(isset($_POST['button'])){
$id = $_POST['id'];
GetMachineInfo('$id');
echo "Die Maschine mit ID $id hat die Bezeichnung $bezeichnung";
}
?>
 
Die Probleme sind, dass die Funktion gar keinen Wert zurück gibt und wenn die Funktion einen Wert zurück geben würde, speicherst du ihn nicht. Außerdem übergibst du der Funktion

Code:
'$id'

Und das ist tatsächlich die Zeichenkette "$id". Hier müssen die einfachen Anführungszeichen weg gelassen werden.

Folgendes sollte zum Erfolg führen (soweit der Code in der Funktion an sich richtig arbeitet: dazu muss schon eine Verbindung zur Datenbank bestehen!):

Die Funktion selbst:
PHP:
function GetMachineInfo($id) {
  ...
  return $bezeichnung; // statt echo $bezeichnung;
}

Der Aufruf:
PHP:
$bezeichnung = GetMachineInfo($id);
echo "Die Maschine mit ID $id hat die Bezeichnung $bezeichnung";

Lektüre dazu:
- Geltungsbereich von Variablen
- Funktionen
Edit: und zusätzlich:
- Verschiedene Anführungszeichen in PHP
 
Zuletzt bearbeitet:
Also wenn das der Originalcode ist, dann vergleiche mal den Namen der Funktion ("GetMachineInfo") und den Aufruf ("MachineInfo").

Aber abgesehen davon, muss es nicht so aussehen:

PHP:
<?php
if(isset($_POST['button'])) { 
    $id = $_POST['id'];
    echo "Die Maschine mit ID $id hat die Bezeichnung " .MachineInfo($id);
}
?>
 
Zuletzt bearbeitet:
danke, das funktioniert so, jetzt will ich aber ja nicht nur die bezeichnung ausgeben sondern alle dieser variablen, kann ich diese jetzt einfach als global deklarieren? und wie muss ich diese dann im aufrum verwenden?
 
Dann musst du den Aufruf und die Rückgabe umgestalten.

PHP:
//Rückgabe aus der Funktion
return Array("wert1", "wert2", "wert3");

//Aufruf und Auswertung
$maschine = GetMachineInfo($id);
echo $maschine[0];
echo $maschine[1];
echo $maschine[2];
 
Du kannst das Array, dass du von mysql_fetch_assoc() zurück bekommst, weiterleiten. Es sollte ja ohnehin nur ein Datensatz bei dem Statement rauskommen:

PHP:
...
$row = mysql_fetch_assoc($result);

return $row;
 
Zurück