Probleme beim Eintrag in die Datenbank

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
MaximilianB
Mitglied
Beiträge: 215
Registriert: 02.04.2005 12:44

Probleme beim Eintrag in die Datenbank

Beitrag 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
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Beitrag 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
There are only 10 types of people in the world: Those who understand binary, and those who don't
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag 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 ?
MaximilianB
Mitglied
Beiträge: 215
Registriert: 02.04.2005 12:44

Beitrag 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
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Beitrag 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
There are only 10 types of people in the world: Those who understand binary, and those who don't
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag 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...
Antworten

Zurück zu „Coding & Technik“