Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Objektinstanzen und AJAX

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Objektinstanzen und AJAX

    Hallo Leute,

    ich habe gerade etwas sehr merkwürdiges festgestellt. Folgender Sachverhalt, ich schreibe eine kleines Forum mit diversen Klassen, so habe ich zum Beispiel eine Klasse User und Gallery etc. erstellt, dass funktioniert soweit auch alles gut.

    Jetzt habe ich ein merkwürdiges Problem festgestellt, wenn ich eine Objektinstanz der Klasse Gallery erzeuge, möchte ich den dortigen Fileupload (Teil des Objektes) mittels Ajax realisieren. Kann es sein, dass ich innerhalb der Klasse noch mal mein JS einbinden muss?

    Ich habe leider Stunden damit zugebracht nach Fehlern zu suchen, JS war in der Seite eingebunden laut Quelltext. Um der Sache Herr zu werden, habe ich Buttons im Objekt angelegt und habe versucht diese via jQuery anzusprechen. Kein Erfolg, erst als ich noch mal innerhalb der Klasse das JS eingebunden habe.

    Liege ich damit richtig, dass ich in jeder Klasse (bzw. Objektinstanz), die ich mit jQuery ansprechen möchte, noch mal separat mein Script einbinden muss?


  • #2
    Extrem schlecht beschrieben, aber: Nein.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      du postet in php-einsteiger und hast einen haufen javascript fragen.
      dann bringst du noch ajax ins spiel, was ja zwischen client und server vermittelt und so antworten von php kriegt und diese mit js auswertet.


      das macht die ganze sache reichlich konfus, für mich.

      //OT:
      dass du das verstanden hast ...

      Kommentar


      • #4
        Habe ich nicht.
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          @moma, ich hatte genau eine Frage! Dazu kommt noch, da es sich hierbei um eine Frage bezüglich Ajax UND einem PHP Objekt handelte. Da könnte man sich streiten ob das nun zu AJAX oder PHP gehört.

          @nikosch, freundlich wie immer.

          Dennoch frage ich mich doch, wenn ich so schlecht erklärt habe, wieso fragt man da nicht nach? Oder unterstellt Ihr immer postum den Threadersteller Boshaftigkeit oder Unvermögen? Sehr enttäuschend wie hier regiert wird..

          Kommentar


          • #6
            Lerne Grundlagen | Quellensammlung

            PHP.de Wiki | Was ist PHP

            wieso fragt man da nicht nach?
            Deine Aufgabe ist eine verständliche Frage, nicht unsere, die Frage zu interpretieren, analysieren und Ergänzungsfragen zu stellen. DU willst was von UNS.
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              Ich weiß ehrlich gesagt nicht, wieso meine Frage so unklar war!

              Erzeugung einer Objektinstanz der Klasse Gallery, Teil des Objektes ist ein Fileupload, dessen Inhalt ich mit Ajax übertragen wollte. Wo bitte ist das konfus? Wenn euch der Quellcode geholfen hätte, dann hätte man dies auch freundlich sagen können!

              Nimm es mir nicht übel, aber deine Reaktion darauf ist einfach nur unhöfflich! Wenn dir die Fragestellung zu trivial ist, dann antworte doch nicht. Schließlich bist du nicht gezwungen, dich mit meiner Frage zu beschäftigen, es gibt ja auch noch andere User hier.

              Eurer Verhalten ist schlicht weg einfach unangebracht!

              Kommentar


              • #8
                Ich meinst du denn das mit "Javascript noch mal einbinden"?
                Standards - Best Practices - AwesomePHP - Guideline für WebApps

                Kommentar


                • #9
                  Zitat von Moonblood Beitrag anzeigen
                  (..)dessen Inhalt ich mit Ajax übertragen wollte. Wo bitte ist das konfus?
                  wie der inhalt übertragen wird ist völlig egal, mE.

                  @nikosch:
                  mal wieder rausreden?

                  Kommentar


                  • #10
                    @rkr

                    Nun ja, innerhalb der Klasse Gallery wird ein Formular zum Upload von Bilder bereitgestellt. Auf dieses Formular wollte ich nun mittels jQuery zugreifen, die Daten halt per AJAX an die passende Datei übertragen. Jedoch habe ich eben festgestellt, wenn ich ein Objekt der Klasse Gallery erzeuge und nun das Upload Formular angezeigt wird, kann ich mittels jQuery auf kein Element des Formulares zugreifen. Erst nach dem ich innerhalb der Klasse noch mal mein JS Script eingebunden habe, funktionierte der "Zugriff" via jQuery wieder wie gewohnt.

                    Vielleicht hilft dir der Code etwas weiter?

                    die Gallery Klasse..
                    Code:
                    <?php
                    	class gallery{
                    		var $user_id;
                    		var $name;				// Name des Album
                    		var $beschreibung; 		// Beschreibung des Albums
                    		var $anzahl_alben;		// Anzahl bereits bestehender Alben
                    		var $pfad;				// wird zum Pfad einer Gallery
                    		
                    		// HIER MUSS NOCH EINE BESSERE LÖSUNG HER
                    		// möglich wäre eine Unterscheidung in der params.php welche dann
                    		//nur die Konstanen noch mal includet
                    		var $host = 'localhost';
                    		var $db_user = 'root';
                    		var $db_pass = 'PASSWORD';
                    		var $db;
                    		
                    		function __construct($album){
                    			
                    			// für showAlert($msg, $url) und reDirect($url) 
                    			@include '../page/functions.php';	
                    			
                    			session_start(); // Wiederaufnahme der Session
                    	
                    			// wird benöigt, damit ich Zugriff via jQuery im Klassenobjekt erhalte
                    			echo '<script type="text/javascript" src="js/jquery-2.1.1.js"></script>';
                    			echo '<script type="text/javascript" src="js/script.js"></script>';
                    			
                    			
                    			$this->db = new mysqli($this->host, $this->db_user, $this->db_pass);
                    			$this->db->select_db("benutzer");
                    			
                    			$this->user_id = $_SESSION['user']['user_id'];
                    			$this->name = $album['name'];
                    			$this->beschreibung = $album['beschreibung'];
                    			$this->anzahl_alben = $album['anzahl_alben'];
                    			
                    			/* Wenn keine Alben existieren, dann mit 1 beginnen, sonst inkrementieren 
                    			 * und anlegen eines Verzeich. mit Benutzernamen in gallerys*/
                    			if(0 == $this->anzahl_alben){
                    				$this->anzahl_alben = 1;
                    				@mkdir($this->pfad);
                    			} else {
                    				$this->anzahl_alben++; 
                    			}
                    	
                    			$this->pfad = "../gallerys/".$_SESSION['user']['user']."/".$this->anzahl_alben; // <====================
                    			@mkdir($this->pfad);
                    			
                    			$sql = "INSERT INTO
                    						`gallery`(user, name, beschreibung, pfad, create_date)
                    					VALUES(
                    					'$this->user_id',
                    					'$this->name',
                    					'$this->beschreibung',
                    					'$this->pfad',
                    					NOW()
                    					)";
                    						
                    			$this->db->query($sql);
                    			$this->createGallery();
                    		}
                    		
                    		function createGallery(){
                    				
                    			$files = scandir($this->pfad);		//enthält alle Dateien im Verzeichniss
                    			$files = array_slice($files, 2); 	// . und .. werden entfernt
                    			$count_files = count($files); 		// Anzahl der Bilder
                    			
                    			echo "<div class='gallery'>
                    	
                    				  <div class=\"left round_border\">	
                    				  <h1> Gallerie: {$this->name} </h1> <br />
                    				  <h6> Beschreibung: {$this->name} <br/>
                    				       enthaltene Bilder: $count_files </h6><br/>
                    				  
                    				";
                    				?>
                    				
                    				<!--Upload Bereich (multiple="true" <-- mehrere Dateien als Upload) -->
                    				<form id="bilder_upload" method="POST" enctype="multipart/form-data" multiple="true"> 
                    					Bilder hinzuf&uumlgen.. <br />
                    					<input type="file" name="datei" id="uploadFile">
                    					<input type="submit" id="form_action" name="form_action" value="upload">
                    					<input type="hidden" id="album" value="<?php echo $this->anzahl_alben; ?>"/> <!-- damit das Bild im richtigen Album landet --> 
                    				</form>
                    				</div>
                    				
                    				
                    			<?php	
                    						
                    		}
                    		
                    		function editGallery(){
                    			
                    		}
                    		
                    		function deleteGallery(){
                    			
                    		}
                    }
                    
                    ?>
                    Und hier mein jQuery Script bzw der zuständige Teil..
                    Code:
                    	//Upload der Bilder (Formular in der Klasse Gallery)
                    	$("form#bilder_upload").submit(function(){
                     		
                    		var file = $("#uploadFile")[0].files[0];
                    		var fileName = file.name;
                    		var fileSize = file.size;
                    		var form_action = $("input#form_action").val();
                    		var anzahl_alben = $("input#album").val();
                    		
                    		alert("Filename -> " + fileName + " Size ->" + fileSize + " Form_action -> " + form_action + " Album -> " + anzahl_alben);
                    		
                    		$("div#content").load("page/form_handler.php",{
                    			datei: file,
                    			dateiname: fileName,
                    			dateisize: fileSize,
                    			form_action: form_action,
                    			album: anzahl_alben
                    		});
                    		
                     		 return false;
                    	});
                    @moma, lass einfach gut sein. Ich möchte hier etwas dazu lernen und nicht dumm angemacht werden!

                    Kommentar


                    • #11
                      Zitat von Moonblood Beitrag anzeigen
                      @moma, lass einfach gut sein. Ich möchte hier etwas dazu lernen und nicht dumm angemacht werden!
                      ich frage mich halt nur, ob es sinn macht permannent output in form von html-markup zu generieren, oder eine klasse den ganzen job machen zu lassen, wo doch immer alle posten: "eine klasse eine aufgabe".

                      ich will dich auch nicht dumm anmachen.

                      egal, hauptsache dir gefällts.

                      Kommentar


                      • #12
                        @moma kein Problem, ich denke du weist was mich hier echt geärgert hat.

                        Was meinst du mit "output in form von html-markup zu generieren" ?

                        Sorry, ich bin alles andere als ein Profi und versuche mich halt gerade an Objekt orientierter Programmierung. Gerade in dem Punkt, was alles sinnvoll in einer Klasse ist und was man lieber außerhalb einer Klasse bewerkstelligt habe ich sicher noch Verbesserungspotential.

                        Dennoch ist meine ursprüngliche Frage nicht wirklich geklärt. Ich will ja nicht nerven, aber ich würde halt schon gern wissen wieso ich nicht auf die Formular Elemente der Klasse bzw. des Objekte via jQuery zugreifen konnte. Das Problem habe ich zwar mit dem Einbinden meines Scriptes innerhalb der Klasse lösen können, logisch erscheint mir dieser Schritt jedoch nicht.

                        In meinem PHP Buch steht leider nur grundlegendes zur OOP, bzw. rein gar nichts zu jQuery in Verbindung mit Objekten. Lustiger Weise, steht in meinem jQuery Buch auch nichts dazu.

                        Kommentar


                        • #13
                          php dient dazu mehr oder minder dynamischen inhalt auf eine webseite zu schreiben.
                          wie man das macht ist einem selbst überlassen.

                          wenn du innerhalb der webseite jquery benützen willst, musst du es klar auch einmal auf die html seite schreiben, am besten im kopfteil.

                          Kommentar


                          • #14
                            Vielleicht hilft dir der Code etwas weiter?
                            Ja super Idee...

                            Wenn euch der Quellcode geholfen hätte, dann hätte man dies auch freundlich sagen können!
                            Das sagen wir hier ständig! Also komm endlich mal im Forum an oder zieh weiter.

                            Nimm es mir nicht übel, aber deine Reaktion darauf ist einfach nur unhöfflich! Wenn dir die Fragestellung zu trivial ist, dann antworte doch nicht. Schließlich bist du nicht gezwungen, dich mit meiner Frage zu beschäftigen, es gibt ja auch noch andere User hier.

                            Eurer Verhalten ist schlicht weg einfach unangebracht!
                            Sie ist nicht trivial, sie ist unverständlich. "innerhalb der Klasse noch mal mein JS einbinden" macht einfach keinen Sinn. In PHP kann man JS Nicht einbinden.


                            @nikosch:
                            mal wieder rausreden?
                            Watt?
                            --

                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                            --

                            Kommentar


                            • #15
                              Zitat von Moonblood Beitrag anzeigen
                              In meinem PHP Buch steht leider nur grundlegendes zur OOP, bzw. rein gar nichts zu jQuery in Verbindung mit Objekten. Lustiger Weise, steht in meinem jQuery Buch auch nichts dazu.
                              Das liegt vermutlich daran, dass jQuery damit nicht das geringste zutun hat. Auch ein AJAX-Request von jQuery ist nur ein Request, genau wie jeder andere. Die Frage die du dir also beantworten solltest ist nicht, wie du mit jQuery mit PHP-Objecten arbeiten kannst sondern eher, wie du allgemein mit PHP-Objecten arbeiten kannst und je nach Request und Parametern andere Objecte erzeugst und mit ihnen arbeitest. Wenn du dir DIESE Frage beantwortet hast kannst du dann PHP und jQuery auf einen Nenner bringen, indem du bei beiden den gleichen GET oder POST Parameter nutzt, um auf das jeweilige Object zuzugreifen, welches du brauchst.
                              Zitat von nikosch
                              Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

                              Kommentar

                              Lädt...
                              X