Claudia: Formular :-((

Hallo an alle die PHP verstehen und die mir etwas helfen wollen,

ich bin gerade dabei PHP zu lernen. Ich finde schon interessant, was man mit PHP alles so machen kann. Aber jetzt bin ich an einem Punkt angekommen, wo ich selber nicht mehr weiter kommen. jetzt wollte ich euch mal fragen, ob jemand von euch mir helfen kann.

wie kann ich das machen, dass ich etwas in eine Datenbank reinschreibe ? Also die Felder sind folgende: - Uservon - Useran - Nachricht - gelesen !!

So steht das in dem Buch drin :-((

Ein Script das eine Nachricht entgegen nimmt und in die Datenbank einträgt.

Wie muss soetwas aussehen ?

Das ihr auch mal wisst was das werden soll kann ich das auch mal noch sagen. Es soll so eine art Messenger für eine WebSeite werden.....

Liebe Grüße undbis später
Claudia

  1. Holladiewaldfee,

    Ein Script das eine Nachricht entgegen nimmt und in die Datenbank einträgt.

    Wie muss soetwas aussehen ?

    Da mußt Du Dich ein bißchen mit Datenbanken, SQL und den dazu passenden PHP-Funktionen befassen. Wenn Du z.B. MySQL einsetzen willst (eine freie Datenbank, die für die allermeisten Ansprüche genügt), helfen Dir z.B.

    http://www.mysql.com/doc/en
    http://de.php.net/mysql

    SQL-Tutorien gibts auch genügend im Netz:
    http://www.google.de/search?hl=de&ie=UTF-8&oe=UTF-8&q=tutorial+sql&btnG=Suche&meta=lr%3Dlang_de

    Das ihr auch mal wisst was das werden soll kann ich das auch mal noch sagen. Es soll so eine art Messenger für eine WebSeite werden.....

    Bevor Du sowas veröffentlichst sollte Du Dich ernsthaft mit den damit verbundenen Sicherheitsrisiken auseinandersetzen.

    Ciao,

    Harry

    --
      Die ideale Zeit für Firntouren:
      http://harry.ilo.de/projekte/berge/
    1. Hallo Harry,

      ich habe ja die Befehle schon geschrieben :-))

      mysql_db_query("db_name","INSERT INTO tbl_nachrichten (Uservon,Useran,Nachricht) VALUES ('" . $_POST["uservon"] . "','" . $_POST["uservon"] . "','" . $_POST["nachricht"] . "')");

      Das habe ich aus Büchern heraus. Ich weiß jetzt nur nicht wie ich das Formular machen muss. Muss ich das wie auch früher in HTML also ein ganz normales Formualr oder muss ich das schon anderes machen ?

      Gruß Claudia

      1. Holladiewaldfee,

        mysql_db_query("db_name","INSERT INTO tbl_nachrichten (Uservon,Useran,Nachricht) VALUES ('" . $_POST["uservon"] . "','" . $_POST["uservon"] . "','" . $_POST["nachricht"] . "')");

        Das habe ich aus Büchern heraus. Ich weiß jetzt nur nicht wie ich das Formular machen muss. Muss ich das wie auch früher in HTML also ein ganz normales Formualr oder muss ich das schon anderes machen ?

        Du kannst das Formular natürlich ganz normal in HTML schreiben. Die Namen der Felder müssen dabei so gewählt sein, daß sie mit den Variablen oben übereinstimmen.

        Ciao,

        Harry

        --
          Die ideale Zeit für Firntouren:
          http://harry.ilo.de/projekte/berge/
        1. Hallo Haary,

          hier habe ich jetzt mal ein ganz normales Formular gemacht :-)) Aber wo muss ich jetzt dann wo hinschreiben ?

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
          <title>Messenger</title>
          <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
          <link rel="stylesheet" href="../style.css">
          </head>
          <body>
          <h2><font color="#FF0000" size="3">Messenger - Message schreiben</font> </h2>
          <form name="newmsg" action="" method="post">
            <table border="0" cellspacing="3" cellpadding="0">
              <tr>
                <td width="100" valign="top"> <p>
                    <iframe width="0" height="0" frameborder="0" src="msg_rcp_check.php" name="checkframe"></iframe>
                    <strong><font size="3">Empfänger:</font></strong><br>
                    <input name="recipient" type="text" class="chatfields" id="recipient" value="">
                  </p> </td>
                <td><p>  </p></td>
              </tr>
              <tr>
                <td colspan="2"><p><strong><br>
                    <font size="3">Betreff</font>:<br>
                    <input name="betreff" type="text" class="chatfields" id="betreff" size="52" maxlength="25">
                    </strong></p>
                  <p><br>
                    <strong>Nachricht:</strong><br>
                    <textarea name="message" cols="55" rows="4" wrap="VIRTUAL" class="chatfields" id="message"></textarea>
                    <br>
                    <input name="fud_schigga" type="button" value="Senden" class="chatfields">
                  </p>
                  </td>
              </tr>
            </table>
            </form>

          </body>
          </html>

          1. hi,

            hier habe ich jetzt mal ein ganz normales Formular gemacht :-)) Aber wo muss ich jetzt dann wo hinschreiben ?

            du möchtest dich erst mal mit den grundlagen der formularverarbeitung in PHP beschäftigen.

            http://dclp-faq.de/ch/ch-webvariablen.html und http://tut.php-q.net/formulare.html sind zwei gute anlaufstellen dazu, die dir sicher weiterhelfen werden.

            gruss,
            wahsaga

  2. Hallo,

    wie kann ich das machen, dass ich etwas in eine Datenbank reinschreibe ? Also die Felder sind folgende: - Uservon - Useran -

    Nachricht - gelesen !!

    Grundsätzlich funktioniert das so:

    Verbindung zum Datenbankserver aufbauen:
    http://de.php.net/manual/de/function.mysql-connect.php

    Datenbank auf Server auswählen:
    http://de.php.net/manual/de/function.mysql-select-db.php

    MySQL-Query erstelle, hier: INSERT
    http://www.mysql.com/doc/de/HANDLER.html

    Query an Datenbank absetzen:
    http://de.php.net/manual/de/function.mysql-query.php

    So steht das in dem Buch drin :-((

    In welchen Buch? Möglicherweise funktioniert das nicht weil viele Bücher von einer veralteten Konfiguration des PHP-Moduls auf dem Server ausgehen. Das heisst Dein Buch-Script würde in dem Fall automatisch die Variablen $Uservon, $Useran, $Nachricht, $gelesen Deines Formulars kennen. Standardmässig ist aber seit PHP4.1irgendwas(?) der Parameter register_globals auf "off", das heisst Du musst die übergebenen Parameter erst in lokale Variablen schreiben. Stichwort für Dich $_POST, $_GET etc.. siehe auch http://de2.php.net/manual/de/reserved.variables.php

    Ich hoffe das Dir das ein wenig weiterhilft. Wenn nicht, wären noch ein paar Angaben zu Deinem bisherigen Script, Fehlermeldungen und Deine Versuche und an was es scheitere nicht schlecht :-)

    Grüsse AndreD

    1. Hallo AndreD,

      ich habe das Buch PHP 4 Grundwissen und Profiwissen :-) Kennst du das denn ? Also ich habe mit dem Formular noch gar nicht angefangen, weil ich nicht weiß wie ich das in PHP aufbauen soll. Also damit meine ich, wenn jemand auf einen Namen klickt ( Claudia ) dann soll ein PopUp Fenster aufgehen, wo man dem Namen ( Claudia ) dann eine Nachricht hinterlassen kann. Dafür nehme ich eine Datenbank um die daten zu speichern. Wenn dann die nachricht abgeschickt worden ist, dann soll bei dem anderne ein PopUp Fenster aufgehen wo dann kommt Du hast eine Nachricht erhalten. Oder es soll gleich die Nachricht kommen. Ich hoffe du verstehst was ich meine. Wenn nicht, dann frag mich einfach nochmals.....

      LG Claudia

      1. Hallo Claudia,

        ich habe das Buch PHP 4 Grundwissen und Profiwissen :-) Kennst du das denn ?

        Nope, das kenne ich nicht.

        Also ich habe mit dem Formular noch gar nicht angefangen, weil ich nicht weiß wie ich das in PHP aufbauen soll.

        Das Formular ist noch das kleinste Problem, das kann einfaches HTML sein das evt. je nach name einen Parameter entgegennimmt damit man auch weiss für wen die Nachricht gespeichert werden soll.

        Also damit meine ich, wenn jemand auf einen Namen klickt ( Claudia ) dann soll ein PopUp Fenster aufgehen, wo man dem Namen ( Claudia ) dann eine Nachricht hinterlassen kann. Dafür nehme ich eine Datenbank um die daten zu speichern.

        Ok, also das setzt natürlich voraus das Deine Namen bereits in einer Tabelle in der DB stehen. Jeder dieser hat eine eindeutige ID die am besten von der DB per auto_increment vergeben wird. So vermeidet man Überschneidungen, denn es könnten ja mal 2 oder 3 Claudias vorkommen, jede muss aber innerhalb der DB eindeutig identifizierbar sein.

        Aus dieser Tabelle in der DB erzeugst Du eine Liste auf der jeder Name mit einem Link versehen ist. Jeder Name hat den gleichen link, aber der link übergibt zusätzlich noch einen parameter. Am besten nimmt man da die eindeutige ID aus der DB. Also das Ergebnis könnte dann z.B. so aussehen:

        <a href="formular.php?id=1" onclick="window.open(blablabla..., formular.php?id=1); return false">Claudia</a>

        Bei Klick geht Dein popup auf und zeigt das Formular an. In ein hidden field wird der übergebene Parameter (hier: $_GET["id"]) reingesetzt. Bei Klick auf den Button wird Dein Script aufgerufen das den Eintrag vornimmt. Das Script bekommt neben den Eingaben auch die ID wieder mitgeliefert. So weiss das Script für wen der Eintrag in die DB geschrieben werden muss. Ich würde da übrigens eine extra Tabelle für die Einträge machen, da ja jeder User mehrere Nachrichten bekommen kann, für mich eine typische 1:n-Beziehung.

        Also das ist nur mal eine ganz grobe, mögliche Vorgehensweise wie man so was lösen könnte. Ich hoffe das hilft Dir weiter?

        Übrigens:

        Wenn dann die nachricht abgeschickt worden ist, dann soll bei dem anderne ein PopUp Fenster aufgehen wo dann kommt Du hast eine Nachricht erhalten. Oder es soll gleich die Nachricht kommen. Ich hoffe du verstehst was ich meine.

        Dir muss klar sein das Du mit serverseitigen Techniken (PHP o.ä.) keinerlei Einfluss auf die Clients hast wenn diese nicht selbst Seiten anfordern. Soll die Nachricht/Popup angezeigt werden wenn der betreffende User die Seite öffet/reloaded, dann geht das. Ist die Seite bereits offen, müsstest Du die Übersichtsseite quasi sekündlich refreshen... ist IMHO sehr krückig... Du kannst aber ohne Probleme demjenigen eine E-Mail schicken wenn dessen Adresse in der DB hinterlegt ist.

        Grüsse AndreD

        1. Hallo AndreD,

          << Ok, also das setzt natürlich voraus das Deine Namen bereits in einer Tabelle in der DB stehen. Jeder dieser hat eine eindeutige ID die am besten von der DB per auto_increment vergeben wird. So vermeidet man Überschneidungen, denn es könnten ja mal 2 oder 3 Claudias vorkommen, jede muss aber innerhalb der DB eindeutig identifizierbar sein <<

          Das habe ich schon gemacht, da kann ich ja die Tabelle in der Datenbank verwenden, wo sich der User Registriert hat oder etwa nicht ?

          << Das Formular ist noch das kleinste Problem, das kann einfaches HTML sein das evt. je nach name einen Parameter entgegennimmt damit man auch weiss für wen die Nachricht gespeichert werden soll. >>

          Hier habe ich mal ein Formular erstellt. Ist das so richtig ?

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
          <title>Messenger</title>
          <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
          <link rel="stylesheet" href="../style.css">
          </head>
          <body>
          <h2><font color="#FF0000" size="3">Messenger - Message schreiben</font> </h2>
          <form name="newmsg" action="" method="post">
            <table border="0" cellspacing="3" cellpadding="0">
              <tr>
                <td width="100" valign="top"> <p>
                    <iframe width="0" height="0" frameborder="0" src="msg_rcp_check.php" name="checkframe"></iframe>
                    <strong><font size="3">Empfänger:</font></strong><br>
                    <input name="recipient" type="text" class="chatfields" id="recipient" value="">
                  </p> </td>
                <td><p>  </p></td>
              </tr>
              <tr>
                <td colspan="2"><p><strong><br>
                    <font size="3">Betreff</font>:<br>
                    <input name="betreff" type="text" class="chatfields" id="betreff" size="52" maxlength="25">
                    </strong></p>
                  <p><br>
                    <strong>Nachricht:</strong><br>
                    <textarea name="message" cols="55" rows="4" wrap="VIRTUAL" class="chatfields" id="message"></textarea>
                    <br>
                    <input name="fud_schigga" type="button" value="Senden" class="chatfields">
                  </p>
                  </td>
              </tr>
            </table>
            </form>

          </body>
          </html>

          << Aus dieser Tabelle in der DB erzeugst Du eine Liste auf der jeder Name mit einem Link versehen ist. Jeder Name hat den gleichen link, aber der link übergibt zusätzlich noch einen parameter. Am besten nimmt man da die eindeutige ID aus der DB. Also das Ergebnis könnte dann z.B. so aussehen:

          <a href="formular.php?id=1" onclick="window.open(blablabla..., formular.php?id=1); return false">Claudia</a>

          Wie muss ich das denn erzeugen ?

          Liebe Grüße,
          Claudia

          1. Hallo Claudiam

            Das habe ich schon gemacht, da kann ich ja die Tabelle in der Datenbank verwenden, wo sich der User Registriert hat oder etwa nicht ?

            Ja, diese solltest Du eigentlich nehmen können.

            Hier habe ich mal ein Formular erstellt. Ist das so richtig ?

            Naja...

            <form name="newmsg" action="" method="post">

            hier gehört noch eine action rein, also das Script das die Daten von Deinem Formular empfängt

            Wie muss ich das denn erzeugen ?

            Na mit PHP vielleicht? ;-) Aus deinen Userdaten erzeugst Du Dir eine Liste mit einem Link der dann das Messageformular für den entsp. User aufruft.

            Mein Tipp: Gehe systematisch vor und löse ein Problem nach dem anderen. Ich würde an Deiner Stelle mit der Liste aller User aus Deiner DB anfangen. Also: Datenbankverbindung, DB wählen, Select-Query absetzen, Ergebnis in einer Schleife ausgeben, ggf. gleich einen Link wie geschildert erzeugen der auf Deine formular.php verweist. Dann würde ich die Formulargeschichte angehen....

            Grüsse AndreD