mainframe.board

Misc => Tech-Board => Thema gestartet von: mf|Lightfly am Freitag, 24. Mai 2002, 19:38

Titel: PHP Punte Homepages Programmieren
Beitrag von: mf|Lightfly am Freitag, 24. Mai 2002, 19:38
Da Akron Punte Homepages Programmieren möchte, dachten wir das es das beste ist hier einen PHP thread aufzumachen. natürlich kann auch jeder andere hier fragen zur webprogrammierung stellen (PHP/HTML/Javascript/Apache-/IIS- Konfiguration) und ich werde versuchen diese zu beantworten.
Titel:
Beitrag von: mf|Akron am Freitag, 24. Mai 2002, 20:08
Mal als erstes:
bracuhe ich irgendwelche Tools um eine mySQL-DB (oä) aufzuziehen?
Titel:
Beitrag von: mf|Lightfly am Freitag, 24. Mai 2002, 20:08
prinzipell brauchst du eigentlich nur ein server auf dem mysql installiert ist
Titel:
Beitrag von: mf|Akron am Freitag, 24. Mai 2002, 22:33
Gut. Mal angenommen, ich hab sowas.

Wie schaffe ich es, dass jeder Besucher der Page etwas in meine DB schreiben kann?

Noch rudimentäerer. Access kapiere ich ja noch mit den Tabellen. Aber wie zum Geier verklickere ich dem Server, wo die Daten sind? Bzw. wie seh' ich das?
Titel:
Beitrag von: mf|Lightfly am Samstag, 25. Mai 2002, 01:03
mysql ist genau gleich aufgebaut, mit tabellen.

hier ein kleines beispiel das ich aus dem php-handbuch (http://www.php.net/manual/de) kopiert habe:

       // Verbindung aufbauen, auswählen einer Datenbank
       $link = mysql_connect("mysql_host", "mysql_login", "mysql_password")
       or die("Keine Verbindung möglich!");
       print "Verbindung zum Datenbankserver erfolgreich";
       mysql_select_db("Meine_Datenbank")
       or die("Auswahl der Datenbank fehlgeschlagen");

       // ausführen einer SQL Anfrage
       $query = "SELECT * FROM Meine_Tabelle";
       $result = mysql_query($query)
       or die("Anfrage fehlgeschlagen");

       // Ausgabe der Ergebnisse in HTML
       print "\n";
       while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
       print "\t\n";
       foreach ($line as $col_value) {
       print "\t\t\n";
       }
       print "\t\n";
       }
       print "
$col_value
\n";

       // Freigeben des Resultsets
       mysql_free_result($result);

       // schliessen der Verbinung
       mysql_close($link);
       ?>

das ist ein ganz einfaches beispiel um eine tabelle komplett in html darzustellen.

um in eine datenbank hineinzuschreiben musst du eigentlich nur das sql-statement abändern:

       // ausführen einer SQL Anfrage
       $query = "INSERT INTO Meine_Tabelle (Spalte1,Spalte2) VALUES ('wert1','wert2')";
       $result = mysql_query($query)


ach ja, das hab ich dir vergessen zu sagen, um ordentlich mit einer db arbeiten zu können musst du SQL auch noch können. aber keine panik, SQL ist nicht wahnsinnig schwer, gute tutorials findest du unter http://www.w3cschools.org
Titel:
Beitrag von: mf|Akron am Samstag, 25. Mai 2002, 08:12
SQL lernen wir gerade in der Schule. Sollte ein lösbares Problem sein.

Aber genau habe ich noch nicht kapiert, wie das abläuft. Irgendwie muss ich meine DB ja auf den Server bringen, bevor ich sie abfragen kann. Und wie übermittle ich der DB die Abfragen? Schreibe ich die in eine html Datei oder verbinde ich gleich via FTP oder wie?
Titel:
Beitrag von: mf|Lightfly am Samstag, 25. Mai 2002, 10:30
das php kannst du in eine x-beliebige html datei schreiben.


um die ganzen tabellen und so zu erstellen, kannst du dich entweder per telnet auf deinen sql-server verbinden oder per php:

   $link = mysql_connect("mysql_host", "mysql_login", "mysql_password");
   mysql_select_db("Meine_Datenbank");
   $query = "CREATE TABLE Deine_Tabelle ....usw...";
   $result = mysql_query($query);
   mysql_free_result($result);
   mysql_close($link);
?>

am besten bastellst du dir eine funktion um beliebige SQL-Strings ausführen zu können:

