If Abfrage eleganter lösen

Dolphon

Erfahrenes Mitglied
Moin.

hier erstam lder CODE:

PHP:
<?

require("config.inc.php");
if(!($db = mysql_connect($db_host, $db_user, $db_pass))) //baue datebankverbindung auf 
  die(mysql_error());  //wenn nicht geht, gib fehlermeldung aus 
else //wenn doch geht 
{ 
  if(!mysql_select_db($db_name)) //wähle datenbank aus 
      die(mysql_error());   //wenn das nicht geht, gib fehler aus 
} 
 
  
  $frei = '0';
  $abfrage = "SELECT * FROM handwerker WHERE frei = '".$frei."'ORDER BY firmenname ASC";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_object($ergebnis))
    {

if($row->gewerbe == '1')
{
 $row->gewerbe == 'Dachdecker';
}
if($row->gewerbe == '2')
{
 $row->gewerbe == 'Dachdecker2';
}

    echo "                                       
              <tr>
                <td height=\"19\" width=\"80\">$row->firmenname</td>
                <td height=\"19\" align=\"center\" width=\"410\">$row->gewerbe</td>
          <td height=\"19\" align=\"center\" width=\"47\"><input type=\"checkbox\" name=\"freischalten[]\" value=\"".$row->id."\"></td>

                 </tr>
Hier seht ihr eine einfache Ausgabe der Daten aus der DB. Bei dem Tabellen Feld Gewerbe stehen zahlen von 1-18 drin.
Jetzt will ich jeder Zahl einen Namen zuweisen. s.o. Hab damit auch angefangen, aber das würden dann 18 if abfragen sein. Kann man das auch kürzer schreiben.?

MFG

Dolphon
 
hallo,
du könntest ein array erstellen in dieser art
PHP:
$array = new array();
$array['1'] = 'dachdecker';
.
.
.
und könntest dann durch $array[$row->gewerbe] die Bezeichnung abrufen.

mfg jens
 
ich habs mal gemacht, aber der spuckt mir ne Fehlermeldung aus:

Parse error: parse error, unexpected T_ARRAY, expecting T_STRING or T_VARIABLE or '$' in /www/htdocs/v079556/sebastian/freischalten.php on line 66

PHP:
  $abfrage = "SELECT * FROM handwerker WHERE frei = '".$frei."'ORDER BY firmenname ASC";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_object($ergebnis))
    {

$array = new array();  //Zeile 66
$array['1'] = 'Dachdeckunsarbeiten'; 
$array['2'] = 'Dachabdichtugnsarbeiten'; 
$array['3'] = 'Maler und Tapezierarbeiten'; 
$array['4'] = 'Fliesen- und Plattenarbeiten'; 
$array['5'] = 'Estrich-und Gussasphalt'; 
$array['6'] = 'Bodenbelagsarbeiten'; 
$array['7'] = 'Sanitärinstallation'; 
$array['8'] = 'Heiz- und zentrale Wärmeanlagen<'; 
$array['9'] = 'Elektroarbeiten'; 
$array['10'] = 'Zimmerarbeiten, Holzbinder'; 
$array['11'] = 'Verdunklungsarbeiten'; 
$array['12'] = 'Tischler/Schreinerarbeiten'; 
$array['13'] = 'Türenarbeiten'; 
$array['14'] = 'Putz- und Stuckarbeiten'; 
$array['15'] = 'Rohbauarbeiten'; 
$array['16'] = 'Gerüstarbeiten'; 
$array['17'] = 'Fensterarbeiten'; 
$array['18'] = 'Fassadenarbeiten';
 
dumme Frage, aber es kann doch sicher sein, das sich diese Gewerbe auch mal ändern, oder du sie an mehereren Stellen in Scripten brauchst.
wäre es da nicht sinnvoller, die Gewerbe und deren Nummer (als Schlüssel) in einer Extra-Tabelle zu speichern und dann diese einfach mit Joinen? Dann hättest du in deinem Result nämlich zu jedem Datensatz das passende Gewerbe.
 
PHP:
$sql = "
select handwerker.*, gewerbe.gewerbe_name
from handwerker, gewerbe
where handwerker.gewerbe_id = gewerbe.gewerbe_id
  and frei = '".$frei."'
ORDER BY firmenname
";
 
oder halt:

PHP:
$sql = " 
select handwerker.*, gewerbe.gewerbe_name 
from handwerker left join gewerbe 
on handwerker.gewerbe_id = gewerbe.gewerbe_id 
where frei = '".$frei."' 
ORDER BY firmenname 
";
 
SO habs mal gemacht.
Allerdigns klappt es noch nciht ganz.
Bei der Ausgabe der DAten $row->gewerbe steht nur die Zahl des Gerbes, aber nicht der Name.

hier mal der Code:

PHP:
<?

require("config.inc.php");
if(!($db = mysql_connect($db_host, $db_user, $db_pass))) //baue datebankverbindung auf 
  die(mysql_error());  //wenn nicht geht, gib fehlermeldung aus 
else //wenn doch geht 
{ 
  if(!mysql_select_db($db_name)) //wähle datenbank aus 
      die(mysql_error());   //wenn das nicht geht, gib fehler aus 
} 
 
  
  $frei = '0';
  $abfrage = " SELECT handwerker.id, handwerker.firmenname, handwerker.gewerbe, gewerbe.gewerbe_name FROM handwerker, gewerbe 
WHERE handwerker.gewerbe = gewerbe.id 
  and frei = '".$frei."' 
ORDER BY firmenname ASC ";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_object($ergebnis))
    {


    echo "                                       
              <tr>
                <td height=\"19\" width=\"80\">$row->firmenname</td>
                <td height=\"19\" align=\"center\" width=\"410\">$row->gewerbe</td>
          <td height=\"19\" align=\"center\" width=\"47\"><input type=\"checkbox\" name=\"freischalten[]\" value=\"".$row->id."\"></td>

                 </tr>                                                                                                                                                                                                                               

    ";} 
?>
 
Zurück