[PHP] WO ist der Fehler

04/10/2010 18:28 .BritainAndy#1
Hi Leute,

ich bin ein absoluter Laien in sachen PHP und wollt mir einfahc maln Simples Regi script Scripten o.O

Nur irgendwie ist hier ein fehler , wer kann mir sagne wo ^^

Config.php

PHP Code:
 <?php 

        $mysql_host     
"localhost";
        
$mysql_user     "root";
        
$mysql_pass     "";
        
$mysql_db    "account";
        
mysql_connect($mysql_host$mysql_user$mysql_pass) OR
        die(
"Es konnte keine Verbindung zur Datenbank hergestellt werden.. <br /> Fehler: ".mysql_error());    
        
        
mysql_select_db($mysql_db) OR
        die(
"Die Verbindung zur Tabelle 'account' war nicht erfolgreich. <br /> Fehler: ".mysql_error()); 
?>
Ps: Die Daten sind alle Richtig bei Config.php


regi.php

PHP Code:
<?php

include('config.php');
if(isset(
$_POST['submit']) && $_POST['submit'] == 'Register'

$username mysql_real_escape_string($_POST['username']);
$sql "INSERT INTO account SET user = '".$username."'";

$result mysql_query($sql);
if(
$result) { echo 'Du hast erfolgreich einen Account erstellt!<br>Willkommen! '$username; }



?>

index.htm

PHP Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Test</title>
</
head>

<
body>
<
form action="regi.php" >
<
li>Benutzername:<font color="red">*</font></li>
                    <
li><input type="text" name="username" size="30" /></li>
                    <
li>&nbsp;</li>
 <
li><input type="submit" name="submit" value="Register" /></li>
 
 
</
body>
</
html

Also ich beschrib das Problem mal näher :

Es kommt eine Textbox wo ich was eingeben kann, da geb ich z.b. TEST ein. Dann drück ich auf submit, abe rnix passiert o.O

Ps: Hier mal mein Datenbank script damit ihr seht, ob etwas an der db falsch von mir ist o.o

account.sql

PHP Code:

SET FOREIGN_KEY_CHECKS
=0;
-- ----------------------------
-- 
Table structure for `account`
-- ----------------------------
DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (
  `
idint(11NOT NULL DEFAULT '0',
  `
uservarchar(50) DEFAULT NULL,
  
PRIMARY KEY (`id`)
ENGINE=MyISAM DEFAULT CHARSET=latin1
Bitte helft mir, ich verzweifle schon :D
04/10/2010 23:28 tim66613#2
Ich würd' mal sagen, dass in der regi.php der Fehler ist.
(Hab schon lange nichts mehr mit PHP gemacht).

Probiers mal so:
Code:
require_once('config.php'); // Muss nicht sein

if(isset($_POST['submit']) && $_POST['submit'] == 'Register') {
	$username = mysql_real_escape_string($_POST['username']);
	$sql = "INSERT INTO account (user) VALUES ('".$username."')";

	$result = mysql_query($sql);
	if($result)
		echo 'Du hast erfolgreich einen Account erstellt!<br>Willkommen! ', $username;
}
Außerdem würd' ich dir empfehlen das Feld 'id' zu einem AUTO_INCREMENT Feld zu machen.
SQL:
Code:
DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
MfG tim
04/11/2010 01:50 d3pr1#3
sorry falsche hilfe geleistet...
04/11/2010 09:36 Fratyr#4
Dein SQL Query ist schlicht und einfach falsch.

PHP Code:
"INSERT INTO account SET user = '".$username."'" 
PHP Code:
"INSERT INTO
    account 
        (user)
VALUES
    ('"
.$username."')" 
Auserdem hast du in dieser Zeile hier einen Fehler gemacht:

Code:
echo 'Du hast erfolgreich einen Account erstellt!<br>Willkommen! '[COLOR="Red"],[/COLOR] $username;
Anstelle eines Kommas muss da ein Verkettungsoperator (Punkt) hin.
Nebenbei gibt man der ID in einer Datenbank üblicherweise einen Primary
Key und ein Auto increment ;) Wieso lässt du die Klammerung bei deinem
If Statement weg? Das tut man üblicherweise nur wenn unter dem IF nur
eine Kleinigkeit zu regeln ist und das tut man dan auch mit der kurzen
If Anweisung. Und es ist ein ziemlich unsauberer Programmierstil.

Quote:
guck dir nur den aufbau des tabellen script und der sache nach dem 2ten kommentar im regi script
an ist sehr anders aufgebaut und ich habe deinen code nur schnell durchgelesen und vieles geskipped
Und vor allem hast du wenig Ahnung. Registrationen können so verschieden aussehen wie Tag
und Nacht. Das von dir gepostete Script würde ich mir nebenbei nicht als Vorlage nehmen.
04/11/2010 11:22 .BritainAndy#5
@ Tim:

Danke , das du mir helfen willst und hier gepostet hast (=. Ich werd jetzt
PHP Code:
DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (
  `
idint(11NOT NULL AUTO_INCREMENT,
  `
uservarchar(50) DEFAULT NULL,
  
PRIMARY KEY (`id`)
ENGINE=MyISAM DEFAULT CHARSET=latin1
nutzen.

@Fratyr:

Danke für deine ganzen Verbesserungen und kritik bzw. Ratschläge.

PHP Code:
"INSERT INTO
    account 
        (user)
VALUES
    ('"
.$username."')" 
Das hab ihc noch nie gesehen dass man statt
PHP Code:
set 
einfach die Tabelle in Klammern schreibt und dann
PHP Code:
VALUES 
benutzt. Danke o.O , ist irgendwie leichter so.

Du meintets wieso ich die klammerung bei meinem IF statement weglasse, welches ifstatement meinst du denn?
das hier?

PHP Code:
if(isset($_POST['submit']) && $_POST['submit'] == 'Register'
Wo fehlt dnen da was o.O

Danke für eure Hilfen
04/11/2010 12:40 Fratyr#6
Wenn du was in eine SQL Tabelle eintragen willst ist das schon richtig so. SET wird
beispielsweise verwendet um bestehende Datensätze zu updaten. Das in den Klammern
ist btw nicht die Tabelle sondern der Spaltenname. Ich habe dir hier mal 2 wie ich finde
recht nützliche Links rausgesucht die dir diese beiden Statements ein wenig näherbringen.

[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

w3schools ist auch eine sehr gute Anlaufstelle für solche Probleme. Mit deiner
Klammerung meine ich die geschweiften Klammern um den Inhalt des If Statements
das du auch in einem Zitat gepostet hast ;)

EDIT: nochmal zu deiner SQL Tabelle, bist du sicher das der User kein Passwort
braucht? =)
04/11/2010 12:48 .BritainAndy#7
Dankeshcön, ich hab aber noch ne frage :D

bei de, SQL Insert beispiel ist folgendes:

PHP Code:
INSERT INTO Persons (P_IdLastNameFirstName)
VALUES (5'Tjessem''Jakob' 
z.b. bei ner registration, woher soll der user wissen, was für eine P_ID schoin belegt ist?
kann man irgendwie wa smachen, dass die P_ID von alleine gewählt wird? aích hoffe du verstehst was ich meine :P
04/11/2010 12:56 Fratyr#8
Die lässt du einfach weg. Der Primary Key verhindert das ein Wert zweimal vergeben
wird, und das AutoIncrement bei ID setzt immer den nächst höheren Wert. Heißt
soviel wie du gibst bei deinem INSERT nur die Spalten an die du auch brauchst, in
deinem Fall nur der User. Es ist nicht nötig alle Spalten anzugeben, die die du nicht
in deinem SQL Statement verwendest werden dan einfach mit einem NULL bzw.
einem vorher angegebenen Standartwert versehen.
04/11/2010 13:07 .BritainAndy#9
Okay, hast du evtl. ein Chatprogramm? DU bist ziemlich gut :D ist besser als hier zu fragen.

SO noch ein problemchen o.O^^
Wird ja langsam schon peinlich^^

bekomme bei der registration wenn ich auf Submit klicke diesen Error im Browser:

PHP Code:
Parse errorparse errorexpecting `','' or `';'' in C:\xampp\htdocs\selfmade\regi.php  on line 13 
Dabei sieht meine regi.php so aus:

PHP Code:
<?php

require_once('config.php');
if(isset(
$_POST['submit']) && $_POST['submit'] == 'Register'

$username mysql_real_escape_string($_POST['username']);
$passwort mysql_real_escape_string($_POST['passwort']);

$sql1 "INSERT INTO User (user, passwort)
VALUES ('"
.$username."', '".$passwort."')";

$result mysql_query($sql);
if(
$result) { echo 'DU hast deinen Account erfolgreich erstellt' };
?>
04/11/2010 13:09 Fratyr#10
Quote:
Okay, hast du evtl. ein Chatprogramm? DU bist ziemlich gut ist besser als hier zu fragen.
Jap, MSN und ICQ.

Zu deinem Fehler. Du hast ein Semikolon nach einem Echo vergessen. Du solltest dir
wirklich einen saubereren Programmierstil zulegen ;)

Code:
if($result) { echo 'DU hast deinen Account erfolgreich erstellt'[B][COLOR="Red"];[/COLOR][/B] };
04/11/2010 13:18 eXidal#11
<form action="regi.php" method="post">

Woher soll der wissen wie er die Daten verschicken soll ;)
04/11/2010 13:52 .BritainAndy#12
Quote:
Originally Posted by eXidal View Post
<form action="regi.php" method="post">

Woher soll der wissen wie er die Daten verschicken soll ;)
Danke, meine Rettung (=
04/15/2010 13:46 Pain1234#13
evtl. solltest du hierraud mal nen blick werfen:
[Only registered and activated users can see links. Click Here To Register...]