function sqlexec($query,$db="DeineStandartDatenbank"$mysql_host="Dein_SQLHost",$mysql_login="Benutzername",$mysql_pass="password"){;

    $dbhandler=mysql_connect($mysql_host, $mysql_login, $mysql_password");
   mysql_select_db($db);
   $result = mysql_query($query);
   mysql_free_result($result);
   mysql_close($dbhandler);

}
?>

jetzt musst du  nur noch denn grünen text ersetzen.

der functions aufruf sieht daa so aus:

   sqlexec("CREATE TABLE ....");
?>

oder wenn du eine andere db brauchst:

   sqlexec("CREATE TABLE ....","meine_andere_datenbank");
?>


ich weiss nicht ob dir das klar ist, aber php schreibt man einfach ins html rein. hier ein kleines beispiel anhand der mainframe homepage:


----------------------------------------------SNIP-----------------

   
   Mainframe 2nd - <? if(isset($s)){ print "$s - "; } ?>MainFrame LAN-Party ©
   
   

   

   

   
   
   
   
   
   
   
   
   
 
 

   
   
   
   
   
   


      
         
      
      
         
      
         
      


         
            
         
            
         


            
               
            
               
               
            
               
            

            if (!isset($s)){
               $s="info.news";
            }

            $location=explode(".",$s);
            $top_menuitems=array("info" => "news","location" => "info","rulez" => "leer","ok-team" => "members","sponsors" => "leer","board" => "mf2");

            foreach(array_keys($top_menuitems) as $top_menuitem){
               print "
               if($location[0]==$top_menuitem){
                  print "-1";
               }

               print ".gif\">
";
            }

            ?>


               
                  
               
               
               
               

                  
               
 

               
                  
                  
                  
               


                  
                  

                  


               
               if($location[0]=="info"){
                  $sub_menuitems=array("news","facts","network","fights","sign-on","list");
               } if($location[0]=="location"){
                  $sub_menuitems=array("info","gallery");
               } if($location[0]=="rulez"){
                  $sub_menuitems=array("leer");
               } if($location[0]=="ok-team"){
                  $sub_menuitems=array("members","helpers");
               } if($location[0]=="sponsors"){
                  $sub_menuitems=array("leer");
               } if($location[0]=="board"){
                  $sub_menuitems=array("gb","forum","aov");
               }


               foreach($sub_menuitems as $menuitem){

                  if ($menuitem == "ganzleer"){
                  } else {
                     print "";
                  }

                  print "
                  if($location[1]==$menuitem){
                     print "-1";
                  }

                  print ".gif\">
";
               }


               ?>


               


                  
                     
                  
                     
                     
                  
                     
                  


                     
                        
                     
                        
                     

                        if(file_exists("files/$s.htm")){
                           include("files/$s.htm");
                        }else{
                           include("res/404.php");
                        }
                        // counter *******************************************************************
                        if(!isset($s)){ print ""; }
                        // counter *******************************************************************
                     ?>
                     


                  


               
 


            


         


      


   


   
 


   

---------------------------------------------------SNAP------------
Titel:
Beitrag von: mf|Akron am Samstag, 25. Mai 2002, 12:23
Also wird die SQL Anweisung jedesmal ausgeführt, wenn die Page geladen wird oder was? Wie interpretiert der Server das Zeugs? Html Dateien werden ja vom Browser interpretiert. Ich meine, der Server liest ja die Datei nicht aus, sobald er sie erhalten hat, oder?
Titel:
Beitrag von: mf|Lightfly am Sonntag, 26. Mai 2002, 13:18
php ist ein servlet, das heisst wenn du einen server hast auf dem php installiert ist, wird jede .php datei die vom browser aufgerufen wird zuerst vom PHP ISAPI oder von der php.exe geparst, ausgeführt (es wird auf dem server ausgeführt!) und wieder dem webserver zurückgegeben. der browser erhählt dann gewöhnliches html und wird deinen php code nie zu gesicht bekommen.

php musst du dir ungefähr wie eine API vorstellen, hinter der sich tausende systemnahe funktionen verbergen.


zum beispiel könntes du dir mithilfe von php irgendein verzeichniss auf dem webserver anzeigen lassen oder beliebig dateien auf dem server lesen/schreiben/erstellen. (natürlich nur wenn der server so konfiguriert ist :) )



hier ein versuch:
du kannst dir php von http://www.php.net/downloads (~900kb) ziehen, irgendwo gibts ein binary für windooze.
dann installieren.

erstelle jetzt im installations verzeichniss eine datei, z.b. test.php.

schreib folgende zeilen in die datei:

