PHP Formular mit Checkbox (SQL Abfrage) verhält sich komisch
Marc R.
- php
Hallo, ich bin es mal wieder.
Ich habe ein Problem mit meinem PHP Formular bzw. den Abfragen meiner SQL Datenbank. Soweit funktioniert alles.
Beispielinhalt Datenbank:
ID: 01
IDUser: NutzerName1 (IDuser)
Kommentar: Test123 (kommentar)
Kommenar-Anzeigen: 1 (allow)
ID: 10
IDUser: NutzerName2 (IDuser)
Kommentar: Test123 (kommentar)
Kommenar-Anzeigen: 0 (allow)
ID: 21
IDUser: NutzerName3 (IDuser)
Kommentar: Test123 (kommentar)
Kommenar-Anzeigen: 0 (allow)
Soweit so gut, wenn ich in meinem Searchform eine Anfrage stelle bekomme ich von der SQL-Datenbank auch alle "Werte" richtig angezeigt. Alle Drei Beispiel Inhalte werden korrekt dargestellt. Jetzt kann ich mittels Checkbox eine "ID" auswählen oder auch mehrere und entweder auf "anzeigen" oder auf "ausblenden" drücken, sodass der entsprechende Kommentar bzw. ID dann eine 1 bzw 0 bei "Kommentar-Anzeigen" bekommt.
Das funktioniert nur bei einstelligen IDs.
Wenn ich bei ID 10 (Nutzer2) auf anzeigen klicke passiert nix. Wenn ich dann auf ausblenden klicke wird die ID 01 (Nutzer1) auf einmal ausgeblendet.
Bei den zweistelligen IDs passiert garnichts. Egal ob anzeigen oder ausblenden, obwohl ich die richtige SQL-ID mir habe anzeigen lassen (direkt nach der Checkbox in Klammern). Es scheint, als wenn die erste intiger Zahl nur ausgewertet wird....
Was stimmt den da nicht, kann mir den Fehler nicht erklären...
Anbei mein Script, vielleicht weiß jemand mehr wie ich, Dr. Google und Forum habe ich durchsucht...
MfG
Marc
<?php
include 'dbc.php';
page_protect();
if(!checkAdmin()) {
header("Location: login.php");
exit();
}
$page_limit = 10;
$host = $_SERVER['HTTP_HOST'];
$host_upper = strtoupper($host);
$login_path = @ereg_replace('admin','',dirname($_SERVER['PHP_SELF']));
$path = rtrim($login_path, '/\\');
// filter GET values
foreach($_GET as $key => $value) {
$get[$key] = filter($value);
}
foreach($_POST as $key => $value) {
$post[$key] = filter($value);
}
$rs_all = mysql_query("select count(*) as total_all from bewertung where allow='1' ") or die(mysql_error());
$rs_active = mysql_query("select count(*) as total_active from bewertung where allow='1'") or die(mysql_error());
list($all) = mysql_fetch_row($rs_all);
list($active) = mysql_fetch_row($rs_active);
?>
<html>
<head>
<title>Administration Main Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="styles.css" rel="stylesheet" type="text/css">
<script language="JavaScript" type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<style type="text/css">
<!--
.Stil1 {color: #FF0000}
-->
</style>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="14%" valign="top"><?php
if (isset($_SESSION['user_id'])) {?>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<div class="myaccount">
<p><a href="logout.php">Logout </a></p>
</div>
<?php }?>
</td>
<td width="74%" valign="top" style="padding: 10px;"><h2 align="center"><font color="#FF0000">Administrations
Seite</font><span class="Stil1"> - Bewertungsanzeige Tool </span></h2>
<table width="100%" border="0" cellpadding="5" cellspacing="0" class="myaccount">
<tr>
<td><div align="center">Angezeigte Kommentare: <?php echo $all;?></div></td>
</tr>
</table>
<p></p>
<table width="80%" border="0" align="center" cellpadding="10" cellspacing="0" style="background-color: #E4F8FA;padding: 2px 5px;border: 1px solid #CAE4FF;" >
<tr>
<td><form name="form1" method="get" action="admin2.php">
<p align="center">Suchen
<input name="q" type="text" id="q" size="40">
<br>
</p>
<p align="center">
<input type="radio" name="qoption" value="allow">
Nur Aktivierte Kommentare <br>
</p>
<p align="center">
<input type="radio" name="qoption" value="disallow">
Nur Deaktivierte Kommentare <br>
</p>
<p align="center">
<input name="doSearch" type="submit" id="doSearch" value="Suchen">
</p>
</form></td>
</tr>
</table>
<p>
<?php if ($get['doSearch'] == 'Suchen') {
$cond = '';
if($get['qoption'] == 'allow') {
$cond = "where `allow`='1'";
}
if($get['qoption'] == 'disallow') {
$cond = "where `allow`='0'";
}
if($get['q'] == '') {
$sql = "select * from bewertung $cond";
}
else {
$sql = "select * from bewertung where `IDuser ` = '$_REQUEST[q]'";
}
$rs_total = mysql_query($sql) or die(mysql_error());
$total = mysql_num_rows($rs_total);
if (!isset($_GET['page']) )
{ $start=0; } else
{ $start = ($_GET['page'] - 1) * $page_limit; }
$rs_results = mysql_query($sql) or die(mysql_error());
$result = mysql_query("SELECT id, name FROM bewertung");
$total_pages = ceil($total/$page_limit);
?>
<p align="right">
<?php
// outputting the pages
if ($total > $page_limit)
{
echo "<div><strong>Pages:</strong> ";
$i = 0;
while ($i < $page_limit)
{
$page_no = $i+1;
$qstr = ereg_replace("&page=[0-9]+","",$_SERVER['QUERY_STRING']);
echo "<a href=\"admin2.php?$qstr&page=$page_no\">$page_no</a> ";
$i++;
}
echo "</div>";
} ?>
</p>
<form name "searchform" action="" method="post">
<table width="100%" border="0" cellpadding="2" cellspacing="0">
<tr bgcolor="#E6F3F9" align="left">
<td width="5%"><strong>ID</strong></td>
<td width="7%"><strong>IDuser</strong></td>
<td width="12%"><strong>Art</strong></div></td>
<td width="69%"><strong>Kommentar</strong></td>
<td width="7%"><strong>Angezeigt</strong></td>
</tr>
<tr align="left">
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<?php while ($rrows = mysql_fetch_array($rs_results)) {?>
<tr align="left">
<td><input type="checkbox" name="auswahl[]" value="<?php echo $rrows['Id']; ?>"> (<?php echo $rrows['Id']; ?>) </td>
<td><?php echo $rrows['IDuser']; ?></td>
<td><?php echo $rrows['art'];?></div></td>
<td><?php echo $rrows['kommentar']; ?></td>
<td><?php if($rrows['allow']=='1') { echo "Ja"; } else {echo "Nein"; } }?></td>
</tr>
</table>
<p>
<input type="submit" name="1" value="Anzeigen">
<input type="submit" name="2" value="Ausblenden">
<?php
if (is_array($_POST['auswahl']) == true) {
foreach ($_POST['auswahl'] as $key => $value) {
$ausgabe = $value;
if($_POST['1'] == 'Anzeigen') {
mysql_query("update bewertung set allow='1' where id='$ausgabe[$i]' ");
}
if($_POST['2'] == 'Ausblenden') {
mysql_query("update bewertung set allow='0' where id='$ausgabe[$i]'");
}
}
echo "<meta http-equiv='refresh' content='1;url=$php_self'>";
echo "<meta http-equiv='expires' content='0'></meta>";
echo "<meta http-equiv='cache-control' content='no-cache'></meta>";
}
?>
<br>
</p>
<p> </p>
</form>
<td width="12%"> </td>
</tr>
</table>
<?php
}
?>
</body>
</html>
Hi,
Das funktioniert nur bei einstelligen IDs.
Wenn ich bei ID 10 (Nutzer2) auf anzeigen klicke passiert nix. Wenn ich dann auf ausblenden klicke wird die ID 01 (Nutzer1) auf einmal ausgeblendet.
~~~php
<?php
if (is_array($_POST['auswahl']) == true) { foreach ($_POST['auswahl'] as $key => $value) {
$ausgabe = $value;
if($_POST['1'] == 'Anzeigen') { mysql_query("update bewertung set allow='1' where id='$ausgabe[$i]' "); } if($_POST['2'] == 'Ausblenden') { mysql_query("update bewertung set allow='0' where id='$ausgabe[$i]'"); }
Angenommen, in $\_POST['auswahl'] stünde u.a. der Wert '10', d.h. in einem Schleifedurchlauf enthielte $auswahl dann ebenfalls '10' - dann setzt du hier das i-te Zeichen dieses Wertes in deine Queries ein.
MfG ChrisB
--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
Hi,
Das funktioniert nur bei einstelligen IDs.
Wenn ich bei ID 10 (Nutzer2) auf anzeigen klicke passiert nix. Wenn ich dann auf ausblenden klicke wird die ID 01 (Nutzer1) auf einmal ausgeblendet.~~~php
<?php
if (is_array($_POST['auswahl']) == true) { foreach ($_POST['auswahl'] as $key => $value) {
$ausgabe = $value;
if($_POST['1'] == 'Anzeigen') { mysql_query("update bewertung set allow='1' where id='$ausgabe[$i]' "); } if($_POST['2'] == 'Ausblenden') { mysql_query("update bewertung set allow='0' where id='$ausgabe[$i]'"); }
>
> Angenommen, in $\_POST['auswahl'] stünde u.a. der Wert '10', d.h. in einem Schleifedurchlauf enthielte $auswahl dann ebenfalls '10' - dann setzt du hier das i-te Zeichen dieses Wertes in deine Queries ein.
>
> MfG ChrisB
>
Der Retter heißst ChrisB!
Natürlich hat er Recht und es muss heißen:
~~~php
if (is_array($_POST['auswahl']) == true) {
foreach ($_POST['auswahl'] as $key => $value) {
$ausgabe = $value;
if($_POST['1'] == 'Anzeigen') {
mysql_query("update bewertung set allow='1' where id='$ausgabe' ");
}
if($_POST['2'] == 'Ausblenden') {
mysql_query("update bewertung set allow='0' where id='$ausgabe'");
}
}
Danke Dir! VIELEN DANK!