Die Lösung wäre bestimmt interessant für andere Mitglieder Ich wüsste sie auch mal gern
Beiträge von Yamram
-
-
Hey Laura,
Danke für die schnelle Antwort. Das ist perfektMit freundlichen Grüßen,
Philipp E. -
Hey Leute,
diese folgende if-Abfrage ist ziemlich lang:Code<span class="syntaxdefault"><br /></span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">$file</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"type"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"image/png"</span><span class="syntaxdefault"> OR $file</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"type"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"image/jpeg"</span><span class="syntaxdefault"> OR $file</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"type"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"image/gif"</span><span class="syntaxdefault"> OR $file</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"type"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"image/x-icon"</span><span class="syntaxdefault"> OR $file</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"type"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"image/bmp"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br />...<br />}<br /></span><span class="syntaxdefault"> </span>
Kann ich sie kürzer gestalten, denn es wird ja nur geprüft, ob $file["type"] folgenden Wert hat:
- image/png
- image/jpeg
- image/gif
- image/x-icon
- image/bmp
Gibt es da eine Möglichkeit?
Mit freundlichen Grüßen,
Philipp E. -
So ist es, es gehört sich einfach nicht. Das habe ich auch verstanden. Irgendwie ist das auch ein bisschen unlogisch, wenn man Funktion da speichert, wo der Content hingehört...
-
[reponse-for-offtopic]Natürlich speicherst du deine Daten in DATENbanken?[/reponse-for-offtopic]
-
Also, vorerst wollte ich dir mal sagen, dass du mehr Acht auf Rechtschreibung und Grammatik geben musst. Ich kann dich ja kaum verstehe O.o
Entweder du gibst bei dem INSERT Befehl einfach `id` und dann NULL als Wert an oder du lässt `id` ganz weg und den Wert dann ebenfalls. Den Rest verstehe ich nicht. Was hast du eigentlich in Deutsch? Gib dir mal ein bisschen mehr Mühe -.-
-
Wieso das denn? Ich meine, man muss ja erstmal an die MySQL Datenbank rankommen, um Funktionen zu ändern
-
Ja, es ist möglich. Aber man macht es nicht
-
Dann bist du fürs Leben bestraft
-
Dann würde ich sagen: Üben, üben, üben
-
Hmm.... Die Bild beschreibungen sagen alles xD Sag Bescheid, wenn du eine Note hast
-
Also, ich habe es schon ausprobiert. Es funktioniert. Aber was ist denn daran so schwierig? Es sähe dann nur ein bisschen komisch aus, weil ich immer wieder
Code<span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br /></span><span class="syntaxkeyword">...<br /></span><span class="syntaxdefault">?><br /></span></span>
schreiben muss. Dann würde es ungefähr so aussehen:Code<span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br /></span><span class="syntaxkeyword">function </span><span class="syntaxdefault">functionA</span><span class="syntaxkeyword">() {<br />...<br />}<br /></span><span class="syntaxdefault">?><br /><?php<br /></span><span class="syntaxkeyword">function </span><span class="syntaxdefault">functionB</span><span class="syntaxkeyword">() {<br />...<br />}<br /></span><span class="syntaxdefault">?><br /><?php<br /></span><span class="syntaxkeyword">function </span><span class="syntaxdefault">functionC</span><span class="syntaxkeyword">() {<br />...<br />}<br /></span><span class="syntaxdefault">?><br /></span></span>
Möglich, aber doof. Zusätzlich muss ich, um die MySQL Tabelle ausgeben zu lassen, manuell eine MySQL Verbindung aufbauen. Ich bleibe bei "normalen" Funktionsbibliotheken
-
lauras: Ja, vorher habe ich schon überlegt. Da hatte ich nur die Idee einfach alle Funktionen in eine Datei zu packen.
@drPHIP132: Mhhh, die Funktion in einer Datenbank ist auch nicht schlecht
@Basiii: Das kann ich leider nicht sehen...
-
Ja, aber dann weiß ich nicht, ob sich das wirklich lohnt. Nach deinem Vorschlag könnte ich dann drei Dateien machen. Eine für MySQL, eine für Verzeichnisse und eine für SESSIONS. Aber ich glaube, dass zumindest zwischen MySQL und SESSION eine dauerhafte Verbindung besteht, weil ich die SESSION ja ständig überprüfe, indem ich in der Tabelle nachschaue.
Gibt es vielleicht noch eine andere Möglichkeit?
-
Hey Leute
ich habe gemerkt, dass ich bei meinem Projekt einige Funktionen wirklich mal auslagern sollte. Da erinnerte ich mich an das Kapitel "Funktionsbibliotheken erstellen" des PHP-Kurses (http://www.php-kurs.com/). Die Funktionen, die ich oft brauche und auslagern möchte entsprechen folgenden Themen:
- MySQL
- Verzeichnis
- Usersystem (Sessions...)
Als Dateinamen habe ich mir ganz einfach functions.php ausgesucht. In dieser Datei stehen dann die ganzen Funktionen untereinander, das sieht in etwa so aus:PHP
Alles anzeigen<?php //MySQL funtions function MySQLConnect($database) { ... } function MySQLReadTable($table) { ... } //Directory functions function ReadDirectory($dir) { ... } ... ?>
Ist das so gut? Ich meine, geht es nicht besser bzw. schneller? Ich möchte bei meinem Projekt auch auf Effizienz Acht geben. Ich weiß ja nicht, ob es noch effizienter geht...
Mit freundlichen Grüßen,
Philipp E. -
@Basiii: Jo, das habe ich ergänzt Ist auch verständlich. Aber wie mache ich den Rest?!
EDIT - 22.01.2012 21:00 Uhr
So, ich habe jetzt mal selber versucht, die Variable $result auszugeben. Dazu habe ich im PHP-Dokument einfach
Code<span class="syntaxdefault"><br />echo $error</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> </span>
hinzugefügt. Und die Funktion interpretRequest() sieht nun so aus:Code
Alles anzeigenfunction interpretRequest() { switch (request.readyState) { case 4: if (request.status != 200) { alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status); } else { var xmlDoc = request.responseXML; alert("MELDUNG: " + xmlDoc); } } }
Aber da kommt immer null raus. Was mache ich falsch?!
-
Mein Beispiel mit Ajax:
Ich habe jetzt mal versucht, mein Beispiel mit Ajax umzusetzen. Doch natürlich habe ich es nicht ganz geschafft
So sieht die HTML-Datei aus:HTML
Alles anzeigen<!DOCTYPE html> <html> <head> <title>Ajax II</title> <style type="text/css"> input { display: block; } </style> <script type="text/javascript"> var request = false; function setRequest() { if (window.XMLHttpRequest) { request = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { request = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { request = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) {} } } if (!request) { alert("Kann keine XMLHTTP-Instanz erzeugen"); return false; } else { var url = "ajax2.php"; var firstname = document.getElementById("firstname").value; var surname = document.getElementById("surname").value; alert("Sie heißen " + firstname + " " + surname + "."); request.open("post", url, true); request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); request.send("firstname=" + firstname + "surname=" + surname); request.onreadystatechange = interpretRequest; } } function interpretRequest() { switch (request.readyState) { case 4: if (request.status != 200) { alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status); } else { var xmlDoc = request.responseXML; //WIE KANN ICH NUN DIE VON ajax2.php gesendete Variable $error ausgeben lassen?! } } } </script> </head> <body> <form method="post" action="javascript:setRequest();"> <input type="text" name="vorname" id="firstname" value="Vorname" maxlength="100" /> <input type="text" name="nachname" id="surname" value="Nachname" maxlength="100" /> <input type="submit" name="submit" value="abschicken" /> </form> </body> </html>
Die Datei ajax2.php sieht so aus:
PHP
Alles anzeigen<?php if(isset($_POST["firstname"]) AND isset($_POST["surname"])) { $result = ""; $connection = mysql_connect("localhost", "yamram-dev", "dreamweaver") if(mysql_select_db($connection, "ajax")) { $sql = "INSERT INTO `names` (`id`, `firstname`, `surname`, `cdate`) VALUES (NULL, '".$firstname."', '".$surname."', CURRENT_TIMESTAMP);"; if(mysql_query($sql)) { $result .= "Alles hat geklappt *__*"; } else { $result .= "Es gab ein Problem mit der Tabelle :/"; } } else { $result .= "Ein Fehler ist aufgetreten. Die Verbindung zur Datenbank ist fehlgeschlagen :/"); } } else { header("Location: ajax2.html"); } ?>
Wie ihr sehen könnt, werden die Daten in ajax2.php nur in eine Tabelle geschrieben. Je nach Erfolg oder Fehler habe ich die Variable $error gefüllt. Doch wie kann ich diesen nun in ajax2.HTML ausgeben lassen?!
Wäre echt nett, wenn ihr mir das noch erklären könntet (((:
-
Also, eine einfach Ajaxanwendung ist so aufgebaut: (Den Code habe ich eben netterweise von Basiii geschickt bekommen)
1. Ich erstelle einen Request. Hier muss ich zwischen Chrome, Firefox... und Internet Explorer unterscheiden:
Code
Alles anzeigenvar request = false; if (window.XMLHttpRequest) { request = new XMLHttpRequest(); // Mozilla, Safari, Opera } else if (window.ActiveXObject) { try { request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5 } catch (e) { try { request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6 } catch (e) {} } }
Nun kann ich auf diesen Request mit request (Variable) zugreifen...2. Dann kann ich überprüfen, ob der Request erzeugt wurde.
Nun weiß, ich dass der Request erfolgreich erstellt wurde.3. Dann öffne und sende ich den Request:
Code
Alles anzeigenvar url = "ajax_004.php"; // Name auslesen var value = document.getElementById("...").innerHTML; // Request öffnen request.open('post', url, true); // Requestheader senden request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // Request senden request.send('name='+value); // Request auswerten request.onreadystatechange = interpretRequest;
Im Prinzip wird dann die Datei ajax_004.php mit der POST Variable name aufgerufen oder? Wenn man GET machen würde, dann wäre das ajax_004.php?name=...Ich hoffe mal, das stimmt soweit
4. Dann empfange ich den Request und werte ihn aus:
Code
Alles anzeigenfunction interpretRequest() { switch (request.readyState) { // wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen case 4: if (request.status != 200) { alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status); } else { // Antwort des Servers -> als XML-Dokument var xmlDoc = request.responseXML; // Namen aus dem XML-Dokument herauslesen // AB HIER KANN MAN SELBER SCHREIBEN!!!!! var original = xmlDoc.getElementsByTagName('originalname')[0].firstChild.nodeValue; var small = xmlDoc.getElementsByTagName('smallname')[0].firstChild.nodeValue; var big = xmlDoc.getElementsByTagName('bigname')[0].firstChild.nodeValue; // Namen in die Felder schreiben document.getElementById('...').innerHTML = original; document.getElementById('small').innerHTML = small; document.getElementById('big').innerHTML = big; } break; default: break; } }
Ist das jetzt alles soweit richtig? Dann hätte ich nämlich einigermaßen verstanden ((((:
-
Ja, das bringt mir jetzt nicht viel... Der grobe Ablauf einer Ajax basierenden Anwendung ist mir schon klar.
-
Okay, das mit dem wichtig machen habe ich mir schon gedacht ;))))