[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:
(1919 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'];

$details=@mysql_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:
(1919 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:
(1919 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:
(1919 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:
(1919 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:
(1919 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:
(1919 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:
(1919 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

Aktuell

Web / SEO / Blockchain / Betriebssystem
switch_22_300

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.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/