Einige Fragen

Einstein-511

Mitglied
Moin

Ich hab ein zwei Fragen bzüglich PHP

1. Ich habe eine User-Mysqldatenbank. Dort möchte ich die letzte Id auslesen und +1 und dann in einer Variable speichern

2. Wie kann ich bei einem Formular Pflichfelder angeben?
 
1. SELECT id + 1 FROM users ORDER BY id DESC LIMIT 1;


2. Was meinst du mit Pflichtfelder einfügen? Sowas musst du mit einer serverseitigen Sprache prüfen. Du erstellst einfach ein Formular, in dem die Pflicht-Felder z.B. mit CSS hervorgehoben werden, um dem Benutzer zu signalisieren, das es Pflichtfelder sind. Im PHP-Code prüfst du dann, ob die Felder ausgefüllt worden.
 
Das 1ste muss in eine Variable geschrieben werden und ich hab Ka wie das geht :D

Hier mal das Script:


register.php
PHP:
<?php
include "inc/config.php";
include "inc/languare.php";
include "tpl/header.tpl";

@mysql_connect($sqlhost, $sqluser, $sqlpassword) OR die(mysql_error());
mysql_select_db($sqldb) OR die(mysql_error());

echo '<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1"> <tr> <td width="100%"><center>'.$brregisterdisc.'</center> <br> </td> </tr> </table>';

echo '<form method=post action=register2.php>
'.$brregisteruser.' <input type="text"name="username" size="15"> <br>
'.$brregisteremail.' <input type="text" name="email" size="15"> <br>
'.$brregisterpsw.' <input type="password" name="password" size="15"> <br>
'.$brregisternex.'<br> <br>
'.$brregistersig.' <input type="text" name="signatur" cols="50" rows="10" maxlength="500"> <br>
'.$brregisterutitle.' <input type="text" name="usertitle" size="15" maxlength="30"> <br>
<input type=submit value=Absenden>
</form>';

?>

register2.php

PHP:
<?php
include "inc/config.php";
include "register.php";

$date = date("d.m.Y");

mysql_connect($sqlhost, $sqluser, $sqlpassword) or die("Keine Verbindung möglich!");
mysql_select_db($sqldb) OR die(mysql_error());

mysql_query('SELECT id FROM users ORDER BY id DESC LIMIT 0,1');
$newid = intval($row['id']) + 1;

$eintrag = "INSERT INTO users (id, username, email, password, groupid, emailreg, banned, signatur, usertitle, regdate) VALUES ('$newid','$nachname', '$email', '$password', '2', '0', '0', '$signatur', '$usertitle', '$date')" or die("Fehler!");
mysql_query($eintrag);

echo "Herlichen Glückwunsch sie wurden Registriert!";
?>
 
Ich vermute mal, du willst nen neuen Datensatz einfügen, und benötigst für den neuen Datensatz eine ID, richtig?

Wenn das so ist, schlage ich vor, du verwendest für die Spalte ID das Flag auto_increment, welches automatisch dafür sorgt, das dein Datensatz eine neue ID bekommt. Als Wert im MySQL-Query zum einfügen verwendest du für die ID-Spalte einfach NULL:

PHP:
$eintrag = "INSERT INTO users
(id, username, email, password, groupid, emailreg, banned, signatur, usertitle, regdate)
VALUES
(NULL,'$nachname', '$email', '$password', '2', '0', '0', '$signatur', '$usertitle', '$date')"; // WAS SOLL DAS HIER? or die("Fehler!");
 
Also bei Auto_increment kommt in MYsql der Fehler:

MySQL meldet:
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

Außerdem werden die Variablen aus der register.php nicht in die MYSQL Datenbank einfetragen :(
 
Also als erstes musst die Spalte natürlich als PRIMARY-KEY definieren, dann kannst du erst AUTO_INCREMENT aktivieren. Mit phpMyAdmin alles kein Problem. Mit SQL:

ALTER TABLE users ADD PRIMARY KEY (id);
ALTER TABLE users CHANGE id id int not null auto_increment;
 
Super das hat geklappt :)

Aber warum übernimmt er das Eingegebene aus der register.php nicht? Er soll ja auch speichern was ich eingegeben habe Oo"
 
Zurück