Zurück   Flashforum > Flash und Server > Server-Seite allgemein

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-10-2007, 14:02   #1 (permalink)
decks&drums&rock&roll
 
Registriert seit: Sep 2003
Beiträge: 72
Daten in DB schreiben

Hallo,

ich versuche eine (eiegntlich) ganz einfache Sache. Ich möchte Daten aus einen Formular in die Datenbank schreiben lassen.

Der Code für das Form:
PHP-Code:
<td><form enctype='multipart/form-data' action='eingabe_test.php' method='post' name='formular1'
                        
onSubmit='return chkFormular()'><input type='text' name='Datum' maxlength='100' size='50'></td>
    </
tr>
    <
tr
      <
td>Betrag</td>
      <
td><form enctype='multipart/form-data' action='' method='post' name='formular1' 
                       
onSubmit='return chkFormular()'><input type='text' name='Betrag' maxlength='100' size='50'></td>
    </
tr>
    <
tr
      <
td>Laden</td>
      <
td><form enctype='multipart/form-data' action='' method='post' name='formular1' 
                       
onSubmit='return chkFormular()'><input type='text' name='Laden' maxlength='100' size='50'></td>
    </
tr>
    <
tr
      <
td>Teilnehmer</td>
      <
td><form enctype='multipart/form-data' action='' method='post' name='formular1' 
                       
onSubmit='return chkFormular()'><input type='text' name='Teilnehmer' maxlength='100' size='50'></td>
    </
tr>
      <
td><input name='submit' value='Submit' type='submit'></td>
    </
tr
So, oben in der Aktion habe ich eingabe_test.php eingeben, du diese Datei hat folgendes drin:
PHP-Code:
$eintrag "INSERT INTO liste (Datum, Betrag, Laden, Teilnehmer) VALUES ('$Datum', '$Betrag', '$Laden', '$Teilnehmer')";
      
$eintragen mysql_query($eintrag); 
Das geht sogar auch.
Ich möchte aber das der Post befehl in der gleichen Datei (in diesem Fall index.php) mit ausgeführt wird.

habe schon probiert: action='index.php?schreiben=los'

und unten nach dem formular:

PHP-Code:
if ($schreiben== "los")  //--- in die Datenbank schreiben!!!
{
$eintrag "INSERT INTO liste (Datum, Betrag, Laden, Teilnehmer) VALUES ('$Datum', '$Betrag', '$Laden', '$Teilnehmer')";
      
$eintragen mysql_query($eintrag);
        echo 
"<table width='80%' border='0' cellpadding='0' cellspacing='3' align='center' class='dotted' bgcolor='#FFDCA6'>
        <tr>
            <td align='center' class='abstand'><font class='schwarz'><img src='images/info.gif' width='32' height='32'>&nbsp;&nbsp;&nbsp;<b>The entry is successfully created!<br />Please click on the link below to go to the entry-menu again.</b><br /><br /><img src='images/pfeil3.gif' width='9' height='9'>&nbsp;&nbsp;<a href='?admin=section&aktion=schreiben'>Go to the entry-menu</font></td>
        </tr>
          </table>"
;

Diese Variante funktioniert aber leider nicht.
Was mache ich mit dem Aktions Befehl in Form oder ist das ein Fehler durch Post??

Gruss

Kid
kidloco ist offline   Mit Zitat antworten
Alt 17-10-2007, 14:33   #2 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
1.)
PHP-Code:
<form enctype='multipart/form-data' action='eingabe_test.php' method='post' name='formular1' 
warum steht das so viele male in deinem Code? Ein Formular um deine ganze Tabelle drumrum reicht. Das enctype kannst auch gleich löschen, das wird nur gebraucht wenn du ein Upload-Feld in deinem Formular hast.

2.) Du hast hier in jedem Formularfeld ein onsubmit() drin. Dies brauchst du eigentlich nur auf dem Submit-Button.

3.)
Zitat:
Ich möchte aber das der Post befehl in der gleichen Datei (in diesem Fall index.php) mit ausgeführt wird.
In diesem Fall kannst du das action-Attrubut des Formulars einfach leer lassen

4.)
REGISTER_GLOBALS. Auf Daten welche von anderen Seiten verschickt werden nicht direkt zugreifen sondern über das dafür vorgesehene Array $_GET oder $_POST.

5.)
Zitat:
$eintragen = mysql_query($eintrag);
ersetzen mit
PHP-Code:
$eintragen mysql_query($eintrag)or die( mysql_erorr() ); 
6.)
Auch wenn du die Daten vom Client über JavaScript filterst ist dies noch lange nicht sicher genug. Da kann dir jeder trotzdem schicken was er will. Die Daten also unbedingt erst noch mit PHP prüfen bevor du sie mir nichts dir nichts in die Datenbank schreibst.

7.)
Zitat:
if ($schreiben== "los")
Hier kannst du einfach über $_POST['submit'] prüfen:
PHP-Code:
if( isset( $_POST['submit'] ) ){ 
Fazit: Noch viel Arbeit vor dir
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 17-10-2007, 16:36   #3 (permalink)
decks&amp;drums&amp;rock&amp;roll
 
Registriert seit: Sep 2003
Beiträge: 72
danke nightflyer.

habe jetzt mal etwas den code optimiert:

PHP-Code:
<?php
include("db_connect.php");

echo 
"
    
    <table width='80%' border='0' cellpadding='0' cellspacing='0' align='center' class='dotted'>
    <tr> 
      <td>Datum</td>
      <td><form action='' method='post' name='formular1'><input type='text' name='Datum' maxlength='100' size='50'></td>
    </tr>
    <tr> 
      <td>Betrag</td>
      <td><form name='formular1'><input type='text' name='Betrag' maxlength='100' size='50'></td>
    </tr>
    <tr> 
      <td>Laden</td>
      <td><form name='formular1'><input type='text' name='Laden' maxlength='100' size='50'></td>
    </tr>
    <tr> 
      <td>Teilnehmer</td>
      <td><form name='formular1'><input type='text' name='Teilnehmer' maxlength='100' size='50'></td>
    </tr>
      <td><input name='submit' value='Submit' type='submit'></td>
    </tr>
       </table>
    
    <table width='80%' border='0' cellpadding='0' cellspacing='3' align='center'>
    <tr>
      <td >Existing entrys in your database:</td>
    </tr>
    <tr> 
      <td >Datum</font></td>
      <td >Betrag</font></td>
      <td >Laden</font></td>
      <td >Teilnehmer</font></td>
    </tr>"
;

$abfrage "SELECT * FROM liste ORDER BY id DESC";
        
$ergebnis mysql_query($abfrage);
        while(
$row mysql_fetch_object($ergebnis) or die (mysql_error()))
        {
        echo 
"<tr> 
              <td ><b>$row->Datum</b></td>
              <td ><b>$row->Betrag</b></td>
              <td ><b>$row->Laden</b></td>
              <td ><b>$row->Teilnehmer</b></td>
             
                 </tr>"
;
        }

if( isset( 
$_POST['submit'] ) ) //----- Habe ich so wie du (Nightflyer) geschrieben hast
{
$eintrag "INSERT INTO liste (Datum, Betrag, Laden, Teilnehmer) VALUES ('$Datum', '$Betrag', '$Laden', '$Teilnehmer')";
      
$eintragen mysql_query($eintrag)or die( mysql_erorr() );  
        echo 
"<table width='80%' border='0' cellpadding='0' cellspacing='3' align='center' class='dotted' bgcolor='#FFDCA6'>
        <tr>
            <td align='center' class='abstand'><font class='schwarz'><img src='images/info.gif' width='32' height='32'>&nbsp;&nbsp;&nbsp;<b>The entry is successfully created!<br />Please click on the link below to go to the entry-menu again.</b><br /><br /><img src='images/pfeil3.gif' width='9' height='9'>&nbsp;&nbsp;<a href='?admin=section&aktion=schreiben'>Go to the entry-menu</font></td>
        </tr>
          </table>"
;
}
?>
Mit der Sicherhiet hast du natürlich absolut recht.
Nur würde ich es jetzt gerne ersteinmal hinbekommen, dass die daten auch in die db geschrieben werden, sicherheit mache ich danach fertig.

Es ist etwas länger das ich das letzte mal mit PHP solche sachen gemacht habe und daher ärgert es mich das ich das nicht hinbekomme. Ich verstehe einfach nciht mehr, wie das mit der Übergabe der Formular Daten im gleiche Script geht.

Er trägt aber immer noch keine Daten in die DB ein.

Danke für einen weiteren Tipp

Kid

Geändert von kidloco (17-10-2007 um 16:38 Uhr)
kidloco ist offline   Mit Zitat antworten
Alt 17-10-2007, 21:23   #4 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Du hast einfach immer noch zuviele form-Tags. Daher wenn du das Formular abschickst wird nur das form-Tag wirklich abgeschickt welches als letztes angefangen wurde. Mach mal so (hab noch etwas formatiert):

PHP-Code:
<?php
error_reporting
E_ALL );
include(
"db_connect.php");
?>

<form action='' method='post' name='formular1'>  
  
    <table width='80%' border='0' cellpadding='0' cellspacing='0' align='center' class='dotted'>
        <tr> 
            <td>
                Datum
            </td>
            <td>
                <input type='text' name='Datum' maxlength='100' size='50'>
            </td>
        </tr>
        <tr> 
            <td>
                Betrag
            </td>
            <td>
                <input type='text' name='Betrag' maxlength='100' size='50'>
            </td>
        </tr>
        <tr> 
            <td>
                Laden
            </td>
            <td>
                <input type='text' name='Laden' maxlength='100' size='50'>
            </td>
        </tr>
        <tr> 
            <td>
                Teilnehmer
            </td>
            <td>
                <input type='text' name='Teilnehmer' maxlength='100' size='50'>
            </td>
        </tr>
            <td>
                <input name='submit' value='Submit' type='submit'>
            </td>
        </tr>
    </table>
    
</form>
        
<table width='80%' border='0' cellpadding='0' cellspacing='3' align='center'>
    <tr>
        <td >
            Existing entrys in your database:
        </td>
    </tr>
    <tr> 
        <th>
            Datum
        </th>
        <th>
            Betrag
        </th>
        <th>
            Laden
        </th>
        <th>
            Teilnehmer
        </th>
    </tr>

<?
$abfrage 
"SELECT * FROM liste ORDER BY id DESC";
$ergebnis mysql_query($abfrage)or die ( mysql_error() );

while( 
$row mysql_fetch_object$ergebnis )){
    
?>
    <tr> 
        <td >
            <strong><?=$row->Datum;?></strong>
        </td>
        <td >
            <strong><?=$row->Betrag;?></strong>
        </td>
        <td >
            <strong><?=$row->Laden;?></strong>
        </td>
        <td >
            <strong><?=$row->Teilnehmer;?></strong>
        </td>
    </tr>
    <?
}

if( isset( 
$_POST['submit'] ) ){
    
    
$Datum mysql_real_escape_string$_POST['Datum'] ); //Text
    
$Betrag = (int) $_POST['Betrag']; //Zahl
    
$Laden mysql_real_escape_string$_POST['Laden'] ); //Text
    
$Teilnehmer = (int) $_POST['Teilnehmer']; //Zahl
    
    
    
$eintrag "INSERT INTO liste (Datum, Betrag, Laden, Teilnehmer) VALUES ('".$Datum."', '".$Betrag."', '".$Laden."', '".$Teilnehmer."')";
    
$eintragen mysql_query($eintrag)or die( mysql_error() );
     
    
?>
    
    <table width='80%' border='0' cellpadding='0' cellspacing='3' align='center' class='dotted' bgcolor='#FFDCA6'>
        <tr>
            <td align='center' class='abstand'>
                <span class='schwarz'>
                <img src='images/info.gif' width='32' height='32'>&nbsp;&nbsp;&nbsp;<strong>
                The entry is successfully created!<br />
                Please click on the link below to go to the entry-menu again.</strong><br />
                <br />
                <img src='images/pfeil3.gif' width='9' height='9'>&nbsp;&nbsp;
                <a href='?admin=section&aktion=schreiben'>Go to the entry-menu
                </span>
            </td>
        </tr>
    </table>
    
    <?
}
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 18-10-2007, 20:13   #5 (permalink)
decks&amp;drums&amp;rock&amp;roll
 
Registriert seit: Sep 2003
Beiträge: 72
Alter du bist echt super! Vielen Dank Nightflyer.

Da muss ich wohl noch etwas üben, um so souverän zu sein wie du, aber das ist doch mal ein Ziel

Gruss Kid
kidloco ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele