Seite 1 von 1

Probleme beim Eintrag in die Datenbank

Verfasst: 11.07.2005 17:49
von MaximilianB
Hi!
Ich hab n Problem mit ner Selbstgeschriebenen PHP-Datei. Es soll aus dem Feld user_verwarnung die Verwarnungsanzahl in der Datenbank ausgelesen werden. Diese wird in einer Tabelle dem entsprechenden User zugeordnet. Funktioniert auch ohne Probleme. Dann hat man die Möglichkeit per Dropdownmenü einen User auszuwählen. Bei diesem soll dann der Verwarnungszähler um einen Erhöht werden. Dies funzt jedoch nicht. Hier der Quelltext:

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Verwarnstatus der User</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
</head>
<body>
<b>Hier der Verwarnstatus der User</b>:<br>
<table border="1">
<tr>
<th>Nickname</th>
<th>
Anzahl Verwarnungen
</th>
</tr>
<?php
mysql_connect("localhost","maximilianb","/* PW ENTFERNT */");
mysql_select_db("maximilianb");
$sql="select * from phpbb_users where username<>\"Anonymous\" ";
$result=mysql_query($sql);
while ($row=mysql_fetch_assoc($result)){
echo "<tr> <td>$row[username]</td> <td>$row[user_verwarnung]</td> </tr>\n";
}
//mysql_close();
?>
</table>
<br><br><br><br><br><br>
<b>Verwarnung eintragen:</b><br>
<form action="verwarnung.php" method="post">
Username: 
<select name="name">
<?php
mysql_connect("localhost","maximilianb","/* PW ENTFERNT */");
mysql_select_db("maximilianb");
$sql="select * from phpbb_users where username<>\"Anonymous\"";
$result=mysql_query($sql);
while ($row=mysql_fetch_assoc($result)) {
echo "<option> $row[username] </option> \n";
}
?>
</select><br><br>
<input type="submit" value="Dem User eine Verwarnung verpassen">
</form><br><br>
<? if (isset($_POST['name'])) {
$sql="select * from phpbb_users where username=\"$_POST[name]\""; 
$result=mysql_query($sql);
$row=mysql_fetch_assoc($result);
$row['user_verwarnung']=$vw;
$vw++;
$sql="UPDATE phpbb_users SET user_verwarnung=$vw WHERE username='$_POST[name]'<br>";
echo $sql;
if (mysql_query($sql))
{
echo "Verwarnung erfolgreich eingetragen";
}
else { echo "<span style=\"color: red\">Fehler beim Eintragen der Verwarnung!!!</span>"; }
}
mysql_close() 
?>
</body>
</html>
Das Feld user_verwarnung existiert in der Tabelle phpbb_users, als Standartwert ist 0 gesetzt.

Hoffe mir kann jemand helfen.

LG,
Max

Verfasst: 11.07.2005 23:00
von D@ve
Bitte
a) eine genaue Problembeschreibung liefern
b) genau beschreiben was (nicht) passiert und welche Fehlermeldungen kommen
c) den Quelltext auf den relevanten Teil kürzen
d) das Script möglichst verlinken

Gruß, Dave

Verfasst: 12.07.2005 13:20
von Blutgerinsel
Ist das Problem vll.

Code: Alles auswählen

$row['user_verwarnung']=$vw; 
$vw++;
Logik:
- Du hast die Spalte user_warning eingelesen
- Du weisst $row['user_warning'] einen wie es den anschein hat eine undefinierte Var $vw zu.
- Demzufolge ist $vw=0 und wird dann um eines inkrementiert, so dass $vw stets 1 hat....

Trifft das das Problem?

BTW: Warum baust du einen PHPBB Mod ohne Templateengine ?

Verfasst: 13.07.2005 18:40
von MaximilianB
Okok,
also:

a) Das Script schafft es nicht die Verwarnungsanzahl zu updaten.

b)
Es wird zwar die SQL-Anweisung richtig ausgegeben, allerdings wird diese nicht richtig ausgeführt, d.h. das Update in der Datenbank wird nicht ausgeführt.
Bis auf die Prüfung, ob alles richtig läuft [ if (mysql_query($sql))... ] gibt es keine Fehlermeldung, es wird auch nicht mit @ unterdrückt.

c)

Code: Alles auswählen

 if (isset($_POST['name'])) {
$sql="select * from phpbb_users where username=\"$_POST[name]\""; 
$result=mysql_query($sql);
$row=mysql_fetch_assoc($result);
$vw=$row['user_verwarnung'];
$vw++;
$sql="UPDATE phpbb_users SET user_verwarnung=$vw WHERE username='$_POST[name]'<br>";
echo $sql;
if (mysql_query($sql))
{
echo "Verwarnung erfolgreich eingetragen";
}
else { echo "<span style=\"color: red\">Fehler beim Eintragen der Verwarnung!!!</span>"; }
}
d) Hier ist der Link

Warum keine Templatedateien existeren?
Ganz einfach: Ich möchte zuerst das Script schreiben und danach die Templatedateien erstellen. (Oder ist das Falsch??)


Max

Verfasst: 13.07.2005 22:34
von D@ve
Wenn ein UPDATE-Kommando nicht ausgeführt wird gibt es drei Möglichkeiten:
a) Syntax Fehler in php
b) Semantischer Fehler in php
c) Syntax-Fehler im query
d) Semantischer Fehler im query

a) können wir denke ich ausschließen, wenn Du sicher bist, dass nirgendwo ein @ vor einem Befehl steht und in der php.ini das Error-Reporting vernünftig konfiguriert ist.

b) wäre zu überprüfen. Sind die Variablen korrekt, steht vor dem mysql_qery irgendwo eine if-Bedingung

c) schonmal geschaut was MySQL für Fehlermeldungen ausspuckt?

d) Exisitiert die Bedingung im WHERE-Clause überhaupt?

Gruß, Dave

Verfasst: 14.07.2005 14:55
von Blutgerinsel
schmeiss dieses Zeug hier raus:

Code: Alles auswählen

if (mysql_query($sql)) 
{ 
echo "Verwarnung erfolgreich eingetragen"; 
} 
else { echo "<span style=\"color: red\">Fehler beim Eintragen der Verwarnung!!!</span>"; } 
}
und ersetze es mit

Code: Alles auswählen

@mysql_query($sql) or die('<font color="red">SQL Error: <b>'.mysql_error().'</b></font>');
printf('Es wurde(n) <b>%s</b> Datens&auml;tz(e) upgedatet',mysql_affected_rows() );
BTW: Du nutzt auch die DB Class von PHPBB nicht...