SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 12.06.2010, 17:57:42
Leyyin Leyyin ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 44
Beiträge: 67
Attributenaufruf in einer anderen Klasse

Hallo,

schon wieder steht mir ein Problem gegenüber, das mich verrückt macht, und zwar folgendes:

ich versuche gerade mehrere Atrribute einer Klasse, die davor jeweils mit einem Wert gesetzt sind, in einer anderen Klasse zu verwenden.

PHP-Code:
//person_neu.php
//...
if (isset ($_POST['submit'])) {
        
$person = new Person;
        
//Hiermis werden alle Attributen gesetzt:
        
$person -> setPerson($_POST);
        
//...
        
SqlQuery::insertNewMail();
        echo 
"Der Eintrag ist erfolgreich in DB geschrieben worden!\n";
        echo 
'<p><a href="../person_neu.php">&lt;&lt; Zur&uuml;ck zu "Neue Person Einf&uuml;gen"-Seite</a></p>';
//...

//Person.php
class Person
{
    public 
$id;
    public 
$titel;
    public 
$vname;
    public 
$nname;
    public 
$str;
    public 
$hnr;
    public 
$plz;
    public 
$ort;
    public 
$email;

    public function 
setPerson (array $parametern){
       
$this->titel mysqli_real_escape_string($this->db, ($parametern['titel']));
       
$this->vname mysqli_real_escape_string($this->db, ($parametern['vorname']));
       
$this->nname mysqli_real_escape_string($this->db, ($parametern['nachname']));
       
$this->str mysqli_real_escape_string($this->db, ($parametern['str']));
       
$this->hnr mysqli_real_escape_string($this->db, ($parametern['hausnr']));
       
$this->plz mysqli_real_escape_string($this->db, ($parametern['plz']));
       
$this->ort mysqli_real_escape_string($this->db, ($parametern['ort']));
       
$this->email mysqli_real_escape_string($this->dbtrim($parametern['email']));
}
}

//SqlQuery.php
class SqlQuery
{
   public static function 
insertNewMail() {

        
//INSERT INTO ak_teilnehmer

        
$sql_insert_t "INSERT INTO ak_teilnehmer
                                    (t_titel, t_vname, t_nname,
                                     t_str, t_hnr, t_plz, t_tel, t_mobil, t_email)
                         VALUES (
                                    '"
.$person->titel."',
                                    '"
.$person->vname."',
                                    '"
.$person->nname."',
                                    '"
.$person->str."',
                                    '"
.$person->hnr."',
                                    '"
.$person->plz."',
                                    '"
.$person->email."'
                                )
                        "
;
        
$insert_t self::$db->query($sql_insert_t) or die('Etwas stimmte mit dem Query $sql_insert_t nicht: '.self::$db -> error);
        
//...
    
}

Soo... Wenn ich diese Code verwende, wird ein ID für die neue Person in DB zwar erzeugt aber alle zugehörige Felder sind leer ausser dem id-Feld. Wahrscheinlich holt z.B. $person->vname in der Methode insertNewMail() nicht den per $_POST gesetzte Wert sondern einfach ein leeres String... Aber wie kann ich dieses Problem überwinden?

Ach noch etwas:
Ich möchte den Satz "Der Eintrag ist erfolgreich in DB geschrieben worden!" erst dann sehen, wenn meine SqlQuery::insertNewMail(); tätsächlich erfolgreich abgeschlossen worden ist. Wie kann ich das einstellen?

Vielen vielen dank für alle Antworten schon jetzt.
Mit Zitat antworten
  #2  
Alt 12.06.2010, 18:28:05
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Attributenaufruf in einer anderen Klasse

Ich bekomme Pickel.....
Mir sind das zu viel "static" und unvorbesetzte Eigenschaften.
Auch Ausgaben in einer Klasse die ich dem Modell oder Controller zuordnen würde...(grusel)

PS:
$person ist in der Methode überhaupt nicht bekannt!!!!
Wenn du das error_reporting() aktivieren würdest, dann hätte PHP auch eine Chance dir das zu sagen.
Mit Zitat antworten
  #3  
Alt 12.06.2010, 19:13:12
Leyyin Leyyin ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 44
Beiträge: 67
AW: Attributenaufruf in einer anderen Klasse

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Mir sind das zu viel "static" und unvorbesetzte Eigenschaften.
Wieso? Was stört dich an "static"?
Aber... Ich dachte, ich habe die Eigenschaften schon vorbesetzt. Und zwar so:

PHP-Code:
//person_neu.php
//...
if (isset ($_POST['submit'])) {
        
$person = new Person;
        
//Hiermit werden alle Attributen gesetzt:
        
$person -> setPerson($_POST); 
Und die Methode "setPerson()" in der Klasse "Person" ... Was macht die denn, wenn sie die Eigenschaften nicht setzt?

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Auch Ausgaben in einer Klasse die ich dem Modell oder Controller zuordnen würde...(grusel)
Tut mir leid... Aber ich habe nicht verstanden, was du meinst.

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
$person ist in der Methode überhaupt nicht bekannt!!!!
Ja... Das habe ich auch gemerkt. Ich hatte eigentlich require verwendet, damit die Klasse SqlQuery meine "Person" kennt:

PHP-Code:
//SqlQuery.php
class SqlQuery
{
     require (
'Person.php');
     
//...
}
[/
QUOTE]
Dann hat es aber eine Syntax-Fehler gegebenderen Grund ich nicht verstanden habeDeswegen habe ich es gelöscht
Na gutdu kannst ruhig lachen. :) Aber was soll ich machenich bin eine tatsächliche AnfängerinEine strebsame/tatkräftige Anfängerin. :) 
[/QUOTE]

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Wenn du das error_reporting() aktivieren würdest, dann hätte PHP auch eine Chance dir das zu sagen.
Oui Oui Oui... Eine lange Liste... Warte, ich muss sie nun bearbeiten. Wer weiß... Vielleicht kann ich all diese Fehlern selbst überwinden :O)

