Funktions gedöhns

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

  • Funktions gedöhns

    Hallo!

    Habe ein funktion erstellt. Diese arbeitet auch schön.
    Nur möchte ich den inhalt der Variable aus einer anderen Datei in die Funktion mit einbeziehen.
    ich weiss das sowas üblicher Weise mit ($GLOBALS["blabla"])
    funkt. Aber in dem Fall nicht.
    Es handelst sich um folgende Befehlszeile:

    $eintrag="INSERT INTO $tab_data VALUES ('','$Name','$Titel','$Kommentar_HTML','$Mail','$Zeit')";

    Der Bereich $tab_data befindet sich in der anderen Datei ist ne wariable die als inhalt den Tabellennamen enthält.
    Wenn ich anstatt dem $tab_data den Tabellennamen angebe funktioniert es aber so nicht.

    Helft mir mal denke nicht das es all zu schwer ist (komm bestimmt nicht drauf)....
    cu

  • #2
    $Name','$Titel','$Kommentar_HTML','$Mail','$Zeit'

    function insert($Name,$Titel,$Kommentar_HTML,$Mail,$Zeit) {
    global $Titel;

    */ ( hier eventuell alle Variablen Globalisieren die die Funktion braucht ! ) */

    $eintrag="INSERT INTO $tab_data VALUES ('','$Name','$Titel','$Kommentar_HTML','$Mail','$Zeit')";

    return $eintrag;
    }

    Ich nehme mal an daß der eigentliche mysql_query in dem Script nach Aufruf der Funktion ausgeführt wird.
    Ansonsten fehlt noch ( nach $eintrag = ... ):
    if(!$rs = mysql_query($eintrag)) die("Fehler !");
    echo "eintrag OK";
    dann kannst du dir return $eintrag sparen.
    Ist auch übersichtlicher wenn der komplette Query in der Funktion steckt.


    ---
    @Raphael: Bitte keine kompletten Beiträge zitieren!

    [Editiert von Titus am 22-02-2002 um 09:34]
    [font=comic sans ms]ups, never mind,
    it´s just me[/font]

    Kommentar


    • #3
      Original geschrieben von SGBL
      Der Bereich $tab_data befindet sich in der anderen Datei ist ne wariable die als inhalt den Tabellennamen enthält.
      Wenn ich anstatt dem $tab_data den Tabellennamen angebe funktioniert es aber so nicht.
      Dir ist anhand deines nicht sehr umfangreichen Quelltext-Postings schwer zu helfen. Zu einem Fehler gehört meist mehr als die fehlerhafte Zeile.
      Aber bei mySQL ist es am einfachsten, erstmal mit der Funktion mysql_error anzufangen. Der folgende Schnipsel gibt dir aus, ob und was für ein Fehler auftritt:
      mysql_query($eintrag) or die("<hr>$eintrag: <b>".mysql_error()."</b>");
      Wenn es aber keine Fehlermeldung an sich gibt, mal nachschauen, ob der insert funktioniert hat:
      if (!($newid=mysq_insert_id())) die ("<hr>$eintrag: <b>no insert id</b>");
      (Die Meldung sollte eigentlich nicht kommen, aber wer weiss, welche php/mysql-Kombi dahinter steckt ...

      Ändere dein Skript mal dahingehend ab. Wenn du dann immer noch nicht weißt, wo dein Fehler herkommt, poste mal ein paar Zeilen über und unter der fehlerhaften Zeile. (und eventuell die Ausgabe die von den die-Befehlen oben gemacht wird!)
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        funzt immernoch nicht

        Also machen wir das anders mal ganz von vorne....

        function post($Name,$Titel,$Kommentar,$Mail,$Zeit) {

        $Kommentar_HTML = $Kommentar;
        $Kommentar_HTML = preg_replace("/(\015\012)|(\015)|(\012)/","&nbsp;<br
        />", $Kommentar_HTML);

        if(db_connect()) {
        $eintrag="INSERT INTO $tab_data VALUES ('','$Name','$Titel','$Kommentar_HTML','$Mail','$Zeit')";
        $erg_ein=mysql_query($eintrag);
        if($erg_ein)
        return true;
        else {
        echo mysql_error();
        return false;
        }
        }
        else {
        echo "Verbindung nicht möglich!";
        return false;
        }
        }

        So das ist nun die Funktion.
        Und um diese Zeile dreht sich das ganze...
        $eintrag="INSERT INTO $tab_data VALUES ('','$Name','$Titel','$Kommentar_HTML','$Mail','$Zeit')";
        WENN dies so ist kann er sich unter $tab_data nichts vorstellen, wenn aber die Zeile geändert wird auf...
        $eintrag="INSERT INTO news_data VALUES ('','$Name','$Titel','$Kommentar_HTML','$Mail','$Zeit')";
        funktioniert das Script.
        Nun wollte ich aber das es über eine Datei verwaltbar ist
        Diese Datei heisst config.inc und dort ist die Variable
        $tab_data="news_data";
        Mir hatte mal einer erklärt das ich innerhalb einer Funktion die Variablen die ausserhalb liegen mir ($GLOBALS["tab_data"]) (in dem Fall dachte ich) aufrufen müsste. Aber wie schon erwähnt funkt nicht.
        Bekomme auch keine Fehlermeldung die Seite bleibt einfach nur schwarz.

        Kommentar


        • #5
          da fehlt ein: global $tab_data;
          und zwar als erster Befehl innerhalb der Funktion.
          Vorrausgestzt config.php wird in das Script in dem die Funktion aufgerufen wird auch eingebunden
          [font=comic sans ms]ups, never mind,
          it´s just me[/font]

          Kommentar


          • #6
            Cool hat gefunzt. Danke schonmal...
            Allerdings habe ich nun den gleichen Trick in der anderen funktion benutzt und dies macht er nicht.


            function auslesen_benutzerdaten($username,$name,$mail) {

            $GLOBALS["tab_user"];

            if(db_connect()) {
            $abfrage="SELECT * FROM $tab_user WHERE bname='".$username."'";
            $erg_abf=mysql_db_query($GLOBALS["dbname"],$abfrage);
            return $erg_abf;
            }
            }

            Was hab ich falsch gemacht bzw. wieso klappts bei der ersten function und bei der 2. hier nicht?

            Kommentar


            • #7
              Schau dir mal im PHP-Handbuch das Kapitel über Geltungsbereich von Variablen an; insbesonder den dritten Beispiel (grauer Kasten).

              Da siehst du, wie mann dass Schlüsselwort global benutz, und in dem Text darunter wird genau beschrieben was passiert.
              mein Sport: mein Frühstück: meine Arbeit:

              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

              Kommentar

              Lädt...
              X