Speichern von veränderten Werten aus einer while Schleife
|
GUL-Sonic |
Geschrieben am 23. August 2014 13:11:01
|
|
Morning,
ich habe folgendes Problem, ich habe ein Formular erstellt, welches sich Daten aus 2 verschiedenen Datenbanken holt und diese in einer while Schleife auflistet. Das klappt auch alles wunderbar nun möchte ich das bei Änderungen und klick auf den "speichern" button jede einzelne Zeile aus der while Schleife in der Datenbank 2 abgespeichert wird.
Hier der Code des Formulars:
opentable($locale['pocp003']);
echo "<form name='pocp_settings' method='post' action='".FUSION_SELF.$aidlink."'>\n";
$result = dbquery("SELECT * FROM " . DB_CUSTOM_PAGES . " ORDER BY page_title ASC");
if (dbrows($result) > 0) {
echo"<table align='center' class='tbl-border' width='80%'>";
echo"
<tr>
<td align='center'>Page Title</td>
<td align='center' width='90px'>printing aktiv</td>
<td align='center' width='250px'>position</td>
</tr>";
while ($data = dbarray($result)) {
$result1 = dbquery("SELECT * FROM " . DB_PRINT_ON_CUSTOM_PAGES . " WHERE pocp_title ='".$data['page_title']."'");
$data1 = dbarray($result1);
$cell_color = ($i % 2 == 0 ? "tbl1" : "tbl2");
$i++;
echo "
<tr>
<td class='$cell_color' align='center'>" . $data['page_title'] . "</td>";
if (!empty($data1['pocp_title'])) {
echo "
<td class='$cell_color' align='center'><input type='checkbox' " . (($data1['pocp_ckbox'] == 1) ? "checked='checked'" : "") . " name='pocp_ckbox' value='1' style='width:10px; text-align:center'></td>";
} else {
echo "
<td class='$cell_color' align='center'><input type='checkbox' name='check' value='1' /></td>";
}
echo "
<td class='tbl'><select name='position' class='textbox' style='width:100%'>\n";
echo "
<option".($data1['pocp_config'] == 0 ? " selected" : "")." value='0'>Bitte wählen</option>\n
<option".($data1['pocp_config'] == 3 ? " selected" : "")." value='3'>Position Tabellenkopf</option>\n
<option".($data1['pocp_config'] == 4 ? " selected" : "")." value='4'>Position oben & unten</option>\n
<option".($data1['pocp_config'] == 2 ? " selected" : "")." value='2'>Position oben</option>\n
<option".($data1['pocp_config'] == 1 ? " selected" : "")." value='1'>Position unten</option>\n";
echo "
</select></td>
</tr>";
}
echo "<td align='center' class='tbl2' colspan='0'><input type='submit' name='save' value='".$locale['pocp020']."' class='button' /></td>\n";
echo "</table></form";
} else { echo " Keine Daten vorhanden";}
closetable();
Wäre dies nun eine Tabelle ohne while Schleife wäre der "speichern" Code folgender:
if (isset($_POST['save'])) {
$result = dbquery("SELECT * FROM " . DB_CUSTOM_PAGES . " ORDER BY page_title ASC");
$data = dbarray($result);
$result1 = dbquery("SELECT * FROM " . DB_PRINT_ON_CUSTOM_PAGES . " WHERE pocp_title ='".$data['page_title']."'");
$data1 = dbarray($result1);
if (!empty($data1['pocp_title'])) {
dbquery("UPDATE " . DB_PRINT_ON_CUSTOM_PAGES . " SET
pocp_config = '" . stripinput((isset($_POST['position']) ? $_POST['position'] : "")) . "',
pocp_ckbox = '" . stripinput((isset($_POST['pocp_ckbox']) ? 1 : 0)) . "' WHERE pocp_title='".$data['page_title']."'");
} else {
dbquery("INSERT " . DB_PRINT_ON_CUSTOM_PAGES . " SET
pocp_title = '".$data['page_title'] . "',
pocp_config = '" . stripinput((isset($_POST['position']) ? $_POST['position'] : "")) . "',
pocp_ckbox = '" . stripinput((isset($_POST['pocp_ckbox']) ? 1 : 0)));
}
redirect(FUSION_SELF.$aidlink);
}
Wie aber bekomme ich es hin, dass es auch unter der Verwendung der while Schleife möglich ist die Werte der einzelnen Zeilen zu speichern?
Ich denke ich sehe hier den Wald vor lauter Bäumen nicht, daher die Bitte um Unterstützung.
M.f.G.
GUL-Sonic
Merke:
Wirklichkeit ist niemals so konsistent wie ein solider Wahn!
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
|
firemike |
Geschrieben am 23. August 2014 18:36:18
|
|
Hi,
holst Du deine Daten aus zwei verschiedenen Datenbanken oder aus zwei verschiedenen Datenbank Tabellen?
So wie dein Code aussieht könnte man davon ausgehen du holst Du die Daten im Formular aus einer Datenbank aber aus zwei verschiedenen Tabellen (DB_CUSTOM_PAGES und DB_PRINT_ON_CUSTOM_PAGES) oder haben die einen unterschiedlichen Präfix?
Haben beide Tabellen dieselben Datenbankfelder?
Wenn ja dann mach den INSERT oder das UPDATE erst bei der einen dann bei der anderen Datenbanktabelle.
In deinem speichern Code schreibst Du ja nur in die Tabelle DB_PRINT_ON_CUSTOM_PAGES
Mike
Bearbeitet von firemike am 23. August 2014 18:47:44
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
|
GUL-Sonic |
Geschrieben am 23. August 2014 19:42:10
|
|
Sorry, da habe ich mich falsch ausgedrückt. natürlich hole ich die Daten aus einer Datenbank mit 2 unterschiedlichen Tabellen.
Die Custom_Pages enthält alle Seitennamen in der PRINT_ON_CUSTOM_PAGES ist hinterlegt ob die Druckoption für die Custom Page aktiviert ist.
Nun soll in dem Formular welches aus einem Vergleich dieser beiden Tabellen mittels Auflistung (while Schleife) besteht noch eingestellt werden ob die Druckoption auch für andere Custom Pages aktiviert werden soll und wenn ja an welcher Position (1,2,3 oder 4) sich das Druckersymbol befinden soll. Wenn der User seine Eingaben in dem Formular gemacht hat und auf speichern klickt sollen diese Änderungen in der Tabelle PRINT_ON_CUSTOM_PAGES abgespeichert werden.
Und genau da liegt das Problem. Ich gehe davon aus das ich den Speicherungsbefehl mit foreach erstellen muß allerdings habe ich keine Ahnung wie.
Im Anhang befindet sich ein Screenshot von dem Formular um das es geht:
GUL-Sonic hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.
M.f.G.
GUL-Sonic
Merke:
Wirklichkeit ist niemals so konsistent wie ein solider Wahn!
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
|
John Doe |
Geschrieben am 23. August 2014 20:59:59
|
|
Dazu musst du den Formularfeldern einen Array fähigen Namen geben, ich weis gar nicht wie das genau heißt!?
Formular, wichtig sind die eckigen klammern!
<input type='checkbox' name='pocp_ckbox[]' value='1' style='width:10px; text-align:center'>
Diese Werte kannst du dann mit einer for Schleife in die DB kloppen:
for ($i = 0; $i < count($pocp_ckbox) && is_array($pocp_ckbox); $i++) {
$result = dbquery("UPDATE " . DB_TEST . " SET name='$pocp_ckbox[$i]', WHERE id='$id' ");
} |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
|
GUL-Sonic |
Geschrieben am 24. August 2014 14:41:09
|
|
Danke an globeFrEak :YAHOO:
Durch Deine Tatkräftige Unterstützung nun hier der fertige Code:
$pocp_ckbox = (isset($_POST['pocp_ckbox']) && !empty($_POST['pocp_ckbox']) ? filter_var_array($_POST['pocp_ckbox'], FILTER_SANITIZE_STRING) : 0);
$pocp_title = (isset($_POST['pocp_title']) && !empty($_POST['pocp_title']) ? filter_var_array($_POST['pocp_title'], FILTER_SANITIZE_STRING) : 0);
$pocp_config = (isset($_POST['pocp_config']) && !empty($_POST['pocp_config']) ? filter_var_array($_POST['pocp_config'], FILTER_SANITIZE_STRING) : 0);
if (isset($_POST['save'])) {
var_dump($pocp_title);
echo "<hr>";
var_dump($pocp_config);
echo "<hr>";
var_dump($_POST['pocp_ckbox']);
for ($i = 0; $i < count($pocp_ckbox) && is_array($pocp_ckbox); $i++) {
$result0 = dbquery("SELECT * FROM " . DB_PRINT_ON_CUSTOM_PAGES . " WHERE pocp_title ='" . $pocp_title[$i] . "'");
$data0 = dbarray($result0);
if(empty($data0['pocp_title'])) {
$result = dbquery("INSERT " . DB_PRINT_ON_CUSTOM_PAGES . " SET
pocp_title = '$pocp_title[$i]',
pocp_config = '$pocp_config[$i]',
pocp_ckbox = '$pocp_ckbox[$i]'");
} else {
$result = dbquery("UPDATE " . DB_PRINT_ON_CUSTOM_PAGES . " SET
pocp_title = '$pocp_title[$i]',
pocp_config = '$pocp_config[$i]',
pocp_ckbox = '$pocp_ckbox[$i]' WHERE pocp_title='$pocp_title[$i]'");;
}
}
redirect(FUSION_SELF);
}
opentable($locale['pocp003']);
echo "<form name='pocp_settings' method='post' action='" . FUSION_SELF . $aidlink . "'>\n";
$result = dbquery("SELECT * FROM " . DB_CUSTOM_PAGES . " ORDER BY page_title ASC");
if (dbrows($result) > 0) {
echo"<table align='center' class='tbl-border'>";
echo"
<tr>
<td align='center'>Seitentitel</td>
<td align='center'>Druckoption an?</td>
<td align='center'>Druckersymbol</td>
</tr>";
$iii = 0;
while ($data = dbarray($result)) {
$result1 = dbquery("SELECT * FROM " . DB_PRINT_ON_CUSTOM_PAGES . " WHERE pocp_title ='" . $data['page_title'] . "'");
$data1 = dbarray($result1);
$cell_color = ($iii % 2 == 0 ? "tbl1" : "tbl2");
echo "<tr>";
echo "<td class='$cell_color' align='center' width='60%'>";
echo "<input type='hidden' name='pocp_title[]' value='" . $data['page_title'] . "'>" . $data['page_title'] . "</td>";
echo "<td class='tbl'><select name='pocp_ckbox[]' style='width:100%' class='textbox'>\n";
echo "<option" . ($data1['pocp_ckbox'] == 0 ? " selected" : "") . " value='0'>Nein</option>\n"
. "<option" . ($data1['pocp_ckbox'] == 1 ? " selected" : "") . " value='1'>Ja</option>\n";
echo "</select></td>";
echo "<td class='tbl'><select name='pocp_config[]' style='width:100%' class='textbox'>\n";
echo "<option" . ($data1['pocp_config'] == 0 ? " selected" : "") . " value='0'>Bitte wählen</option>\n"
. "<option" . ($data1['pocp_config'] == 3 ? " selected" : "") . " value='3'>Position Tabellenkopf</option>\n"
. "<option" . ($data1['pocp_config'] == 4 ? " selected" : "") . " value='4'>Position oben & unten</option>\n"
. "<option" . ($data1['pocp_config'] == 2 ? " selected" : "") . " value='2'>Position oben</option>\n"
. "<option" . ($data1['pocp_config'] == 1 ? " selected" : "") . " value='1'>Position unten</option>\n";
echo "</select></td>"
. "</tr>";
$iii++;
}
echo "<td align='center' class='tbl2' colspan='0'><input type='submit' name='save' value='" . $locale['pocp020'] . "' class='button' /></td>\n";
echo "</table></form";
} else {
echo " Keine Daten vorhanden";
}
closetable();
Nur als Hinweis aus der checkbox wurde ein Dropdownfeld gemacht, da es ansonsten Fehler bei der Übergabe der Werte in die Datenbank gab.
Werde noch ein Feintuning vornehmen und dann die fertige Infusion "Print on Custom Pages" für Interessenten online stellen.
M.f.G.
GUL-Sonic
Merke:
Wirklichkeit ist niemals so konsistent wie ein solider Wahn!
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
|
John Doe |
Geschrieben am 24. August 2014 16:01:43
|
|
Du solltest die var_dump()'s noch löschen! B)
var_dump($pocp_title);
echo "<hr>";
var_dump($pocp_config);
echo "<hr>";
var_dump($_POST['pocp_ckbox']);
Dieses Mitglied wurde gelöscht!
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
|
GUL-Sonic |
Geschrieben am 25. August 2014 00:36:09
|
|
Ups jo habe ich gemacht.
Ich danke Dir!
M.f.G.
GUL-Sonic
Merke:
Wirklichkeit ist niemals so konsistent wie ein solider Wahn!
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Cookie Control - PHP-Fusion Deutschland - Offizielle Supportseite verwendet einige Cookies, um Informationen auf Deinem Computer zu speichern. [
Lesen über unsere Cookies].
Bitte klicke den
Cookies akzeptieren Button um unsere Cookies zu akzeptieren.