Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Funktionen aufrufen

  1. #1
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52

    Funktionen aufrufen

    Hi,

    Ich möchte folgendes realisieren:
    Ich habe ein HTML Formular diese ruft per action='seite.php/funktion' eine Seite auf wo die Daten des Formulars mit einer Funktion verarbeitet werden. In seite.php ist eine Funktion insert($var) deklariert. Diese sollte die Daten die per POST von HTML geschickt worden sind in eine MySQL Datenbank schreiben.


    Nun zum Problem:
    Wie kann ich nun im HTML Formular diese Funktion im PHP-Script aufrufen? Mit action=seite.php werden die Daten ja nur an seite.php geschickt und ich möchte gerne diese Daten dann in der Funktion verwenden.
    Die Variable $var steht dafür, von welchem Formular aus es geschickt worden war zum Beispiel vom Formular für das anlegen eines Benutzers oder von dem das ein Auftrag anlegt.
    Sprich in der Funktion "insert($var)" ist noch ein Switch-Case enthalten.


    Ich habe mal gelesen das es evtl. so gehen könnte seite.php?insert($var) oder so aber das funktioniert bei mir nicht

    Wisst ihr vielleicht wie man dies realisieren könnte?

    Vielen Dank euch schonmal im Voraus

    MFG
    Kevin Haag
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  3. #3
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    ***Doppelter Eintrag***
    Geändert von linuxjohnny (20-03-2009 um 22:32 Uhr)
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  4. #4
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    Hmm,
    Ok wenn es nicht mehr dazu gibt.

    Hier erst mal der Code ich werde weiter unten einige Fragne dazu schreiben:

    benutzer.php
    PHP-Code:
    <?php
        
    require("inc/func.inc.php");
        
    //require("inc/layout.inc.php");
        
    dbconnect();
        
    $var benutzer;
        
    html_head(Benutzer);
        echo
    "<form action='' method'GET'>
                <table width='300' border='0'>
                    <tr>
                        <td>Nachname:</td>
                        <td><input name='nachname' /></td>
                    </tr>
                    <tr>
                        <td>Vorname:</td>
                        <td><input name='vorname' /></td>
                    </tr>
                    <tr>
                    <tr>
                        <td>Strasse:</td>
                        <td><input name='strasse' /></td>
                    </tr>
                    <tr>
                        <td>PLZ:</td>
                        <td><input name='plz' /></td>
                    </tr>
                    <tr>
                        <td>Ort:</td>
                        <td><input name='ort' /></td>
                    </tr>
                    <tr>
                        <td>Telefon:</td>
                        <td><input name='telefon' /></td>
                    </tr>
                    <tr>
                        <td>E-Mail:</td>
                        <td><input name='email' /></td>
                    </tr>
                    <tr>
                        <td><input type='submit' name='senden' value='Weiter' /></td>
                        <td><input type='reset' value='Reset'</td>
                    </tr>
                </table>
            </form>
            "
    ;
        
    html_foot();
        if(isset(
    $_GET["senden"]))
                    {
                        
    $nachname $_GET["nachname"];
                        
    $vorname $_GET["vorname"];
                        
    $strasse $_GET["strasse"];
                        
    $plz $_GET["plz"];
                        
    $ort $_GET["ort"];
                        
    $telefon $_GET["telefon"];
                        
    $email $_GET["email"];
                        echo 
    "$nachname,$vorname,$strasse,$plz,$ort,$telefon,$email";
                        
    $sql "INSERT INTO benutzer (nachname,vorname,strasse,plz,ort,telefon,email)";
                        
    $sql .= "VALUES ($nachname,$vorname,$strasse,$plz,$ort,$telefon,$email)";
                        
    mysql_query($sql);
                        
    //weiterleiten();
                    
    }
    ?>
    func.inc.php
    PHP-Code:
    <?php

        
    function dbconnect()
        {
            
    mysql_connect("localhost","root","") or die ("Keine Verbindung möglich: ");
            
    mysql_select_db("faltschachtel") or die ("Die Datenbank existiert nicht");
        }
        
        function 
    uploader($datei)
        {
            
    //Wo sollen die Files gespeichert werden
            
    $tarPOST_path "../tmp/";
            
            
    $tarPOST_path $tarPOSTh_path basename($_FILES['$datei']['name']);
            
            if(
    move_uploaded_file($_FILE['$datei']['tmp_name'], $tarPOST_path))
            {
            echo 
    "Das File".basename($_FILE['$datei']['name'])."wurde erfolgreich hochgeladen";
            }
            else
            {
            echo 
    "Error";
            }
        }
        
        function 
    weiterleiten()
        {
            echo 
    "<br>";
            
    $time 2;
            echo 
    "<p>Sie werden in $time Sekunden weitergeleitet.</p>";
            echo 
    '<META HTTP-EQUIV="Refresh" CONTENT="'.$time.';URL=../schachel.php"> ';
        }
        
        function 
    insert($var)
        {
            switch (
    $var)
            {
                case 
    'benutzer':
                    if(isset(
    $_POST["senden"]))
                    {
                        
    $nachname $_POST["nachname"];
                        
    $vorname $_POST["vorname"];
                        
    $strasse $_POST["strasse"];
                        
    $plz $_POST["plz"];
                        
    $ort $_POST["ort"];
                        
    $telefon $_POST["telefon"];
                        
    $email $_POST["email"];
                        
    //echo "$nachname,$vorname,$strasse,$plz,$ort,$telefon,$email";
                        
    $sql "INSERT INTO benutzer (nachname,vorname,strasse,plz,ort,telefon,email)";
                        
    $sql .= "VALUES ($nachname,$vorname,$strasse,$plz,$ort,$telefon,$email)";
                        
    mysql_query($sql);
                        
    weiterleiten();
                    }
                    break;
                case 
    'auftrag':
                    echo 
    "Auftrag";
                    break;
                case 
    'schachtel':
                    if(isset(
    $_POST["senden"]))
                    {
                        
    $breite $_POST["breite"];
                        
    $hoehe $_POST["hoehe"];
                        
    $laenge $_POST["laenge"];
                        
    $anzahl $_POST["anzahl"];
                        
                        
    $sql "INSERT INTO schachtel (breite,hoehe,laenge,anzahl)";
                        
    $sql .= "VALUES ($breite,$hoehe,$laenge,$anzahl)";
                        
                        
    mysql_query($sql);
                        
                        
    weiterleiten();
                    }
                    break;
            }
        }
        
        function 
    html_head($title)
        {
            if (isset(
    $title))
            {
                echo 
    "
                    <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd'>
                        <html>
                        <head>
                            <title>
    $title</title>
                        </head>
                        <body>
                 "
    ;
            }else
            {
                 echo 
    'Der "Titel" Variable wurde nicht uebergeben';
            }
        }
        
        function 
    html_foot()
        {
            echo 
    "
                </body>
                </html>
             "
    ;
        }
    ?>
    Wie ihr nun sehen könnt habe ich z.B. HTML Code in PHP hinein geschrieben wie z.B. das Formular ist das sinvoll?
    Sprich wenn ich nun die Daten im selben Script weiterverarbeiten will funktioniert dies nicht mit POST sondern nur mit GET wo liegt hier der Unterschied?
    Hier könnt ihr nun auch die Funktion sehen die die Daten übernehmen und in die Datenbank speichern soll, gibt es also keine Möglichkeit diese Funktion in func.inc.php von benutzer.php aufzurufen?
    Was leider auch noch dazu kommt, das wenn die Daten dann im gleichen Script also benutzer.php per GET geholt werden und dann sollten diese ja in die Datenbank gespeichert werden, dies funktioniert auch nicht, was komisch ist wenn ich ein
    PHP-Code:
    echo $var1$var2$etc 
    also im Teil unter isset
    gibt er mir die Variabeln problemlos aus jetzt kann es ja nur noch an der Schreibweisse der $sql Variable liegen, aber diese sollte meins Wissens ebfalls richtig sein. Vielleicht handelt es sich ja aber auch um falsche Datentypen in der Datenbank:
    Code:
    -- phpMyAdmin SQL Dump
    -- version 3.1.1
    -- http://www.phpmyadmin.net
    --
    -- Host: localhost
    -- Erstellungszeit: 20. März 2009 um 23:29
    -- Server Version: 5.1.30
    -- PHP-Version: 5.2.8
    
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
    
    
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    
    --
    -- Datenbank: `faltschachtel`
    --
    
    -- --------------------------------------------------------
    
    --
    -- Tabellenstruktur für Tabelle `benutzer`
    --
    
    CREATE TABLE IF NOT EXISTS `benutzer` (
      `idbenutzer` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `nachname` text,
      `vorname` text,
      `strasse` text,
      `plz` int(10) unsigned DEFAULT NULL,
      `ort` text,
      `telefon` text,
      `email` text,
      PRIMARY KEY (`idbenutzer`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
    
    --
    -- Daten für Tabelle `benutzer`
    --
    Seht ihr vielleicht noch sonstige Fehler in denn Dateien?

    Sorry wenn ich euch da mit diesen vielen Fragen überhäufe aber leider verfüge ich noch nicht über richtig PHP Kenntnisse um das alles selbst herauszufinden.
    Erst mal Vielen Dank nochmals für eure Mühe!!!!

    MFG
    Kevin Haag
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  5. #5
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von linuxjohnny Beitrag anzeigen
    PHP-Code:
    $var benutzer;
    html_head(Benutzer); 
    Anführungszeichen benutzen, damit das nicht mit Konstanten verwechselt werden kann.

    Zitat Zitat von linuxjohnny Beitrag anzeigen
    PHP-Code:
    echo"<form action='' method'GET'> 
    = fehlt.
    Außerdem: http://www.w3.org/2001/tag/doc/whenT...html#checklist

    Zitat Zitat von linuxjohnny Beitrag anzeigen
    PHP-Code:
    $sql "INSERT INTO benutzer (nachname,vorname,strasse,plz,ort,telefon,email)";
    $sql .= "VALUES ($nachname,$vorname,$strasse,$plz,$ort,$telefon,$email)"
    Sicherheitslücke. Lies das alles:
    http://www.php.net/manual/en/security.php
    Vor allem dies: http://www.php.net/manual/en/securit...-injection.php

    Zitat Zitat von linuxjohnny Beitrag anzeigen
    PHP-Code:
    $tarPOST_path $tarPOSTh_path 
    Tippfehler.

    Zitat Zitat von linuxjohnny Beitrag anzeigen
    PHP-Code:
    if(isset($_POST["senden"])) 
    Wenn du das aufrufen würdest und im Formular GET steht, klappt das natürlich nicht, weil $_POST leer ist.

    Zitat Zitat von linuxjohnny Beitrag anzeigen
    PHP-Code:
    <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd'
    Du benutzt oben XHTML-Tags, sagst hier aber, dass du HTML nutzen willst.
    Außerdem ist der Doctype falsch: Da fehlen zwei ' zwischen "EN" und "http".

    Zitat Zitat von linuxjohnny Beitrag anzeigen
    Wie ihr nun sehen könnt habe ich z.B. HTML Code in PHP hinein geschrieben wie z.B. das Formular ist das sinvoll?
    Eigentlich nicht.

    Zitat Zitat von linuxjohnny Beitrag anzeigen
    Hier könnt ihr nun auch die Funktion sehen die die Daten übernehmen und in die Datenbank speichern soll, gibt es also keine Möglichkeit diese Funktion in func.inc.php von benutzer.php aufzurufen?
    Natürlich geht das. Einfach insert(...);
    Ist aber schlechtes Design, weil die Funktion globale Daten nutzt und du zwischen verschiedenen Funktionen per Parameter unterscheidest. Mach doch 3 Funktionen: insert_benutzer($nachname, $vorname, ...), ...

    Die Weiterleitung nervt die Besucher. Bau die Seite so, dass der Besucher gleich nach der Verarbeitung der Daten die Seite sieht, die er dann sehen will.
    Geändert von BLUESCREEN3D (21-03-2009 um 15:08 Uhr)

  6. #6
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    Ok vielen Dank für deine vielen Information.
    Noch eine zwei Fragen bevor ich alles umschreibe:
    Eigentlich nicht.
    Wie könnte ich es sonst lösen? Oder wie wird das normalerweise gelöst?
    Natürlich geht das. Einfach insert(...);
    Einfach Wo müsste dieser Befehl eingefügt werden sprich wenn dies eine Funktion ist wie sage ich dem HTML Formular das es diese Funktion aufrufen soll?

    MFG
    Kevin Haag
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  7. #7
    Registrierter Benutzer Avatar von linuxjohnny
    Registriert seit
    26.03.2008
    Beiträge
    52
    Ist das mit dem mysql_real_escape_string richtig so?

    PHP-Code:
    $sql "INSERT INTO `treiberdb`.`treiber` ( `typ`, `datum`, `version`, `groesse`, `pfad`, `id_betriebssystem`, `bem`) VALUES ('".$typ."','".$date."', '".$version."', '".$groesse."', '".$pfad."', '".$os."', '".$bem."')";
                
    mysql_real_escape_string($sql);
                
    mysql_query($sql) or die (mysql_error()); 
    MFG
    Kevin Haag
    Deshalb können Pinguine nicht fliegen: Was nicht fliegt, kann auch nicht abstürzen.

  8. #8
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von linuxjohnny Beitrag anzeigen
    Wie könnte ich es sonst lösen?
    Hier wäre ein Beispiel zu einer zusätzlichen Schicht:
    http://en.wikipedia.org/wiki/Multitier_architecture

    Zitat Zitat von linuxjohnny Beitrag anzeigen
    Wo müsste dieser Befehl eingefügt werden sprich wenn dies eine Funktion ist wie sage ich dem HTML Formular das es diese Funktion aufrufen soll?
    HTML kann nicht einfach PHP-Funktionen aufrufen. Mit HTML kannst du aber festlegen, welche PHP-Dateien abgerufen (und damit ausgeführt) werden, z.B. gibst du das bei einem Formular mit "action" an.
    Bei dir wird die benutzer.php selbst wieder aufgerufen, also muss da auch der Funktionsaufruf rein (da arbeitest du ja schon mit den Eingaben, und da kannst du auch die Funktion aufrufen).
    Hier ist eine Übersicht über den Ablauf zwischen Client (Browser) und Server: http://de.wikipedia.org/wiki/PHP#Allgemein

    Zitat Zitat von linuxjohnny Beitrag anzeigen
    Ist das mit dem mysql_real_escape_string richtig so?
    Nein, das soll einzelne Parameter escapen und nicht den ganzen Query:
    Code:
    VALUES ('".mysql_real_escape_string($typ)."', ...
    Mit Prepared Statements würde das Escapen übrigens automatisch durchgeführt werden.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •