[PHP/MySQL] Anmeldeforumlar

Tab

unlimited
ID: 374854
L
26 Juni 2007
900
71
Hallo liebe Klammcommunity,

ich bin gerade dabei ein kleines Anmeldescript zu erstellen, doch habe ich ein Fehler.

PHP:
<?php
   if (isset($_POST["gesendet"]))
   {
         include("inc/inc.php"); //einfügen der Mysql-Verbindung
         
      $sqlab = "insert into mitglieder"; //erstellen eines neuen Datensatzes, 
      $sqlab .= "(name, vorname, position,";
      $sqlab .= " passwort) values ";
      $sqlab .= "('" . $_POST["na"] . "', ";
      $sqlab .= "'" . $_POST["vo"] . "', ";
      $sqlab .= $_POST["po"] . ", ";
      $sqlab .= "'" . $_POST["pw"] . "')";

      mysql_query($sqlab);

      $num = mysql_affected_rows();
      if ($num>0)
      {
         echo "<font color='#00aa00'>";
         echo "Es wurde 1 Datensatz hinzugefügt<p>";
         echo "</font>";
      }
      else
      {
         echo "<font color='#ff0000'>";
         echo "Es ist ein Fehler aufgetreten, ";
         echo "es wurde kein Datensatz hinzugefügt<p>";
         echo "</font>";
      }
   }
?>

<form method="post" action="anmelden.php">
  <label>Name
  <input type="text" name="na">
  </label>
  <p>
    <label>Vorname
    <input type="text" name="vo">
    </label>
  </p>
  <p>
    <label>Position
    <input type="text" name="po">
    </label>
  </p>
  <p>
    <label>Passwort
    <input type="password" name="pw">
    </label>
  </p>
  <p>
    <label>
    <input type="submit" name="gesendet" value="Senden">
    </label>
  </p>
</form>
<p> </p>

Da kommt dann immer der Fehler:
PHP:
Es ist ein Fehler aufgetreten, es wurde kein Datensatz hinzugefügt

Nun frage ich mich, was ich am Script falsch gemacht habe? Bin sehr neu auf dem Gebiet.

Zudem habe ich noch ein anderes Script, welches ich sogar besser finde, was aber sehr unverständlich für mich ist.

PHP:
<?php

 if ( isset($_REQUEST["do"]) && $_REQUEST["do"] == "insert" )
   {
           
    $error_msg    =    "";    
    
    if ( $_REQUEST["na"] == "" )
    {
        $error_msg    =    "Bitte geben Sie einen Namen an.<br>";
    }
    
    if ( $_REQUEST["vo"] == "" )
    {
        $error_msg    .=    "Bitte geben Sie einen Vornamen an.<br>";
    }
    
    if ( $_REQUEST["po"] == "" )
    {
        $error_msg    .=    "Bitte geben Sie eine Position an.<br>";
    }
        if ( $_REQUEST["pw"] == "" )
    {
        $error_msg    .=    "Bitte geben Sie ein Passwort an.<br>";
    }
    if ( $error_msg    == "")
    {
     

$status    =    mysql_connect("localhost", "root", "");
        
        if ( ! $status )
        {
            die("Konnte die Datenbank nicht erreichen!");
        }
        
        $status    =    mysql_select_db("pferde");
        
        if ( ! $status )
        {
            die("Konnte die Datenbank nicht &ändern: " . mysql_error() );
        }


      $query = "INSERT INTO mitglieder SET name='" . $_REQUEST["na"] . "', vorname='" . $_REQUEST["vo"] . "', position='".$_REQUEST["po"] ."', passwort='" . $_REQUEST["pw"] . "'";
  $result    =    mysql_query( $query );
        
        if ( ! $result )
        {
        die("Konnte den Datensatz nicht eintragen: " . mysql_error() );
        }
        else{
    
         echo "<font color='#00aa00'>";
         echo "Es wurde 1 Datensatz hinzugefügt<p>";
         echo "</font>";
      }
     
   }

  
   }
?>
<?php
        if ( $error_msg != "")
        {
        echo $error_msg;
        }
    ?>
<form method="post" action="<?php echo $_REQUEST["PHP_SELF"]; ?>">
  <label>Name
  <input type="text" name="na">
  </label>
  <p>
    <label>Vorname
    <input type="text" name="vo">
    </label>
  </p>
  <p>
    <label>Position
    <input type="text" name="po">
    </label>
  </p>
  <p>
    <label>Passwort
    <input type="password" name="pw">
    </label>
  </p>
  <p>
    <label>
    <input type="hidden" name="do" value="insert">
      <input type="submit" name="gesendet" value="Senden" border="0">
    </label>
  </p>
</form>
<p> </p>

Diese geht, doch verstehe ich es nicht so genau, bitte um Hilfe.


Liebe Grüße und vielen dank schonmal im voraus,
Markus
 
Zu deinem Problem: mysql_error()
Zu deinem zweiten Code guck dir mal die Funktion empty() an, damit wird der Code schöner :)
Und nochn Tipp: Sicher das Script gegen SQL-Injections ab.
 
Danke für deine schnelle Antwort. Ich bin gerade erst beim lernen, daher kann ich mit Sicherheit noch nicht viel anfangen, hast vllt. ein gutes tut für das mysql injections?

So beim ersten bin ich imemr noch nicht weiter, der Fehler bleibt der gleiche.

Kleine Frage wie wende ich mysql_error() an?
 
Ok, vielen dank, ihr habt ja recht, war wirklich bisschen zu einfach gemacht von mir.

Habe nun diesen Fehler bekommen.

PHP:
  1046: No database selected
Hmm also Keine Datenbank ausgewählt?
 
Ah ok, habe mal nach meinem neuen Fehler gegoogled jedoch ohne erfolg.

Unknown column 'Mitglied' in 'field list'

Liebe Grüße
Markus
 
In der Tabelle gibts keine Spalte Mitglied.

Du könntest die Fehler auch einfach übersetzen, und du wüsstest schon was los ist. Dafür muss man nichtmal ne große Ahnung haben :roll:
 
Ja, danke, habes übersetz wurde daraus aber nicht schlau. Weil eine Tabelle mitglied soll und gibt es auch nicht. ALso Mitglied gibt es nicht, nur Mitglieder.
 
Es geht ja auch nicht um die Tabelle Mitglied sondern um das Feld mitglied ind er Tabelle Mitglieder ;)

*edit*
Da wohl wohl jemand das liebe Forenmitglied flaschenkind :p schneller *gg
 
Zuletzt bearbeitet:
Ok, ich glaube ihr seht was was ich nicht sehe.
Ich erkläre nochmal alles.

Ich habe mir per phpmyadmin eine DB pferde erstellt. Dann in der DB Mitglieder erstellt, wo dann wiederum id, name, vorname, position drin ist.
Nun weiß ich wirklich nicht genau was ihr mit Mitglied meint?

Liebe Grüße
Markus
 
Zuletzt bearbeitet:
Datenbank -> Tabelle -> Feld
(engl.: database -> table -> column)

In der Fehlermeldung geht es um ein Feld. Das Feld "mitglied" existiert nicht, weil du ja - wie du sagst - nur die Felder id, name, vorname und position hast.
 
Mir ist aufgefallen, dass immer ein der fehler angezigt, wird, was in dem input position eingetragen wird.

Das heißt schriebe ich in position aaa rein kommt dieser Fehler.

1054: Unknown column 'aaaa' in 'field list' Es ist ein Fehler aufgetreten, es wurde kein Datensatz hinzugefügt

Hmm könnt ihr mir helfen? Finde echt den Fehler nicht.
 
In Zeile 11 fehlen die einfachen Anführungszeichen, deshalb funktionierts nicht...

Code:
 (...)
      $sqlab = "insert into mitglieder"; //erstellen eines neuen Datensatzes, 
      $sqlab .= "(name, vorname, position,";
      $sqlab .= " passwort) values ";
      $sqlab .= "('" . $_POST["na"] . "', ";
      $sqlab .= "'" . $_POST["vo"] . "', ";
      $sqlab .= "'" . $_POST["po"] . "', ";
      $sqlab .= "'" . $_POST["pw"] . "')";
(...)

btw. sehr unübersichtlicher Quellcode, würde ich meine großen Scripte so schreiben, wüsste ich nach der Hälfte der Arbeiten schon gar nicht mehr, was was ist!
 
Ah ok, danke ja bin noch am lernen, werde jetzt alles beschriften.

Meine letzte Frage ist, wie ich das amche, dass er ein fehler anzeigt, wenn nicht alles ausgefüllt ist. Denn nun kann ich auch wenn kein Passwort angegeben ist, mich registrieren.
 
Mit Abfragen?
Also bevor du das in der Datenbank speicherst, erst einmal schauen ob in dem Feld Passwort was eingetragen wurde oder nicht.

Ich empfehle dir ein PHP Tutorial durchzulesen, da werden deine aktuellen Sachen alle behandelt.
Das auf www.php-einfach.de finde ich sehr gut.
 
Ok, danke für die vielen antworten.

PHP:
<?php

 if ( isset($_REQUEST["do"]) && $_REQUEST["do"] == "insert" )
   {
           
    $error_msg    =    "";    
    
    if ( $_REQUEST["na"] == "" )
    {
        $error_msg    =    "Bitte geben Sie einen Namen an.<br>";
    }
    
    if ( $_REQUEST["vo"] == "" )
    {
        $error_msg    .=    "Bitte geben Sie einen Vornamen an.<br>";
    }
    
    if ( $_REQUEST["po"] == "" )
    {
        $error_msg    .=    "Bitte geben Sie eine Position an.<br>";
    }
        if ( $_REQUEST["pw"] == "" )
    {
        $error_msg    .=    "Bitte geben Sie ein Passwort an.<br>";
    }
    if ( $error_msg    == "")
    {
     

$status    =    mysql_connect("localhost", "root", "");
        
        if ( ! $status )
        {
            die("Konnte die Datenbank nicht erreichen!");
        }
        
        $status    =    mysql_select_db("pferde");
        
        if ( ! $status )
        {
            die("Konnte die Datenbank nicht &ändern: " . mysql_error() );
        }


      $query = "INSERT INTO mitglieder SET name='" . $_REQUEST["na"] . "', vorname='" . $_REQUEST["vo"] . "', position='".$_REQUEST["po"] ."', passwort='" . $_REQUEST["pw"] . "'";
  $result    =    mysql_query( $query );
        
        if ( ! $result )
        {
        die("Konnte den Datensatz nicht eintragen: " . mysql_error() );
        }
        else{
    
         echo "<font color='#00aa00'>";
         echo "Es wurde 1 Datensatz hinzugefügt<p>";
         echo "</font>";
      }
     
   }

  
   }
?>
<?php
        if ( $error_msg != "")
        {
        echo $error_msg;
        }
    ?>
<form method="post" action="<?php echo $_REQUEST["PHP_SELF"]; ?>">
  <label>Name
  <input type="text" name="na">
  </label>
  <p>
    <label>Vorname
    <input type="text" name="vo">
    </label>
  </p>
  <p>
    <label>Position
    <input type="text" name="po">
    </label>
  </p>
  <p>
    <label>Passwort
    <input type="password" name="pw">
    </label>
  </p>
  <p>
    <label>
    <input type="hidden" name="do" value="insert">
      <input type="submit" name="gesendet" value="Senden" border="0">
    </label>
  </p>
</form>
<p> </p>

Diese Variante gefällt mir super, weil sie auch Anzeiggt, wennn man nicht alls ausgefüllt hat, nun wieß ich nicht wie das geht, kann mir jemand eine kleine Beschreibung/Erklärung geben?

Liebe Grüße
Markus