• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Funktion vereinfachen

Status
Für weitere Antworten geschlossen.

r-ene

Neues Mitglied
Hiho,
ich habe folgendes Problem.
Für mein Bewertungssystem, binde ich immer eine externe Datei mit folgendem Inhalt ein:

Datei bewertung.php
PHP:
<?php
function Sterne($id)
  {
    $b_daten = mysql_query("SELECT stimmen, bewertungen FROM tabelle WHERE id=".$id);
    $b_werte = mysql_fetch_assoc($b_daten);
    $stimmen = $b_werte[stimmen];
    if ($stimmen != 0) $bewertung = round($b_werte[bewertungen]/$stimmen,1);
    
    // Sterne ausgeben
       ...
  }

function Text1($id)
  {
    $b_daten = mysql_query("SELECT stimmen, bewertungen FROM tabelle WHERE id=".$id);
    $b_werte = mysql_fetch_assoc($b_daten);
    $stimmen = $b_werte[stimmen];
    if ($stimmen != 0) $bewertung = round($b_werte[bewertungen]/$stimmen,1);
    
    // Text1 ausgeben
       ...
  }

function Text2($id)
  {
    $b_daten = mysql_query("SELECT stimmen, bewertungen FROM tabelle WHERE id=".$id);
    $b_werte = mysql_fetch_assoc($b_daten);
    $stimmen = $b_werte[stimmen];
    if ($stimmen != 0) $bewertung = round($b_werte[bewertungen]/$stimmen,1);
    
        // Text2 ausgeben
  }
?>

Datei datei.php
PHP:
<?php

include "bewertung.php";

$daten = mysql_query ("SELECT id, url, name, status FROM tabelle");

while ($werte = mysql_fetch_array($daten))
  {
  	$id = $werte[id];
        Sterne($id);
        Text2($id);
  }

?>

Wie ihr seht, steht da immer das gleiche am Anfang in der Datei bewertung.php. Ich habe schon probiert, den Anfangscode einmal einfach an den Anfang zu setzen bevor die Funktionen kommen.
Aber das klappt dann nicht mit der while-Schleife in der datei.php.
Versteht ihr was ich meine?
Im Moment funktioniert es schon so, aber mich stört einfach noch, dass ich dreimal den selben Code in jeder einzelnen Funktion habe.
Kann man das ändern?
 
Zuletzt bearbeitet:
Vorschlag:
PHP:
function select($id)
  {
    $b_daten = mysql_query("SELECT stimmen, bewertungen FROM tabelle WHERE id=".$id);
    $b_werte = mysql_fetch_assoc($b_daten);
    $stimmen = $b_werte[stimmen];
    if ($stimmen != 0) $bewertung = round($b_werte[bewertungen]/$stimmen,1);
    return $bewertung
  }
function Sterne($id)
   {
    $bewertung = select($id);
    //Ausgabe
    ...
 
Oh danke!
Und wenn ich jetzt die Funktion Sterne($id) und die Funktion Text1($id) direkt hintereinander abrufe, dann wird zwei mal die Datenbankabfrage durchgeführt oder?
Kann man das auch hinkriegen, dass die nur einmal abgefragt wird?
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben