phpbuddy.eu
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 17.04.2008, 20:08   #1
TP-Senior
 
Benutzerbild von Magerquark
 
Registriert seit: May 2004
Magerquark macht alles soweit korrekt

[PHP/mySQL] Zwei Werte mit Checkbox übergeben


Moin.

Kleine Denkblockade. Ach was: große Blockade! Folgendes: Ich habe eine DB-Tabelle u.a. mit dem Feld 'ID' und dem Feld 'aktiv'. In 'aktiv' steht nur 'ja' oder 'no' (könnte auch 1 oder 0 sein). Jetzt habe ich die DB-Abfrage, die mir in einer Tabelle die Daten ausgibt, wobei geschaut wird, ob ja oder no vorhanden ist - entsprechend werden die Checkboxen gesetzt.

Nächster Schritt: Formularübergabe und es sollen die Datensätze/ Tabellenfelder entsprechend ihrem Checkbox-Status beschrieben werden.

Schritt 1.)
PHP-Code:
while($row mysql_fetch_object($ergebnis,MYSQL_BOTH))
{
 
$ueber $row->titel;
 
$status $row->aktiv;
 
$ID $row->ID;
        
echo 
"\t<tr>";
 if(
$status == 'ja'){
  echo 
"\n\t\t<td><input type=\"checkbox\" name=\"change[$ID]\" value=\"ja\" checked=\"checked\" /></td>";
 }else{
  echo 
"\n\t\t<td><input type=\"checkbox\" name=\"change[$ID]\" value=\"no\" /></td>";
 }
echo(
"\n\t\t<td class=\"$col\">$ueber</td>".
"\n\t</tr>");

Ich glaube, hier hakt es schon. Der value-Wert wird mit dem change-Array übergeben. Deshalb alternativ:
PHP-Code:
if($status == 'ja'){
 echo 
"\n\t\t<td class=\"$col\" valign=\"top\"><input type=\"checkbox\"  name=\"auswahl[]\" value=\"".$ID."\" checked=\"checked\"></td>";
}else{
 echo 
"\n\t\t<td class=\"$col\" valign=\"top\"><input type=\"checkbox\"  name=\"auswahl[]\" value=\"".$ID."\"></td>";

Jetzt wird wieder der value-Wert übergeben. Diesmal ist es aber nicht der Status (ja/no), sondern die ID, die übermittelt wird. Ich muss aber irgendwie beide Werte übermitteln, damit ich nachher ein UPDATE machen kann:
PHP-Code:
for($x=0;$x<count($change);$x++) {
$sqlab mysql_query("UPDATE tabelle SET aktiv = '$value' WHERE ID = '$change[$x]'");

In dieser UPDATE-Anweisung fehlt der Wert für den Aktiv-Status (ja/no). Die ID zur eindeutigen Identifikation bekommt die Funktion...

Hat das jemand verstanden? Noch wichtiger: Kann jemand helfen?
__________________
<< Meine Ankunft war zeitlich schlecht gewählt...>>
Magerquark ist offline   Mit Zitat antworten


Alt 17.04.2008, 23:08   #2
TP-Moderator
 
Benutzerbild von Adromir
 
Registriert seit: Jun 2004
Ort: Hannover
Adromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKE
Du kannst beide Werte mittels eines Trennzeichens zu einem Wert zusammen fassen, per Checkbox übergeben und dann dröselst du sie anhand des Trennzeichens und explode() wieder auseinander..
__________________
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Adromir ist offline   Mit Zitat antworten
Alt 17.04.2008, 23:21   #3
TP-Senior
 
Benutzerbild von Magerquark
 
Registriert seit: May 2004
Magerquark macht alles soweit korrekt
*hmhm* So ganz klappt das noch nicht... Ich habe jetzt:
PHP-Code:
if($status == 'ja'){
 echo 
"\n\t\t<td><input type=\"checkbox\" name=\"auswahl[]\" value=\"".$ID.",ja\" checked=\"checked\"></td>";
}else{
 echo 
"\n\t\t<td><input type=\"checkbox\" name=\"auswahl[]\" value=\"".$ID.",no\"></td>";

Wenn ich dann zum Testen mir die übergebenen Werte ausgeben lasse:
PHP-Code:
for($x=0;$x<count($auswahl);$x++) {
 echo 
"Werte: ".$auswahl[$x]."<br>";

bekomme ich zwar Werte-Paare wie z.B. 4,ja etc. - die nicht angehakten fehlen (natürlich) - weil nicht ins Array "auswahl" aufgenommen. Wie bekomme ich die denn noch mit?
__________________
<< Meine Ankunft war zeitlich schlecht gewählt...>>
Magerquark ist offline   Mit Zitat antworten
Alt 17.04.2008, 23:30   #4
TP-Moderator
 
Benutzerbild von Adromir
 
Registriert seit: Jun 2004
Ort: Hannover
Adromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKE
Per Hiddenfield?
__________________
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Adromir ist offline   Mit Zitat antworten
Alt 18.04.2008, 00:48   #5
TP-Senior
 
Benutzerbild von Magerquark
 
Registriert seit: May 2004
Magerquark macht alles soweit korrekt
Okay. Das hilft schon einmal:
PHP-Code:
if($status == 'ja'){
 echo 
"\n\t\t<td><input type=\"checkbox\" name=\"auswahl[]\" value=\"".$ID.",ja\" checked=\"checked\"></td>";
}else{
 echo 
"\n\t\t<td><input type=\"checkbox\" name=\"auswahl[]\" value=\"".$ID.",no\"></td>";
 echo 
"\n\t\t<input type=\"hidden\" name=\"auswahl[]\" value=\"".$ID.",no\">";

Wenn ich jetzt mir die übergebenen Werte ausgeben lasse:
PHP-Code:
for($x=0;$x<count($auswahl);$x++) {
 echo 
"Wertepaar: ".$auswahl[$x]."<br>";          

bekomme ich solch eine Ausgabe:
Code:
Wertepaar: 4,ja
Wertepaar: 3,no
Wertepaar: 2,ja
Wertepaar: 1,ja
Doch wie zerteile ich das nun wieder auf und verteile alles auf die SQL-Anweisung? *argh*
__________________
<< Meine Ankunft war zeitlich schlecht gewählt...>>
Magerquark ist offline   Mit Zitat antworten
Alt 18.04.2008, 01:30   #6
TP-Moderator
 
Benutzerbild von Adromir
 
Registriert seit: Jun 2004
Ort: Hannover
Adromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKE
PHP-Code:
foreach($auswahl AS $data) {
$values explode (','$data );
$sqlab mysql_query("UPDATE tabelle SET aktiv = '".$values['1']."' WHERE ID = '".$values['0']."'"); 

Müsste das gewünschte sein...
__________________
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Adromir ist offline   Mit Zitat antworten
Alt 18.04.2008, 13:10   #7
TP-Senior
 
Benutzerbild von Magerquark
 
Registriert seit: May 2004
Magerquark macht alles soweit korrekt
Aaahh, ja. Das klappt so. Sehr schön. Danke.

Allerdings gibt es einen kleinen Denkfehler im Aufbau (auf meiner Seite versteht sich). Derzeit werden die Daten abgerufen. Wenn Feld 'aktiv' 'ja' ist, dann wird ein input mit checked ausgegeben. Wenn Feld 'aktiv' 'no' ist, dann input ohne checked. Da diese Daten dann nicht mitgeliefert werden, bekommt jedes 'no'-input-Feld noch ein hidden mit auf den Weg geschickt (s.o.). Was allerdings nicht bedacht war: Wenn man eine Liste mit und ohne Häkchen hat und die Häkchen neu setzt, z.B. ein Häkchen entfernt, dann gibt es dafür kein hidden-Feld. Blöde.

Also bin ich anders vorgegangen:
PHP-Code:
if($status == 'ja'){
 echo 
"\n\t\t<td><input type=\"checkbox\" name=\"auswahl[]\" value=\"".$ID."\" checked=\"checked\"></td>";
}else{
 echo 
"\n\t\t<td><input type=\"checkbox\" name=\"auswahl[]\" value=\"".$ID."\"></td>";

Kein hidden-Feld mehr! Weil ich jetzt nämlich nach der Übergabe der Daten alle auf 'no' setze und erst dann alle die, die ein 'ja' haben mit Hilfe der übergebenen ID mit 'ja' update:
PHP-Code:
$sqlab1 mysql_query("UPDATE tabelle SET aktiv = 'no'");

for(
$x=0;$x<count($auswahl);$x++) {
 
$sqlab mysql_query("UPDATE tabelle SET aktiv = 'ja' WHERE ID = '$auswahl[$x]'");

So klappt's.

Kleiner Schönheitsfehler: Am Ende des Speicher-Skripts habe ich sonst immer noch eine Anweisung, die schaut, ob etwas verändert wurde oder nicht und entsprechend eine Rückmeldung gibt:
PHP-Code:
mysql_db_query($db_name$sqlab);
$num mysql_affected_rows();
if(
$num>0) {
 echo 
"<p>Der Datensatz wurde erfolgreich ge&auml;ndert.</p>";
}else{
 echo 
"<p>Es wurde kein Datensatz ver&auml;ndert oder es liegt ein Datenbankproblem vor.</p>";

Derzeit rutscht er - obwohl das oben mit dem Eintragen von 'no' und 'ja' richtig klappt - in die Fehler-Zeile. Er sagt, es wurde nichts verändert, obwohl etwas verändert wurde. Wieso?

Okay, hier einmal meine komplette Speicher-Datei, an die die Daten übergeben werden und die auch die DB-Aktualisierung macht - nur eben nicht die richtige Meldung ausspuckt. Vielleicht wird es dann einem da draußen besser ersichtlich... :
PHP-Code:
include ('zugangsdaten.php');
        
$conn mysql_connect($db_server,$db_user,$db_passwort) or die (mysql_error());
$link mysql_select_db($db_name$conn) or die (mysql_error());

if (isset(
$_POST['mode']) && $_POST['mode'] == "speichere_aktiv"){

$sqlab1 mysql_query("UPDATE tabelle SET aktiv = 'no'");
 for(
$x=0;$x<count($auswahl);$x++) {
 
$sqlab mysql_query("UPDATE tabelle SET aktiv = 'ja' WHERE ID = '$auswahl[$x]'");
}

mysql_db_query($db_name$sqlab);
$num mysql_affected_rows();
if(
$num>0) {
 echo 
"<p>Der Datensatz wurde erfolgreich ge&auml;ndert.</p>";
 }else{
 echo 
"<p>Es wurde kein Datensatz ver&auml;ndert oder es liegt ein Datenbankproblem vor.</p>";
}
mysql_close($conn); 
__________________
<< Meine Ankunft war zeitlich schlecht gewählt...>>

Geändert von Magerquark (20.04.2008 um 14:28 Uhr). Grund: Ergänzung
Magerquark ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
[PHP/mySQL] Zwei Werte mit Checkbox übergeben [PHP/mySQL] Zwei Werte mit Checkbox übergeben
« Adressdaten mit Google Maps suchen und in Datenbank schreiben | SQL Mehrfache Werte einer Spalte ausgeben »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:43 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67