Autor Thema: PHP Punte Homepages Programmieren  (Gelesen 7795 mal)

Offline mf|Lightfly

  • mainframe.team
  • Hero Member
  • *
  • Beiträge: 1365
    • Profil anzeigen
    • http://www.mframe.ch
PHP Punte Homepages Programmieren
« 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.

Offline mf|Akron

  • mainframe.team
  • Hero Member
  • *
  • Beiträge: 2219
  • Bad command or file name
    • Profil anzeigen
(Kein Betreff)
« Antwort #1 am: Freitag, 24. Mai 2002, 20:08 »
Mal als erstes:
bracuhe ich irgendwelche Tools um eine mySQL-DB (oä) aufzuziehen?
ka-clik
shink!

Offline mf|Lightfly

  • mainframe.team
  • Hero Member
  • *
  • Beiträge: 1365
    • Profil anzeigen
    • http://www.mframe.ch
(Kein Betreff)
« Antwort #2 am: Freitag, 24. Mai 2002, 20:08 »
prinzipell brauchst du eigentlich nur ein server auf dem mysql installiert ist

Offline mf|Akron

  • mainframe.team
  • Hero Member
  • *
  • Beiträge: 2219
  • Bad command or file name
    • Profil anzeigen
(Kein Betreff)
« Antwort #3 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?
ka-clik
shink!

Offline mf|Lightfly

  • mainframe.team
  • Hero Member
  • *
  • Beiträge: 1365
    • Profil anzeigen
    • http://www.mframe.ch
(Kein Betreff)
« Antwort #4 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

Offline mf|Akron

  • mainframe.team
  • Hero Member
  • *
  • Beiträge: 2219
  • Bad command or file name
    • Profil anzeigen
(Kein Betreff)
« Antwort #5 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?
ka-clik
shink!

Offline mf|Lightfly

  • mainframe.team
  • Hero Member
  • *
  • Beiträge: 1365
    • Profil anzeigen
    • http://www.mframe.ch
(Kein Betreff)
« Antwort #6 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 - <span style="color: green;" class="bbc_color"><? if(isset($s)){ print "$s - "; } ?></span>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\">
";
            }

            ?>
http://www.swissquake.ch/aov"; target="_blank">


               
                  
               
               
               
               

                  
               
 

               
                  
                  
                  
               


                  
                  

                  


               
               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 "http://counter.softtech.ch/count.php?SID=372fd6ffd444e0a703c983396b092067\"; border=\"0\" width=\"1\" height=\"1\">"; }
                        // counter *******************************************************************
                     ?>

                     


                  


               
 


            


         


      


   


   
 


   

---------------------------------------------------SNAP------------

Offline mf|Akron

  • mainframe.team
  • Hero Member
  • *
  • Beiträge: 2219
  • Bad command or file name
    • Profil anzeigen
(Kein Betreff)
« Antwort #7 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?
ka-clik
shink!

Offline mf|Lightfly

  • mainframe.team
  • Hero Member
  • *
  • Beiträge: 1365
    • Profil anzeigen
    • http://www.mframe.ch
(Kein Betreff)
« Antwort #8 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!

Offline mf|Akron

  • mainframe.team
  • Hero Member
  • *
  • Beiträge: 2219
  • Bad command or file name
    • Profil anzeigen
(Kein Betreff)
« Antwort #9 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 ;)
ka-clik
shink!

Offline mf|Lightfly

  • mainframe.team
  • Hero Member
  • *
  • Beiträge: 1365
    • Profil anzeigen
    • http://www.mframe.ch
(Kein Betreff)
« Antwort #10 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

PHP

MySQL Server

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

Offline [SHHF]extremrams

  • Newbie
  • *
  • Beiträge: 42
    • Profil anzeigen
oje
« Antwort #11 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

Offline mf|Lightfly

  • mainframe.team
  • Hero Member
  • *
  • Beiträge: 1365
    • Profil anzeigen
    • http://www.mframe.ch
(Kein Betreff)
« Antwort #12 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. :)

Offline mf|Akron

  • mainframe.team
  • Hero Member
  • *
  • Beiträge: 2219
  • Bad command or file name
    • Profil anzeigen
(Kein Betreff)
« Antwort #13 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?
ka-clik
shink!

Offline Angelus@XP

  • Full Member
  • ***
  • Beiträge: 195
    • Profil anzeigen
    • http://www.earthgate.ch
(Kein Betreff)
« Antwort #14 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.