function verzeichnis($path){
$handle=opendir($path);
while ($file = readdir ($handle)){
   if ($file != "." && $file != ".."){
      if(is_dir($path.$file)){
         $verz[]=$path.$file;
      }
   }
}
return $verz;
}


$alle=verzeichnis("c:/");

foreach($alle as $verz){
printf("%s
",$verz);
}
?>


wechsle nun in ein dos-fenster, wechsle in das php verzeichniss ung gib folgendes ein:

php test.php > test.htm

jetzt kannst du die test.htm in deinem browser öffnen.
schau dir mal denn quelltext an!
Titel:
Beitrag von: mf|Akron am Sonntag, 26. Mai 2002, 22:56
?(  ?(  ?(  ?(
*jetztgarnixmehrraff*

Wo ist der verdammte Quelltext? Wie kann der Browser das Zeugs interpretieren? Ist ja kein HTML-Code vorhanden.

Und wie teile ich dem Server mit, dass ich gerne das .php-File als html-Datei, bzw. an irgendeiner Stelle im html-Code möchte? Sprich, wie lasse ich das nun auf dem Server laufen? Ich kann ja schlecht vor denServer hocken und "php test.php > htm" eintippen ;)
Titel:
Beitrag von: mf|Lightfly am Sonntag, 26. Mai 2002, 23:20
lol - brauchst du auch gar nicht, das übernimmt der webserver für dich, sobald jemand eine .php datei aufruft mit dem browser, merkt der server das und schickt die datei an das php.exe/php isapi, das wiederum schickt den php code zurück an den webserver (jetzt ist nur noch html vorhanden) und der schickt das file dem browser.

am besten wäre wenn wir mal zusammen hocken könnten.

ein guter anfang ist, wenn du bei dir auf dem heimischen pc mal ein webserver installierst, dann php installen, und noch einen mysql setupen. das zeugs kannst du hier downloaden:

Apache Webserver (http://www.apache.org/dist/httpd/binaries/win32/apache_2.0.36-win32-x86-no_ssl.msi)

PHP (http://www.php.net/distributions/php-4.2.1-installer.exe)

MySQL Server (http://www.mysql.org/Downloads/MySQL-3.23/mysql-3.23.49-win.zip)

das ist am besten dann kannst du lokal testen und musst nicht alles theoretisch machen  :)

und keine angst das sind keine herkömmlichen windows programme: installieren heisst hier dateien in ein verzeichniss kopieren, keine dlls im system32 ordner, keine registry einträge. wenn du deinstallieren willst, einach verzeichnis löschen, fertig.  :))

ob du das ganze im windows oder im linux machst kommt auch nicht draufan, die obenstehenden links gelten aber nur für windows
Titel: oje
Beitrag von: [SHHF]extremrams am Mittwoch, 05. Juni 2002, 00:03
ich weiss nicht wie ich die cd wieder aus meinem cdrom laufwerk rausbringe. sie bleibt immer stecken.
keine ahnung.. habs schon mit gleitcreme und so versucht.. aber erfolg hatte ich bis jetzt einzig und allein mit ner verbogenen büroklammer.
aber ich will nicht jedesmal eine neue büroklammer nehmen.
   :D
Titel:
Beitrag von: mf|Lightfly am Freitag, 07. Juni 2002, 17:28
am besten bohrst du von hinten ein loch in das drive, dann steckst du einen bolzen hinein der, mit hilfe eines servos das über denn parallel port geschteuert wird, die cd sammt schublade vorne raus quetscht. :)
Titel:
Beitrag von: mf|Akron am Mittwoch, 11. Dezember 2002, 19:22
Öhm, ich wollte mal wieder anfangen, PHP zu lernen.
Also nix wie los, Apache aufsetzen, PHP saugen und mySQL installieren.

dann kurz im Editor was im Stil von
echo phpinfo();
?>
schreiben und was kommt dabei raus? Dieser blöde Browser meint einfach
echo phpinfo();
?>

Was mache ich falsch?
Titel:
Beitrag von: Angelus@XP am Mittwoch, 11. Dezember 2002, 19:59
hm schwierig zu sagen bei so wenig infos.

nehme mal an, du hast das file schon am richtigen ort platziert? Im Apache httpd.conf steht irgendwo:

DocumentRoot c:\blabla

Da müsste dein Testfile liegen. Im Browser gibts du dann

http://localhost/test.php

ein.
Titel:
Beitrag von: mf|Akron am Mittwoch, 11. Dezember 2002, 20:12
Ahso. Das muss da rein?
Dachte, das könne irgendwo gespeichert werden :D
Mal ausprobieren.
----------------
Hmm, geht ned :(
Ich habe mal die httpd.conf auf meinen Webspace geladen. Kannst ja mal nach Fehlern suchen :D
http://www.zhwin.ch/~schaaret/httpd.conf
Titel:
Beitrag von: Angelus@XP am Mittwoch, 11. Dezember 2002, 22:04
ich nehme mal an, der Apache selber läuft richtig. d.h. wenn du

http://localhost/

eingibst, kommt irgendeine apache-testseite.

einen unterschied von deiner apache-config zu meiner sehe ich; du verwendest php als dll, und ich als .exe. im windows-verzeichnis müsste es noch eine php.ini geben. da drinn gibts einen wert

doc_root

und der müsste auf das gleiche verzeichnis wie das DocumentRoot vom apache zeigen-.

aber vielleicht hat jemand anders noch ne idee. ich habe den Apache und php schon vor ein paar monaten installiert; wahrscheinlich gibts ne neuere als meine.
Titel:
Beitrag von: mf|Akron am Mittwoch, 11. Dezember 2002, 22:14
Hmm? doc_root ist leer bei mir, und Server läuft anscheinend auch nicht richtig :(
Titel:
Beitrag von: Angelus@XP am Donnerstag, 12. Dezember 2002, 07:49
sehe schon, du bist ein schwerer Fall :)
wenn nicht mal der apache richtig läuft, solltest du mal dessen Logs anschauen.
Titel:
Beitrag von: mf|Akron am Donnerstag, 12. Dezember 2002, 08:02
Die kann er nicht finden. Er durchsucht die HD.
Titel:
Beitrag von: Angelus@XP am Donnerstag, 12. Dezember 2002, 09:03
argh.
Aber den Apache hast du schon gestartet? Kommt in der Taskleiste neben der Uhr sein Symbol (eine Feder oder so) ?

Die logs müssten hier sein:

C:\Programme\Apache Group\Apache2\logs

3 Stück.
Titel:
Beitrag von: mf|Akron am Donnerstag, 12. Dezember 2002, 09:07
Das einzige logfile ist install.log, hier der Inhalt:
-----------------
Installing Apache HTTP 2.0 server with
 DomainName =  localworld.ch
 ServerName =  localhost
 ServerAdmin = admin@localworld.com
 ServerPort =  8080
 ServerRoot =  C:/Programme/Apache/Apache2
Rewrote C:/Programme/Apache/Apache2/conf/httpd-win.conf
 to C:/Programme/Apache/Apache2/conf/httpd.default.conf
Successfully removed C:\Programme\Apache\Apache2\conf\httpd-win.conf
Duplicated C:/Programme/Apache/Apache2/conf/httpd.default.conf
 to C:/Programme/Apache/Apache2/conf/httpd.conf
Duplicated C:/Programme/Apache/Apache2/conf/ssl.default.conf
 to C:/Programme/Apache/Apache2/conf/ssl.conf
Duplicated C:/Programme/Apache/Apache2/conf/magic.default
 to C:/Programme/Apache/Apache2/conf/magic
Duplicated C:/Programme/Apache/Apache2/conf/mime.types.default
 to C:/Programme/Apache/Apache2/conf/mime.types
Successfully removed C:\Programme\Apache\Apache2\conf\InstallConf.awk
-----------------
Ich kann den Server, nur monitoren. Wenn ich ihn in der Konsole starten will, macht der das Fenster subito wieder zu. Ich glaube, ich installier ihn nochmals neu.
Titel:
Beitrag von: Angelus@XP am Donnerstag, 12. Dezember 2002, 09:45
jo mach mal.
auf was für einem OS willst du ihn laufen lassen?
Falls Win2k oder XP musst du mal in den Diensten nachschauen, ob er da eingetragen ist.
Titel:
Beitrag von: mf|Akron am Donnerstag, 12. Dezember 2002, 09:56
XP.
So er sich irgendwie mit Apache eingetragen hat, ist der nicht drin. Wie schreib ich den da rein?
Titel:
Beitrag von: Angelus@XP am Donnerstag, 12. Dezember 2002, 10:54
Als Dienst sieht es so aus:

"C:\Programme\Apache Group\Apache2\bin\Apache.exe" -k runservice

Der Name des Dienstes ist Apache2

im Startmenü müsstest du dann folgende Verknüfung haben:

"C:\Programme\Apache Group\Apache2\bin\Apache.exe" -n "Apache2" -k start


Aber wie du jetzt einen neuen Dienst hinzufügst...... keine Ahnung. Müsste ja alles das Apache-Setup machen
Titel:
Beitrag von: mf|Lightfly am Donnerstag, 12. Dezember 2002, 11:05
is fast alles korrekt, nur funktioniert die scheiss dll nicht unter windoof, keine ahnung warum. kannst du auf der php seite nachlesen.

mein vorschlag:

1. php 4.2.3 runterladen:
http://lfx.ch/lightfly/pvt/ressourcen/wamp/php/4.2.3/php-4.2.3-installer.exe
2. apache 1.3.9 runterladen:
http://lfx.ch/lightfly/pvt/ressourcen/wamp/apache/1.3.9/apache_1.3.27-win32-x86-src.msi
3. beide sächeli ins standart verzeichnis installieren
4. jetzt solltest du ein verzeichnis "C:\php" haben und ein verzeichnis "C:\Programme\Apache Group\Apache"
5. diese php.ini ins winnt verzeichnis kopieren:
http://lfx.ch/lightfly/pvt/configs/windoof/wamp/php/4.2.3/php.ini
6. diese apache config ins apache/conf verzeichnis kopieren:
http://lfx.ch/lightfly/pvt/configs/windoof/wamp/apache/1.3.9/httpd.conf

dann sollte alles funzen. dein document root ist dann:
"C:\Programme\Apache Group\Apache\htdocs"


du fragst dich jetzt bestimmt warum du diesen alten server installieren solltest. ganz einfach, 3 gründe:

1. diese version ist am meisten verbreitet (über 80%)
2. des ist die einzige version welche unter windows anständig funzt.
3. des ist die einzige version bei der das session management unter window überhaupt funzt.
4. es gibt keine funktionellen nachteil, oder special features welche im apache2 enthalten sind und im 1.3.9er ned.

übrigens lass dich ned vom namen des apache installers irritieren, weiss auch ned warum der 1.3.27-installer heisst. jedenfalls ist der 1.3.9er drin.
Titel:
Beitrag von: mf|Akron am Donnerstag, 12. Dezember 2002, 11:07
Hab ich alles schon gemacht. Funzt ned.

Ich versuch's nochmal.

Das Ding will ned laufen :(
Titel:
Beitrag von: Angelus@XP am Donnerstag, 12. Dezember 2002, 11:35
versuch's mal schrittweise.
zuerst nur den apache. und erst wenn dieser läuft das PHP installieren
Titel:
Beitrag von: mf|Lightfly am Donnerstag, 12. Dezember 2002, 11:42
also ich würde die schuld prinzipiell mal auf XP schieben. man liest viel darüber das unter XP das zeugs ned richtig funzt.

infos/sächeli zum probieren:

1. bei der installation des apache wirst du gefragt ob der dienst nur für dich oder für alle user installiert werden soll.
dort musst du "alle benutzer" auswählen

2. wichtig: wenn du den apache neu installierst musst du den alten zuerst deinstallieren und auch noch das installations verzeichnis von hand löschen weil die configs ned gelöscht werden.

3. wenn der dienst "Apache" oder "httpd" nicht in den diensten erscheint nach der installation musst du gar ned erst weitermachen. dann kannst du das teil gleich wieder entfernen.

4. es ist allgemein bekannt das der apache 2.0 unter windows ärger macht.

5. versuch die installation als administrator durchzuführen
Titel:
Beitrag von: Angelus@XP am Donnerstag, 12. Dezember 2002, 12:34
also bei mir zu Hause läufts unter XP.

aber im normalfall will ja auch niemand auf XP einen Webserver laufen lassen  :D
Titel:
Beitrag von: mf|Akron am Samstag, 14. Dezember 2002, 20:02
Hm. Server läuft nun (fragt mich nicht, warum).
Nur irgendwei scheint das mit der document_root nicht zu funktionieren. Er findet die Datei einfach ned.
Titel:
Beitrag von: [AoV]Vortex am Samstag, 14. Dezember 2002, 21:02
@Akron: wenn du immer noch Probleme hast versuchs doch mal mit dem PHP Triad. Das ist ein vorkonfiguriertes PHP/mysql/apache Paket das relativ einfach einzurichten ist. Bei mir läufts wunderbar.

Download unter:

http://sourceforge.net/projects/phptriad (http://sourceforge.net/projects/phptriad)
Titel:
Beitrag von: mf|Lightfly am Dienstag, 17. Dezember 2002, 08:09
oje, ein hopfnungslocker fall
Titel:
Beitrag von: [AoV]Vortex am Dienstag, 17. Dezember 2002, 09:31
sorry....aber was bitte?