PS: Ein kleiner Tipp: Das Gesicht viel viel waschen aber ohne Seife. Vergiss den naturellen Rosenwasser nicht! Das tut sehr gut gegen die Pickeln ;)
Mit Zitat antworten
  #4  
Alt 12.06.2010, 19:26:36
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Attributenaufruf in einer anderen Klasse

Zitat:
Oui Oui Oui... Eine lange Liste... Warte, ich muss sie nun bearbeiten. Wer weiß... Vielleicht kann ich all diese Fehlern selbst überwinden :O)
Viel Erfolg !!!
Noch nicht die Lösung, aber eine gute Richtung.


Zitat:
Tut mir leid... Aber ich habe nicht verstanden, was du meinst.
Ich spreche über das "Model View Controler Design Pattern" (Google gibt gern Auskunft).
Die Anwendung dieses Patterns ist keine Notwendigkeit., aber die Einhaltung des EVA-Prinzips schon.

Zitat:
Wieso? Was stört dich an "static"?
Static stört u.U. ganz heftig bei der Vererbung.

Zitat:
Aber... Ich dachte, ich habe die Eigenschaften schon vorbesetzt.
PHP-Code:
class Person 

    public 
$id 0// integer
    
public $titel ''// string
    // usw. 
Mit Zitat antworten
  #5  
Alt 14.06.2010, 09:43:01
Benutzerbild von Indyk
Indyk Indyk ist offline
Member
 
Registriert seit: Aug 2006
Ort: Lübeck
Alter: 38
Beiträge: 900
Indyk eine Nachricht über ICQ schicken
AW: Attributenaufruf in einer anderen Klasse

Hallo Leyyin,

hast du dich schonmal mit den gülltigkeitsbereichen von Variablen auseinander gesetzt? Du wirst deiner Methode das objekt übergeben müssen wenn du es dort verwenden möchtest.

Kommst du aus einer anderen Programmiersprache? Hast du vorher schon mit Funktionen gearbeitet? Ich rate dir nochmal die Grundlagen in den verschiedene Tutorials durchzugehen.
Mit Zitat antworten
  #6  
Alt 14.06.2010, 12:03:16
Leyyin Leyyin ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 44
Beiträge: 67
AW: Attributenaufruf in einer anderen Klasse

Zitat:
Zitat von Indyk Beitrag anzeigen
Hallo Leyyin,

