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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
12.06.2010, 17:57:42
|
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"><< Zurück zu "Neue Person Einfü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->db, trim($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.
|
12.06.2010, 18:28:05
|
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.
|
12.06.2010, 19:13:12
|
Anfänger
|
|
Registriert seit: May 2010
Alter: 44
Beiträge: 67
|
|
AW: Attributenaufruf in einer anderen Klasse
Zitat:
Zitat von DokuLeseHemmung
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
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
$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 gegeben, deren Grund ich nicht verstanden habe. Deswegen habe ich es gelöscht.
Na gut, du kannst ruhig lachen. :) Aber was soll ich machen; ich bin eine tatsächliche Anfängerin. Eine strebsame/tatkräftige Anfängerin. :)
[/QUOTE]
Zitat:
Zitat von DokuLeseHemmung
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 ;)
|
12.06.2010, 19:26:36
|
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.
|
14.06.2010, 09:43:01
|
|
Member
|
|
Registriert seit: Aug 2006
Ort: Lübeck
Alter: 38
Beiträge: 900
|
|
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.
|
14.06.2010, 12:03:16
|
Anfänger
|
|
Registriert seit: May 2010
Alter: 44
Beiträge: 67
|
|
AW: Attributenaufruf in einer anderen Klasse
Zitat:
Zitat von Indyk
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
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
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 :(
|
14.06.2010, 12:36:49
|
|
Member
|
|
Registriert seit: Aug 2006
Ort: Lübeck
Alter: 38
Beiträge: 900
|
|
AW: Attributenaufruf in einer anderen Klasse
Zitat:
Zitat von Leyyin
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
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 (- :
|
14.06.2010, 13:31:53
|
Anfänger
|
|
Registriert seit: May 2010
Alter: 44
Beiträge: 67
|
|
AW: Attributenaufruf in einer anderen Klasse
Zitat:
Zitat von Indyk
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
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
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 :)
|
14.06.2010, 13:47:52
|
|
Member
|
|
Registriert seit: Aug 2006
Ort: Lübeck
Alter: 38
Beiträge: 900
|
|
AW: Attributenaufruf in einer anderen Klasse
Zitat:
Zitat von Leyyin
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
|
14.06.2010, 14:27:51
|
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
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?
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 11:05:37 Uhr.
|