CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
20.03.2012, 10:27:28
|
Anfänger
|
|
Registriert seit: Apr 2010
Alter: 44
Beiträge: 46
|
|
AW: Checkbox in BD-Tabelle schreiben
Ja stimmt,
hab jetzt nochmal drüber geschlafen und meine code überarbeitet.
PHP-Code:
if (isset($_REQUEST['checkbtn'])) { foreach ($_REQUEST['checkbtn'] as $nonvalue => $value) { mysql_query ("UPDATE fahrzeug SET status='$value' WHERE id='".$_GET['id']."'") OR die(mysql_error()); } };
das else {
// print "0"
$buchungnonchecked;
}
von Oben lasse ich weg da ich die Spalte Status so formatiert habe das sie Standardmäßig immer NULL ist wenn kein Eintrag gemacht wurde.
PHP-Code:
<?php while ($datensatz = mysql_fetch_array( $abfrageergebnis )) { echo '<table border="1">'; echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">'; echo '<tr>'; echo '<td style="width:75px"><input type="checkbox" name="checkbtn[]" value="1"></td>'; echo '<td style="width:155px">' . $datensatz['id'] . '</td>'; echo '<td style="width:80px">' . $datensatz['fahrzeug'] . '</td>'; echo '</tr>'; echo '</table>'; } ?>
HTML-Code:
<table>
<tr>
<td><input type="submit" name="submit" value="Update"></td>
</tr>
</table>
Er bringt mir jetzt wenn ich den Haken im Checkbutton setze und auf meinen Submit-Button klicke
Undefined index: id was ich aber nicht verstehe denn die ID meines Datensatzes wird angezeigt und mit GET hole ich mir diesen doch aus meinem Datensatz um in mit WHERE zu vergelichen!?
|
20.03.2012, 11:55:38
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
|
|
AW: Checkbox in BD-Tabelle schreiben
Zum Einen schreibst du trotz Hinweis immer noch $_SERVER['PHP_SELF'].
Zum Anderen können wir nicht erkennen, wie $abfrageergebnis aussieht bzw. ob per $_GET überhaupt eine "id" mit übergeben wird.
|
20.03.2012, 11:57:20
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Checkbox in BD-Tabelle schreiben
Macht es Dir viel Mühe den Code komplett zu posten, die Unterteilung in PHP und HTML usw. ist nicht zielführend.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
20.03.2012, 12:12:05
|
Anfänger
|
|
Registriert seit: Apr 2010
Alter: 44
Beiträge: 46
|
|
AW: Checkbox in DB-Tabelle schreiben
Hier der ganz Code:
PHP-Code:
<?php
include("../php/connect.php");
?>
HTML-Code:
<!DOCTYPE html>
<html lang="de">
<head>
<title></title>
</head>
<body>
<div id="user_info">
Benutzer: <?php echo $_SESSION["vorname"]; ?> <?php echo $_SESSION["nachname"]; ?>
</div>
<div class="site_txt">
<strong>Arbeitszeiten</strong><br>
<br>
PHP-Code:
<?PHP
$userid = $_SESSION["user_id"];
// Anfrage zusammenstellen um die Datensaetze auszulesen
$sql = "SELECT id, status, auto FROM fahrzeug";
// Anfrage an die DB schicken und die Rueckmeldung in eine Variable ablegen
$abfrageergebnis = mysql_query( $sql ) or trigger_error(mysql_error(),E_USER_ERROR);
// Checkboxabfrage für Buchungsfeld
if (isset($_REQUEST['checkbtn'])) {
foreach ($_REQUEST['checkbtn'] as $nonvalue => $value) {
mysql_query ("UPDATE fahrzeug SET status='$value' WHERE id='".$_GET['id']."'") OR die(mysql_error());
}
};
// Ermitteln wie viele Datensaetzen gefunden wurden
$anzahl = mysql_num_rows( $abfrageergebnis );
echo "<p>Es wurden <strong>" .$anzahl. "</strong> Einträge gefunden!</p>";
?>
HTML-Code:
<table border="1">
<tr><td style="width:70px"><b>Status</b></td><td style="width:15px"><b>ID</b></td><td style="width:65px"><b>Auto</b></td></tr>
</table>
PHP-Code:
<?php
// Ab hier werden die Datensaetze zeilenweise ausgeben
while ($datensatz = mysql_fetch_array( $abfrageergebnis ))
{
// Tabelle erstellen fuer die Ausgabe
echo '<table border="1">';
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo '<tr>';
echo '<td style="width:75px"><input type="checkbox" name="checkbtn[]" value="1"></td>';
echo '<td style="width:15px">' . $datensatz['id'] . '</td>';
echo '<td style="width:155px">' . $datensatz['auto'] . '</td>';
echo '</tr>';
echo '</table>';
}
?>
HTML-Code:
<table>
<tr>
<td><input type="submit" name="submit" value="Update"></td>
</tr>
</table>
<br>
</div>
<div class="site_base"></div>
</div>
</body>
</html>
|
20.03.2012, 13:23:27
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
|
|
AW: Checkbox in BD-Tabelle schreiben
Ich würd mir an deiner Stelle vorerst einmal Gedanken um dein erzeugtes Formular machen.
Zum Einen wird es nicht beendet und zum Anderen erzeugst du mehrere Formularheader, wenn dein select mehrere Ergebnisse liefert.
Dein geposteter Code bringt den Fehler mit undefined index id, weil es die Variable $_GET['id'] einfach nicht gibt.
In Verbindung mit deinem SQL-Statement noch unschöner.
Nun steht immernoch im Raum, wie bekommst du den Zusammenhang zwischen deinem Update und dem gewünschten Fahrzeug.
Als mögliche Lösung biete ich dir einmal folgendes an
PHP-Code:
...... echo '<td style="width:75px"><input type="checkbox" name="checkbtn[]" value="'.$datensatz['id'].'"></td>'; echo '<td style="width:15px">' . $datensatz['id'] . '</td>'; echo '<td style="width:155px">' . $datensatz['fahrzeug'] . '</td>'; .......
|
20.03.2012, 13:56:23
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Checkbox in DB-Tabelle schreiben
Zitat:
Zitat von syntax
Hier der ganz Code:
|
Zitat:
Zitat von vt1816
Macht es Dir viel Mühe den Code komplett zu posten, die Unterteilung in PHP und HTML usw. ist nicht zielführend.
|
Was war hieran nicht verständlich???
Wo kommen $_SESSION["vorname"] und $_SESSION["nachname"] her - vermisse session_start().
Wo wird die Fehleranzeige eingeschaltet?
Wozu erstellst Du für jeden gefundenen Eintrag eine eigene Tabelle im HTML?
Von dem nicht geschlossenen Formular wollen wir mal gar nicht reden.
Kann es sein, dass es Dir nach wie vor an den Grundlagen fehlt? Die Dr. zu Gutenberg-Methode (Copy & Paste) bringt Dich hier nicht weiter!
Setze Dich hin und mach die schlau. Literatur und Nachschlagewerke, die Du kennst / mit denen Du arbeitest: - PHP Handbuch
- PHP Tutorial
- PHP FAQ
- PHP Kompendium
- MySQL Tutorial
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
20.03.2012, 14:27:32
|
Anfänger
|
|
Registriert seit: Apr 2010
Alter: 44
Beiträge: 46
|
|
AW: Checkbox in BD-Tabelle schreiben
Vielen Danke erstmal für das finden der Fehler.
Hab das mit dem Formular und der Tabelle beseitigt.
PHP-Code:
<table border="1">
<form action="'.$_SERVER['PHP_SELF'].'" method="post">
<?php
while ($datensatz = mysql_fetch_array( $abfrageergebnis ))
{
echo '<tr>';
echo '<td style="width:75px"><input type="checkbox" name="checkbtn[]" value="1"></td>';
echo '<td style="width:15px">' . $datensatz['id'] . '</td>';
echo '<td style="width:155px">' . $datensatz['auto'] . '</td>';
echo '</tr>';
}
?>
</table>
</form>
Das session_start() steht in meiner checkuser.php die wie die connect.php included wird.
Das hab ich vergessen mit rein zu kopieren, sorry.
Den zusammenhang zw. Update und dem gewünschten Fahrzeug stelle ich doch mit hilfe der ID her die in meiner SQL-Abfrage und meiner Ausgabe in der Tabelle steht.
Der Value Wert in meiner Checkbox soll doch in meine Tabelle eingetragen werden und nicht die ID.
|
20.03.2012, 19:08:17
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
|
|
AW: Checkbox in BD-Tabelle schreiben
Wenn du das Formular so absendest, wie es momentan ist, wird lediglich die Checkbox (sofern angehakt) und der Submit-Button übermittelt. Somit steht dir nur der Value aus der Checkbox (1) und der Value vom Submit-Button zur Verfügung.
Relativ einfach zu überprüfen.
PHP-Code:
if (isset($_REQUEST['checkbtn'])) {
foreach ($_REQUEST['checkbtn'] as $nonvalue => $value) {
mysql_query ("UPDATE fahrzeug SET status='$value' WHERE id='".$_GET['id']."'") OR die(mysql_error());
}
echo '<pre>';
print_r($_POST); #alternativ var_dump($_POST);
echo '</pre>'
}
Somit besteht nach dem Absenden des Formulars kein Zusammenhang mehr zwischen dem Fahrzeug, welches dem Update zugrunde liegen soll und der Checkbox.
Da du immernoch $_SERVER['PHP_SELF'] nutzt, solltest du mal dringend dich über diese Variable informieren. Es ist immer noch böse.
$_GET['id'], welches du ungeprüft (mysql injektion) in dein SQL Statemant nutzen willst existiert ebenfalls nicht. Somit ist diese Anweisung umsonst. Ausser, dass du einen Error erhälst.
Was dir aber komplett noch fehlt ist die Möglichkeit den Status des Fahrzeuges wieder auf 0 nzw. mittlerweile ja NULL zu setzen.
|
20.03.2012, 22:50:02
|
Anfänger
|
|
Registriert seit: Apr 2010
Alter: 44
Beiträge: 46
|
|
AW: Checkbox in BD-Tabelle schreiben
Also ich steig langsam dahinter was gemeint ist.
Das mit dem $_SERVER['PHP_SELF'] hab ich ersetzt durch $_SERVER['SCRIPT_NAME']
Danke für den Tipp, wieder was gelernt.
Habs auch jetzt so hinbekommen das es mit einem einzelnen Datensatz funktioniert.
Ich kann das mit der ID prüfen nicht ganz nachvollziehen.
Meinst du das in etwa so:
PHP-Code:
if(!isset($_GET['id']) OR !is_numeric($_GET['id']))
|
21.03.2012, 09:32:28
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
|
|
AW: Checkbox in BD-Tabelle schreiben
HTML-Code:
<form action="'.$_SERVER['SCRIPT_NAME'].'" method="post">
Dein Formular verweist auf sich selbst. Im Browser erscheint also sowas wie
www.meine.de/hier.php
Wenn du dich jetzt mit der vordefinierten Variable $_GET beschäftigt hättest, dann wüstest du, dass nach dem Absenden des Formulares niemals irgend ein Get-Wert vorhanden sein wird.
Dein Formular sendest du per POST. Ist auch ok, würde ich auch so machen.
Eine Möglichkeit, wie du deine ID übermitteln könntest, hatte ich die auch schon als Tip weiter oben geschrieben. Allerdings hast du diesen Teil ignoriert.
Kopie/Paste Lösungen wirst du hier im Forum eher selten bekommen.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 12:02:04 Uhr.
|