Fehler im Script!

Horus

Aktives Mitglied
Hi,
habe in script geschrieben. und da ist irgendwo ein fehler! nur finde ich ihn nicht.
Hir das script:QUOTE <html>
<head>
<title>Userverwaltung</title></head>
<body>
<div align=center>

<?php

require('connect.php');
$tabellenname='user';

//anlegen eines neuen Users
if($sent==1)
{
$sql="INSERT INTO $tabellenname () VALUES () ";
mysql_query($sql ,$link);
if(mysql_insert_id()>0)
{
$ID=mysql_insert_id();
$meldung="Der Neue User wurde angelegt<br>";
}
else
{
$meldung="Es konnte kein neuer User angelegt werden. Bearbeiten sie zuvor neu angelegte User,
und ändern Sie den Username, bevor Sie einen weiteren
neuen User anlegen.<br>";}
}

//Speichern der bearbeiteten Userinformationen
if($sent==2)
{
if($kwort!='' AND (stralen($kwort)<6 OR stralen($kwort)>12))
{
$meldung.="Das Kennwort hat nicht die Richtige Länge<br>";
unset($kwort);
}
$sql="UPDATE $tabellenname SET ";
if($kwort);
{
$kwort2=md5($kwort);
$sql .=" kwort='$kwort2', ";
}
$sql .=" username='$username', ";
$sql .=" admin='$admin7, ";
$sql .=" beschreibung='$beschreibung' ";
$sql .=" WEHRE ID='$ID' ";
$test=mysql_query($sql,$link);
if($kwort!='' AND !$test){$meldung.="Die Änderung konnte nicht gespeichert
werde, das alte Kennwort ist noch gültig<br>";}
if($kwort!='' AND $test){$meldung.="Das neue Kennwort - $kwort - ist jetzt gültig<br>";}
}

//löschen eines Users
if($sent==3)
{
$sql="DELETE FROM $tabellenname WHERE ID=$ID ";
mysql_query($sql ,$link);
unset($ID);
}

echo "<h2><font color=blue>$meldung</font></h2>";

//Auslesen der vorhandenen User und Auswalformular anzeigen
$sql="SELECT * FROM $tabellenname ORDER BY username ";
$result=mysql_query($sql,$link);
if(mysql_num_rows($result)>0)
{
echo "<h2>Bitte den User zum Bearbeiten asuwählen</h2>";
echo "<from action='$PHP_SELF' method='post'>";
echo "<select name='ID'>";
for($i=0;$i<myslq_num_rows($result);$i++)
{
$ID1=mysql_result($result,$i,'ID');
$uname=mysql_result($result,$i,'uname');
echo "<option value=$ID1";
if($ID==$ID1){echo " select ";}
echo ">$uname";
}
echo "</select><br><br>";
echo "<input type=submit>";
echo "</from>";
}

//Das Fromular zum Bearbeiten
if($ID)
{
$sql="SELECT * FROM $tabellenname WHERE ID=$ID ";
$result=mysql_query($sql,$link);
if(mysql_num_rows($result)==1)
{
$ID1=mysql_result($result,0,'ID');
$username1=mysql_result($result,0,'username');
$kwort1=mysql_result($result,0,'kwort');
$admin1=mysql_result($result,0,'admin');
$beschreibung1=mysql_result($result,0,'beschreibung');
echo "<h2>Bitte den User $username1 bearbeiten</h2>";
echo "<from action='$PHP_SELF' method='post'>";
echo "<input type=hidden name=sent value=2>";
echo "<input type=hidden name=ID value=$ID1>";
echo "<p>Benuzername</p>";
echo "<input type=text name=username value='$username1'>";
echo "<p>Kennwort <br><font color=red>Bitte leer lassen, wenn es nicht geändert werden soll!</font></p>";
if($kwort1=='kennwort'){echo "<p><font color=red size=+1>Sie müssen das Kennwort noch angeben, damit der
User sich anmelden kann!</font></p>";}
echo "<input type=text name=kwort value=''>";
echo "<p>Beschreibung</p>";
echo "<input type=text name=beschreibung value='$beschreibung1'>";
echo "<p>Administrator</p>";
echo "<input type=radio name=admin value=-1 ";
if($admin==-1){echo " checked ";}
echo ">NEIN --- ---";
echo "<input type=radio name admin value=1 ";
if($admin==1){echo " checked ";}
echo ">JA";
echo "<br><br><input type=submit>";
echo "</from>";

echo "<br><a herf='$PHP_SELF?sent=3&ID=$ID1'><font size=+1>Den angezeigten User löschen</font></a>";

}}

echo "<br><a herf='$PHP_SELF?sent=1'><font size=+1>Ein neuer User anlegen</font></a>";

?>


</div>
</body>
</html>


so ud so siet das ganze bei mir aus:
da steht nur "Ein neuer User anlegen"!!

findet von euch jemand den fehler?

besten dank für die mitsuche

horus
 
Ciao

Vielleicht solltest du uns erleuchten und sagen, was es überhaupt machen sollte, wenns denn funktionieren würde. Wie rufts du die Seite auf ? Besteht die Möglichkeit, dass $sent nicht 1 ist ?
So rein nackt, find ich den Code super und der macht auch was er soll, nähmlich CODE echo "<br><a herf='$PHP_SELF?sent=1'><font size=+1>Ein neuer User anlegen</font></a>";

Oder ist der Fehler, dass du herf anstelle von href schreibst ?

Gruss
Roger
 
ist der code eines adminmenüs

danke mal schauen ob der fehler nun weg ist.

es ist besser aber man siet doch nicht mehr!
 
Habe auch so meine Mühe:
Beim ersten Aufruf des Scriptes existiert die Variable $sent ja noch gar nicht.
Also werden alle If-Schleifen übersprungen.
Da kann und darf auch nicht mehr stehen als "Ein neuer User anlegen"

Ein Klick darauf gibt der Variable $sent ja erst einen Wert, nämlich 1.

Auch die Variable $ID existiert beim ersten Aufruf noch nicht. Logischerweise wird auch diese Schlaufe übersprungen.

Bei Klick auf den Link "Ein neuer User anlegen" kriege ich dann logischerweise etliche Fehlermeldungen, weil ich ja weder die connect.php noch eine entsprechende Datenbank im Test habe.

Aaaaber auch den Text "Es konnte kein neuer User angelegt werden. Bearbeiten sie zuvor neu angelegte User, und ändern Sie den Username, bevor Sie einen weiteren neuen User anlegen." wird angezeigt.

Also:
Solange die Variablen des If-Argumentes nicht vorhanden sind, werden die If-Schleifen nicht abgearbeitet.

Hoffe, das hilft
 
QUOTE Bei Klick auf den Link "Ein neuer User anlegen" kriege ich dann logischerweise etliche Fehlermeldungen, weil ich ja weder die connect.php noch eine entsprechende Datenbank im Test habe.


die connect.php habe ich schon angelegt was heist das die verbindung zur datenbank io ist.

nun habe mal auf den likn "Einneuer user anlegen" geklickt und dan kamm nur
"Es konnte kein neuer User angelegt werden. Bearbeiten sie zuvor neu angelegte User, und ändern Sie den Username, bevor Sie einen weiteren neuen User anlegen."


was soll ich tun wie kann ich das alles zum laufen bringen? kann ich mit einem script in der datenbank unabhängig einen user anlegen? und wen ja mit welchem?

 
Natürlich kannst Du neue User anlegen, dazu muss aber Dein SQL-Statement auch Werte übergeben.
Jetzt lautet Dein SQL-Statement so:
CODE INSERT INTO user () VALUES ()
Oder anders gesagt :
Füge nichts in kein Feld der Tabelle "user" ein.
biggrin.gif

Verstehst Du? Hier fehlen Werte!
So muss das sein:

CODE INSERT INTO user (username, password) VALUES ("foo", "bar")
Die Namen der Datenfelder habe ich jetzt frei erfunden. Du musst dort natürlich die richtigen Namen einsetzen. Das Klammerpaar vor "VALUES" enthält die Feldnamen der Tabelle. Das Klammerpaar nach "VALUES" enthält die einzufügenden Werte in derselben Reihenfolge und der gleichen Anzahl wie die Feldnamen.

Natürlich kann in den Klammern auch ein Variablen-Wert stehen, also so:

CODE INSERT INTO $tabellenname ($FeldA, $FeldB) VALUES ($Name, $Passwort)
Dann müssen aber natürlich diese Variablenwerte vorher explizit definiert werden.
$FeldA und $FeldB kannst Du zusammen mit $tabellenname definieren, denn die ändern sich ja nie. Es sind die Datenfelder der Tabelle.

$Name und $Passwort jedoch muss irgendwo her einen Wert erhalten.

Klar jetzt?
 
jup ein wenig!!!

aber wo ist den der teil:
CODE
INSERT INTO user () VALUES ()

???

 
Das glaube ich jetzt nicht, oder?
biggrin.gif

QUOTE
aber wo ist den der teil:


Hier ist er, in der ersten Schleife:

CODE
//anlegen eines neuen Users
if($sent==1)
{
$sql="INSERT INTO $tabellenname () VALUES () ";
mysql_query($sql ,$link);
if(mysql_insert_id()>0)
{
....


Beim Klicken auf den Link "Ein neuer User anlegen" wird ja der Wert $sent zu 1, also wird die Schleife if($sent==1) abgearbeitet. Und genau in dieser Schleife verlangst Du von der Datenbank, dass sie nichts nirgendwohin speichert.
wink.gif
 
stimmt sorry habe im falschen script nachgeschaut!!! *lol*
habe zu viele offen!

was bedeutet wenn ich da einen benuzername und paswort reinschreine sollte das genen?
 
Ausprobieren mach Dich schlau.
Nochmal:
das SQL-Statement muss so aussehen:
CODE INSERT INTO $tabellenname (Feld1, Feld2) VALUES ("Wert für Feld1", "Wert für Feld2")
Danach liefert Dir nämlich auch "if(mysql_insert_id()>0)" einen Wert höher als 0 sofern Du in der Tabelle ein autoincrement-Feld hast.
Wenn kein autoincrement-Feld in der Tabelle ist, dann liefert "mysql_insert_id" immer 0, was diese kleine Schleife hier:

CODE
if(mysql_insert_id()>0)
{
$ID=mysql_insert_id();
$meldung="Der Neue User wurde angelegt<br>";
}

ad absurdum führen würde und Du immer die Meldung erhältst, der User sei nicht angelegt worden, auch wenn das Anlegen erfolgreich war.
Doch das weisst Du sicher.
smile.gif
 
Zurück
Oben