[GastForen Programmierung/Entwicklung PHP und MySQL Formular: Problem mit Update

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Formular: Problem mit Update

Daeva
Beiträge gesamt: 5

5. Nov 2004, 14:34
Beitrag # 1 von 8
Bewertung:
(1914 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Also ich versuch hier gerade krampfhaft ein formular zu basten, das mit hilfe eines arrays erst checkboxen erstellt, und diese dann bei "sumbit" updatet. Vom Prinzip her funktionierts, nur nicht ganz so wie ich will.

Die alten haken, die schon drin waren und drin gelassen werden, werden immer gelöscht, statt beibehalten zu werden, sobald man sumbit clickt.

Hier mal der schnipsel vom script:


----------------------------------------
if (isset($_POST['submit'])) {

$positions = $_POST['positions'];
$id = $_POST['id'];
$memname = $_POST['memname'];
$memavpath = $_POST['memavpath'];
$pid = $_POST['pid'];
$memboardid = $_POST['memboardid'];


$sql = @mysql_query("UPDATE staffmember
SET memname='$memname', pid='$pid', memboardid='$memboardid', memavpath='$memavpath' WHERE ID='$id'");

if ($sql) {
echo('<p>Members details updated.</p>');
}
else
{
echo('<p>Error updating member details: ' .
mysql_error() . '</p>');
}




$ok1 = @mysql_query("DELETE FROM stafflookup
WHERE StaffID='$id'");

if ($positions == "") $positions = array();

foreach ($positions as $pID) {
$ok2 = @mysql_query("INSERT IGNORE INTO stafflookup (StaffID,CID)
VALUES ('$id','$pID')");
echo sql;
if (!$ok2) {
echo("<p>Error inserting member into position $pID: " .
mysql_error() . '</p>');
}
}


} else {

$id=$_GET['id'];

[email protected]_query("SELECT * FROM staffmember WHERE ID='$id'");
if (!$details) {
die('<p>Error fetching staff position details: ' .
mysql_error() . '</p>');
}

$detail = mysql_fetch_array($details);

$id = $detail['ID'];
$memname = $detail['memname'];
$memavpath = $detail['memavpath'];
$pid = $detail['pid'];
$memboardid = $detail['memboardid'];


$memname = htmlspecialchars($detail['memname']);
$memavpath = htmlspecialchars($detail['memavpath']);

// Get lists of positions for the checkboxes.
$positions = mysql_query('SELECT ID, catname FROM staffcats');


print("<form action='staff.php?do=editmember' method='post'>
<p>Edit Staff Member: <b>ID $id</b><br>
<br>
<br>
Name: <input class='bginput' type='text' name='memname' value='$memname' size='50' maxlength='255'><br>
<br>
Avatar: <input class='bginput' type='text' name='memavpath' value='$memavpath' size='50' maxlength='255'><br>
<br>
User ID: <input class='bginput' type='text' name='memboardid' value='$memboardid' size='50' maxlength='255'><br>
<p>In categories:<br>");

while ($position = mysql_fetch_array($positions)) {
$posid = $position['ID'];
$cname = htmlspecialchars($position['catname']);

// Check if the member is in this position
$result = @mysql_query(
"SELECT * FROM stafflookup
WHERE StaffID='$id' AND CID='$posid'");
if (!$result) {
die('<p>Error fetching member position details: ' .
mysql_error() . '</p>');
}

if (mysql_num_rows($result)) {
echo("<input type='checkbox' checked name='postions[]' value='$posid' />$cname<br />\n");
} else {
echo("<input type='checkbox' name='positions[]' value='$posid' />$cname<br />\n");
}
}

print(" <input type='hidden' name='id' value='$id'>
<input class='input2' type='submit' name='submit' value='SUBMIT'></p>
</form>");




}
}
-------------------------

Kann mir jemand helfen, wie ich das hinbekomme, dass nur die positionen gelöscht werden, die nicht gecheckt sind, und nicht - so wie momentan - sämtliche vorher gecheckte positionen rausgenommen werden?

Wäre über hilfe mega dankbar.
X

Formular: Problem mit Update

StefanB
Beiträge gesamt:

5. Nov 2004, 15:41
Beitrag # 2 von 8
Beitrag ID: #121717
Bewertung:
(1914 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Daeva,

versuch's doch mal mit einer solchen Zeile:

echo("<input ");
if(in_array("$posid", $positions))
{
echo("checked ");
}
echo("type='checkbox' name='positions[]' value='$posid' />$cname<br />\n");

Also frag ab, ob der value '$posid' in dem array $positions enthalten ist, und lass dann "checken".

Gruß, Stefan

Stefan


als Antwort auf: [#121693]

Formular: Problem mit Update

Daeva
Beiträge gesamt: 5

5. Nov 2004, 16:09
Beitrag # 3 von 8
Beitrag ID: #121728
Bewertung:
(1914 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Antwort Stefan. Aber die Zeile mag das Script gar nicht :(

Krieg immer wieder

Warning: Wrong datatype for second argument in call to in_array in .../staff.php on line 116


als Antwort auf: [#121693]

Formular: Problem mit Update

StefanB
Beiträge gesamt:

5. Nov 2004, 16:35
Beitrag # 4 von 8
Beitrag ID: #121737
Bewertung:
(1914 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
OK,

dann gibt es das array '$positions' nicht auf dieser Seite.

Ich habe Deinen Code nicht Zeile für Zeile gelesen (keine Zeit, sorry...), aber die Zielseite scheint eine andere zu sein als die, die das Formular enthält.

Dann solltest Du auf der Zielseite - die Seite, an die das Formular geschickt wird -, diese Variable als session-Variable registieren, damit sie bei der Rückkehr auf die Seite, die das Formular enthält, erhalten bleibt, oder sie auf eine andere Weise dorthin zurückübermitteln.

Leider reichts heute nicht für mehr...

Stefan


als Antwort auf: [#121693]

Formular: Problem mit Update

Daeva
Beiträge gesamt: 5

5. Nov 2004, 16:44
Beitrag # 5 von 8
Beitrag ID: #121741
Bewertung:
(1914 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mmmh ... wenn ich mir die übermittelten $_Post values anzeigen lasse, kommt $positions als array mit durch, dh den muss es geben. :( Allerdings immer zweigeteilt. Und ich denke, dass die erste Hälfte in der DELETE query verwendet wird (die haken, die schon vorher dawaren) und die zweite Hälfte von $positions wird für INSERT verwendet.

Das sieht dann immer so aus:

Array
(
[memname] => Daeva
[memavpath] => url
[memboardid] => 1627
[postions] => Array
(
[0] => 1
[1] => 2
[2] => 3
)

[positions] => Array
(
[0] => 5
[1] => 6
)

[id] => 1
[submit] => SUBMIT
)

Die ersten drei zahlen schmeißt der immer raus, auch wenn die nachwievor angekreuzt bleiben. Bei den alten Haken scheint gar nicht einbezogen zu werden ob die gekreuzt bleiben oder nicht, die werden einfach gelöscht. :(


als Antwort auf: [#121693]

Formular: Problem mit Update

Pozor
Beiträge gesamt: 892

5. Nov 2004, 17:55
Beitrag # 6 von 8
Beitrag ID: #121757
Bewertung:
(1914 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

der Ansatz $_POST auszugeben ist ja schon sehr gut,
doch beachte, in deinem Formular hatt sich mit sicherheit ein
Schreibfehler eingeschlichen:
positions != positions

tja manchmal sieht man den Wald vor lauter Bäume nicht.


Gruss Stefan

"Qualität vor Quantität"


als Antwort auf: [#121693]

Formular: Problem mit Update

Daeva
Beiträge gesamt: 5

5. Nov 2004, 19:16
Beitrag # 7 von 8
Beitrag ID: #121774
Bewertung:
(1914 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ui, das hab ich gar nicht realisiert bis jetzt. Sorry, bin immer noch am lernen bei der ganzen sache. Bzw versuch es :-p

Naja, mein problem krieg ich dadurch auch nicht gelöst. Ich hab die beiden arrays jetzt dann auch mal mit verschiedenen namen versehen und geschaut was da jetzt genau passiert. also hab jetzt "positionsold" und "positionsnew", wobei positionsold die sind, die in der checkbox als "checked" ausgewiesen wurden.

Alles was in "positionsold" ist, weißt er mir auch über die $_Post Ausgabe aus. Allerdings, krieg ich die nicht mal per zweiter foreach schleife für "positionsold" in die tabelle.

Sorry, wenn ich mich hier vollkommen blond anstelle. Ich such mir hier schon den ganzen tag die finger wund und alles was ich probiert hab blieb leider ohne erfolg :(


als Antwort auf: [#121693]

Formular: Problem mit Update

Daeva
Beiträge gesamt: 5

6. Nov 2004, 22:30
Beitrag # 8 von 8
Beitrag ID: #121981
Bewertung:
(1914 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ok jetzt hab ich den tipp dann auch verstanden. Nachdem ich aufs problem gekommen bin. Und wohoo es funktioniert jetzt endlich so wie es soll.


als Antwort auf: [#121693]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
01.12.2022

Online
Donnerstag, 01. Dez. 2022, 10.00 - 10.45 Uhr

Webinar

Die drei ColorLogic-Programme ZePrA, CoPrA und ColorAnt sind in neuen Versionen mit vielen neuen Funktionen im Jahr 2022 veröffentlich worden oder werden in Kürze veröffentlicht (ColorAnt 9). In unserem ca. 45 minütigen kostenlosen Webinar zeigen wir Ihnen einige dieser neuen Funktionen mit dem Schwerpunkt auf Automatisierung und Produktivitätssteigerungen.

Ja

Organisator: Impressed GmbH

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=311

ColorLogic Update-Webinar ZePrA 10, CoPrA 9 und ColorAnt 9
Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/