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

Funktionen

Status
Für weitere Antworten geschlossen.

Asterixus

Aktives Mitglied
Hallo,

ich habe ein gewissen Problem mit Funktionen. Bisher habe ich immer Funktionen geschrieben, bei denen alle Argumente benutzt wurden, immer. Nun grade habe ich eine kleine doofe Funktion geschrieben, bei der ich einfach wollte, dass es kürzer geht, nur dann kam die Nachricht: Wenn die Adresse so lautet:
http://127.0.0.1/html_lernen/index.php?uebung=0
Warning: Missing argument 2 for template() in c:\program files\apache group\apache\htdocs\html_lernen\includes\functions.php on line 27

Warning: fread() [function.fread]: Length parameter must be greater than 0. in c:\program files\apache group\apache\htdocs\html_lernen\includes\functions.php on line 37
Mit folgendem Code:

functions.php
PHP:
<?php
/**
 * @return ressource
 * @param $query string
 * @desc mysql_query
 */
function qry($query) {
    return mysql_query($query);
}
/**
 * @return string
 * @param $zu_ersetzen str
 * @param $das_kommt_stattdessen str
 * @param $in_welcher_variable str
 * @desc Ersetzt Zeichen in einer Variable
 */
function replace($zu_ersetzen, $das_kommt_stattdessen, $in_welcher_variable) {
    $produkt = str_replace($zu_ersetzen, $das_kommt_stattdessen, $in_welcher_variable);
    return $produkt;
}
/**
 * @return void
 * @param $datei str
 * @param $speziell string[optional]
 * @desc Wiedergibt ein Template
 */
function template($datei, $speziell) {
    $contents = "";
    if (isset($speziell)) {
        $datei = "templates/".$datei.".template";
    } else {
        $datei = "templates/page/".$datei.".template";
        $contents.="<div class=\"content\">";
    }
    
    $handle = fopen($datei, "r");
    $contents .= fread($handle, filesize($datei));
    if (!isset($speziell)) {
        $contents.="</div>";
    }
    fclose($handle);
    echo ($contents);
}
/**
 * @return boolean
 * @param $zahl integer
 * @desc Wieder gibt true oder false im Falle ob eine Zahl ganz ist oder nicht.
 */
function ist_ein_ganzes($zahl) {
    if(!is_numeric($zahl)) {
        return false;
    } else {
        if(round($zahl)==$zahl) {
            return true;
        } else {
            return false;
        }
    }
}

?>
index.php
PHP:
<?php
include("includes/functions.php");
template("start", 1);
template("menue", 1);
template("barre", 1);
if (!isset($_GET["uebung"]) || !isset($_POST["uebung"])) {
    $uebung = 0;    
}
if (isset($_GET["uebung"])) {
    $uebung = $_GET["uebung"];
}
if (isset($_POST["uebung"])) {
    $uebung = $_POST["uebung"];
}
if (!ist_ein_ganzes($uebung)) {
    $uebung = 0;
}
if ($uebung==0) {
    template("0");
}
template("ende", 1);
?>
Die Templatedatei existiert, also von daher kein Problem. Nun zu meinem eigentlichen Problem: wie macht man ein Argument (Variable in einer Funktion) fakultativ?
 
Werbung:
Hi,

schau mal hier ...

PHP:
<?php

function myFunction($paramA, $paramB = 0)
{
    echo $paramA . " => " . $paramB;
}

// Ausgabe waere "A1 => 0"
myFunction("A1");

// Ausgabe waere "A2 => 2"
myFunction("A2", 2);

?>

In dieser Form kannst Du eine Eingabe fakultativ machen.
Hoffe ich konnte Dir helfen.

Gruss Sven
 
Hallo,

super! Fuktioniert (fast)!

Nun zur nächsten Frage ^^:

Warning: fread() [function.fread]: Length parameter must be greater than 0. in c:\program files\apache group\apache\htdocs\html_lernen\includes\functions.php on line 37


Was ist da das Problem?
 
Werbung:
Hallo,

entschuldige den Fehler habe ich überlesen :wink:

Der Fehler besagt das der zweite Parameter bei dem Funktionsaufruf einen Wert 0 (FALSE) hat.

PHP:
$contents .= fread($handle, filesize($datei));
Ich vermute das die Datei leer ist denn existieren muss sie ja sonst wäre der Funktionsaufruf

PHP:
$handle = fopen($datei, "r");
ja schon schief gegangen.

Ich würde mir eine Logausgabe machen um zu validieren welche Dateigröße meine Datei hat, ist diese 0 wird der Fehler auftreten, ist diese größer 0, kann die Datei gelesen werden.

Mach mal folgendes und poste Deine Ausgabe.

PHP:
<?php

/**
* @return void
* @param $datei str
* @param $speziell string[optional]
* @desc Wiedergibt ein Template
*/
function template($datei, $speziell) {
    $contents = "";
    if (isset($speziell)) {
        $datei = "templates/".$datei.".template";
    } else {
        $datei = "templates/page/".$datei.".template";
        $contents.="<div class=\"content\">";
    }

    $handle = fopen($datei, "r");
    
    /* Logausgabe */
    echo "LOG: " . filesize($datei);
    
    $contents .= fread($handle, filesize($datei));
    if (!isset($speziell)) {
        $contents.="</div>";
    }
    fclose($handle);
    echo ($contents);
}

?>
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben