[PHP] Fragen zur Verwendung von Klassen

Raze

CHARGIN MAH LAZER
ID: 116848
L
6 Mai 2006
294
28
Hi @ all,

ich habe vor kurzem angefangen mit Klassen zu arbeiten, aber ich habe so einige Probleme bei denen ich keinen ansatzpunkt finde was da falsch sein könnte.

Funktion 1 (für Formulareingaben):
PHP:
function FileClean ($Name,$Mail) {
    $Namegereinigt  =    strip_tags      ($Name);
    $Namegereinigt  =    htmlspecialchars($Namegereinigt);
    $Namegereinigt  =    trim            ($Namegereinigt);
    $Namegereinigt  =    stripslashes    ($Namegereinigt);
    
    $Mailgereinigt  =    strip_tags        ($Mail);
    $Mailgereinigt  =    htmlspecialchars  ($Mailgereinigt);
    $Mailgereinigt  =    trim              ($Mailgereinigt);
    $Mailgereinigt  =    stripslashes      ($Mailgereinigt);
    return $Namegereinigt;
    return $Mailgereinigt;
}
Ich weiß nich obs schön gelöst wurde, aber die funktion dieser funktion ist klar, aber mein problem ist diese variablen die jetzt generiert wurden wieder in mein script zu bekommen. Wenn ich zb $Name=$Form->Namegereinigt; benutze ist die Variable $Name Leer. :-?

Funktion 2 (MySQL):
PHP:
function Insert ($Tabelle,$Spalten,$Werte){
      $Eintrag = "INSERT INTO $Tabelle($Spalten)VALUES('$Werte')";
      if (!mysql_query($Eintrag)) {
      echo "Datensatz wurde nicht hinzugefügt.";
       } 
        }
Und das hab ich in meinem Script stehen:
PHP:
$MySQL->Insert("Benutzer","Name, Mail, Passwort","'$Name', '$Mail', '$PW1'");
Aber es wird nie ein Datensatz hinzugefügt.

Ich würde mich freuen wenn jmd nen Fehler findet :LOL:

Raze
 
Man kann nicht 2 Werte returnen. Nach return dem ersten Return ist Schluss. Alles was dahinter kommt findet nicht mehr statt.
Zum Rest sag ich jetzt nichts, hab grad keine Zeit. Vllt später wenns noch kein anderer gemacht hat.
 
Ok danke für den hinweis, aber wie könnte ich das sonst lösen?
Vllt für Mail und Name jeweils eine eigene Funktion?:-?

Raze
 
Also ich habe die funktion jetzt umgeschrieben:

PHP:
function FileClean ($Name,$Mail) {
    $Namegereinigt  =    strip_tags      ($Name);
    $Namegereinigt  =    htmlspecialchars($Namegereinigt);
    $Namegereinigt  =    trim            ($Namegereinigt);
    $Namegereinigt  =    stripslashes    ($Namegereinigt);
    
    $Mailgereinigt  =    strip_tags        ($Mail);
    $Mailgereinigt  =    htmlspecialchars  ($Mailgereinigt);
    $Mailgereinigt  =    trim              ($Mailgereinigt);
    $Mailgereinigt  =    stripslashes      ($Mailgereinigt);
    
    $Daten = array("SName"=>$Namegereinigt, "SMail"=>$Mailgereinigt);
    return $Daten;
 }
Und im script hab ich jetzt folgendes geschrieben:
PHP:
$Form->FileClean ($Name,$Mail);
    $CleanName = $Form->Daten[SName];
    $CleanMail = $Form->Daten[SMail];
Stimmts jetzt soweit? ich hab nocheinmal versucht Cleanname und Cleanmail auszugeben, doch die variablen sind immernoch leer.:-?

mfg
Raze
 
Dein Aufruf der methode müsste jetzt wiefolgt lauten:

Code:
$data = $Form->FileClean ($Name,$Mail);
$CleanName = $data[SName];
$CleanMail = $data[SMail];

return bedeutet Rückgabewert, also das, was dort, wo die Funktion aufgerufen wird, zurückgegeben wird. Dieses musst du in eine Variable schreiben, dann kannst du damit weiterarbeiten.

Schöner ist übrigens, Attrivute der Klasse zu definieren. Also am Anfang der Klasse, vor der ersten Funktion:

Code:
var $SName;
var $SMail;

Dann in der Funktion, anstatt nen Array zu machen:
Code:
$this->SName = $Namegereinigt;
$this->$SMail = $Mailgereinigt;
und kein return.

Und dann beim Aufruf:
Code:
$Form->FileClean ($Name,$Mail);
$CleanName = $Form->Sname;
$CleanMail = $Form->SMail;

Damit bist du weg von arrays und hast zusätzlich Vorteile bei der Datenkappselung (getter und setter).

PlaciD
 
und du meinst wiederum ein Objekt oder? ;)

Aber Zahlindizes setzt man wiederum net in Hochkommata oder? Doch nur die Stringindizes!?