hast du dich schonmal mit den gülltigkeitsbereichen von Variablen auseinander gesetzt?
Ja, habe ich schon, aber wenn ich mein Wissen anwenden möchte, kann ich irgendwie nicht schaffen, mache ich ständig fehlern :(

Zitat:
Zitat von Indyk Beitrag anzeigen
Du wirst deiner Methode das objekt übergeben müssen wenn du es dort verwenden möchtest.
Gut, aber ich habe schon den super globalen Array $_POST als parameter übergegeben. Da sind ja alle in den Formular gegebene Daten enthalten, oder?

PHP-Code:
$person -> setPerson($_POST); 
Zitat:
Zitat von Indyk Beitrag anzeigen
Kommst du aus einer anderen Programmiersprache? Hast du vorher schon mit Funktionen gearbeitet? Ich rate dir nochmal die Grundlagen in den verschiedene Tutorials durchzugehen.
Weiß du, ich kenne keine andere Sprache. Ich versuche seit über zwei monaten PHP nur von Büchern und aus verschiedenen Tutorials zu lernen. Ich habe auch das Gefühl, das ich es bisschen verstanden habe. Dann ist mir empfohlen worden, dass ich liebe Objekt Orientiert Programmieren soll. Gut, davon hatte ich ein wenig Ahnung, aber gar keine Erfahrung. Dann habe ich angefangen auch das zu praktizieren. Aber irgendwie mache ich immer fehler. Und ich habe niemanden außer euch, der mich beratet. Nur so schriftlich eine Frage zu stellen ist auch bisschen schwierig...

Ich verliere langsam mein Mut :(
Mit Zitat antworten
  #7  
Alt 14.06.2010, 12:36:49
Benutzerbild von Indyk
Indyk Indyk ist offline
Member
 
Registriert seit: Aug 2006
Ort: Lübeck
Alter: 38
Beiträge: 900
Indyk eine Nachricht über ICQ schicken
AW: Attributenaufruf in einer anderen Klasse

Zitat:
Zitat von Leyyin Beitrag anzeigen

Gut, aber ich habe schon den super globalen Array $_POST als parameter übergegeben. Da sind ja alle in den Formular gegebene Daten enthalten, oder?

PHP-Code:
$person -> setPerson($_POST); 
gerade ein globaler Array hat es nicht nötig übergeben zu werden. (ob das guter stiel ist oder nicht mal ausgenommen). Die globalen Arrays stehen dir überall zu verfügung, davon kann man sich in jedem Tutorial von überzeugen.


Du versucht aber in der statischen Methode von SqlQuery auf $person zuzugreifen. Diese Variable existiert dort nicht. Du hast sie weder übergeben noch ist sie global verfügbar. Du versucht also auf etwas zuzugreifen was es nicht gibt.

PHP-Code:
   public static function insertNewMail($person) {
        
//...
    

PHP-Code:
        $person = new Person;
        
//Hiermis werden alle Attributen gesetzt:
        
$person -> setPerson($_POST);
        
//...
        
SqlQuery::insertNewMail($person); 
Diese sachen müssten du anpassen damit es so Funktioniert wie du es dir Vorstellst.

Ich habe das Gefühl das dir ncoh sehr viel verständnis fehlt, Vielleicht solltest du die Tuts und Bücher mit deinem neuen Wissenstand nochmals durcharbeiten.


Zitat:
Zitat von Leyyin Beitrag anzeigen
Ich verliere langsam mein Mut :(
Nun, es hat ja keiner behauptet das es einfach ist oder? Der unterschied ist halt ob man dran bleibt oder nicht (- :
Mit Zitat antworten
  #8  
Alt 14.06.2010, 13:31:53
Leyyin Leyyin ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 44
Beiträge: 67
AW: Attributenaufruf in einer anderen Klasse

Zitat:
Zitat von Indyk Beitrag anzeigen
gerade ein globaler Array hat es nicht nötig übergeben zu werden. (ob das guter stiel ist oder nicht mal ausgenommen). Die globalen Arrays stehen dir überall zu verfügung, davon kann man sich in jedem Tutorial von überzeugen.
Ach soooo... heißt das, dass ich z.B. $_POST['vorname'] in einer Klasse in irgend einer Methode verwenden kann, auch wenn ich meine Formulardaten in einem anderen Skript abgeschickt habe?

Zitat:
Zitat von Indyk Beitrag anzeigen
Ich habe das Gefühl das dir ncoh sehr viel verständnis fehlt, Vielleicht solltest du die Tuts und Bücher mit deinem neuen Wissenstand nochmals durcharbeiten.
Ja, das denke ich auch. Ich werde alles noch mal durcharbeiten. :)

Zitat:
Zitat von Indyk Beitrag anzeigen
Nun, es hat ja keiner behauptet das es einfach ist oder? Der unterschied ist halt ob man dran bleibt oder nicht (- :
Ich bleibe auf jeden Fall dran, wenn mir den Weg weiter gezeigt wird :)

Vielen dank, ich bearbeite meine Code noch mal.

Bis bald :)
Mit Zitat antworten
  #9  
Alt 14.06.2010, 13:47:52
Benutzerbild von Indyk
Indyk Indyk ist offline
Member
 
Registriert seit: Aug 2006
Ort: Lübeck
Alter: 38
Beiträge: 900
Indyk eine Nachricht über ICQ schicken
AW: Attributenaufruf in einer anderen Klasse

Zitat:
Zitat von Leyyin Beitrag anzeigen
Ach soooo... heißt das, dass ich z.B. $_POST['vorname'] in einer Klasse in irgend einer Methode verwenden kann, auch wenn ich meine Formulardaten in einem anderen Skript abgeschickt habe?
Du verschickst deine Daten nicht per Skript, du hast ein HTML Formular welches als action attribut eine zieldatei definiert.
Code:
<form action="ziel.php" method="post">
Wenn du den submit button klickt werden die Formulardaten an ziel.php geschickt und sind im globalen Array $_POST vorhanden. Nur dort und nur nach dem abschicken des Formulares.

$_POST als globale variable ist überall verfügbar , nur meisten halt leer.

mit dem Sprachkunstrukt isset() kannst du überprüfen ob eine variable exisitiert. (gibt true oder false zurück)

PHP-Code:
var_dump(isset($_POST));
var_dump(isset($_POST['vorname'])); 
Wenn du nicht versteht wann was wo in $_POST steht wird es dir sehr schwer fallen Formulare zu verarbeiten. (Auch hier sind wir wieder bei Grundlagen)

Geändert von Indyk (14.06.2010 um 13:48:51 Uhr) Grund: typo
Mit Zitat antworten
  #10  
Alt 14.06.2010, 14:27:51
Leyyin Leyyin ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 44
Beiträge: 67
AW: Attributenaufruf in einer anderen Klasse

Du hast mich verwirrt :)

Ich glaube wegen meiner fehlender Erklärungen haben wir uns irgendwie missverstanden. Ich erkläre es so:

Ich habe ein Skript person_neu.php, wo ein Formular erstellt wird.

Code:
<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>" id="form">
D.h. Wenn man den submit button angeklickt wird, werden die Formulardaten wieder an diesem Skript geschickt. Bis hier sind wir einig.

Ich habe aber eine Zweite Klasse SqlQuery.php, wo meine alle Sql-Anfragen Methodenweise stehen.
Und dort braucht eine Methode alle meine Formulardaten als Eingabe-Parametern.
Stell dir mal vor; ich habe 20 Formulardaten und ich muss all diese als Parameter zu einer Methode eingeben. Das finde ich verrückt. Da diese Methode sich nicht in person-neu.php (wo alle Formulardaten geschickt worden waren) befindet, habe ich anstatt alle Daten einzeln zu übergeben, einfach $_POST als parameter verwendet.
Zitat:
Zitat von Indyk Beitrag anzeigen
gerade ein globaler Array hat es nicht nötig übergeben zu werden.(...). Die globalen Arrays stehen dir überall zu verfügung
Dieser Satz war der Grund, warum ich gequatcht habe :)

Habe ich mich jetzt ausdrücken können?
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Klasse BBCode global machen huelse PHP Grundlagen 3 30.12.2008 19:05:11
Kann eine Klasse in einer Eigenschaft ein Objekt, einer anderen Klasse instanzieren? Balthazzar PHP für Fortgeschrittene und Experten 6 06.07.2006 16:06:36
Klasse in Klasse aufrufen wollenschlaeger PHP für Fortgeschrittene und Experten 4 14.07.2005 13:05:32
Andere Klasse aus Klasse aufrufen NanoCyte PHP für Fortgeschrittene und Experten 22 28.06.2004 21:24:53
Blätterfunktion als Klasse! Funjoy PHP Entwicklung und Softwaredesign 0 24.06.2004 23:45:04


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:07:52 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt