Tabelleneintrag bearbeiten und in mssql DB schreiben

guskg

Grünschnabel
Hallo zusammen

Ich bin neu hier und habe ein (für mich) grosses Problem.
Ich habe schon alle PHP Foren durchforstet aber irgendwie fehl mir der durchblick gerade total und ich soll die Arbeit bald abgeben.

1. Ich habe eine Seite wo ich die SQL Daten in einer Tabelle auslese. Auf dieser Seite habe ich in jeder Zeile einen submit button eingefügt der dafür sorgt das die Seite zum bearbeiten des Eintrags geöffnet wird. das Funktioniert auch nur das auf der seite dann keine Daten angezeigt werden.

2. Auf der zweiten Seite habe ich ein Drop down Menü wo ich den Eintrag in die voreingestellten Kriterien ändern kann. Dann ist wieder ein Button zum bestätigen udn auf der nächsten Seite kommt der UPDATE Befehl für die Datenbank.

Das Projekt holt die Daten aus einer sehr verschachtelten MS-SQL Datenbank.

Hier die Codeansicht der ersten Seite mit der Tabelle.

employer.php

PHP:
     <?php




					error_reporting(E_ALL);
					 
				
					include("db_connect.php");//Datenbankverbindung


		
					if(isset($_POST['sword']))//Suchfunktion
					{
					//Datenbankabfrage mit Suchfunktion in den Spalten Vorname, Nachname und Kartennummer
					$user=(mssql_query("SELECT last_name, first_name, card_no, card_status, 
										asco.employee.acc_grp_id, cardholder_id, asco.access_groups.acc_grp_id, acc_grp_name 
										FROM  asco.employee, asco.access_groups
										WHERE asco.employee.acc_grp_id = asco.access_groups.acc_grp_id
										AND 	(last_name LIKE ('%" .utf8_decode($_POST['sword']). "%') 
												OR first_name LIKE ('%" .utf8_decode($_POST['sword']). "%') 
												OR acc_grp_name LIKE ('%" .$_POST['sword']. "%')
												OR card_no LIKE ('%" .$_POST['sword']. "%'))
										ORDER BY last_name, first_name"));
					}
					else
					{
					//Datenbankabfrage ohne Suchfunktion. Die komplette Personenliste wird ausgegeben.
					$user=(mssql_query("SELECT last_name, first_name, card_no, card_status, 
										asco.employee.acc_grp_id, cardholder_id, 
										asco.access_groups.acc_grp_id, acc_grp_name 
										FROM asco.access_groups, asco.employee
										WHERE asco.employee.acc_grp_id = asco.access_groups.acc_grp_id
										ORDER BY last_name, first_name"));
					}
				?>
                <!-- Eingabefenster für die Suchfunktion-->
                <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
                <input name="sword" type="text" /> <input name="suchen" value="Suchen" type="submit" />
                </form>
                
                <!-- Tabelle für die Personenliste-->
                <form action="employer2.php" method="post">
                <table background="images/tabemp.jpg" cellspacing=0 width="680px"><!-- image muss hier stehen für IE7 -->
                <br />
                    <caption>
                    <h3>Aktiv<span class="Stil1">-</span>Nachname<span class="Stil1">-----</span>Vorname<span class="Stil1">-------</span>
                    Ausweis<span class="Stil1">--------</span>Berechtigung<span class="Stil1">------------</span></h3>
                    </caption>
				
                <?php
									
				
					while( $row=mssql_fetch_array($user) )//Ausgabe der Personendaten in die Tabelle. Alle Zeilen vom SELECT
					{	
						echo "<tr height=28px background=images/tabemp.jpg>"; //image für Firefox und chrome
						echo "<td width=5></td>";
						echo "<td width=50><font style=float:left>";
							if($row['card_status'] == '61')//Abfrage ob die Person Aktiv ist
							{
								?>
								<a href="javascript:void(0)" onclick="changeStatus(<?php echo (int)$row['cardholder_id']; ?>, 1)">
								<img src="images/icongn.png" width="26" height="20" border="0" />
								</a>
								<?php
								// Javascript aktiviert
								// Einbinden der Grafik für Person = aktiv
							}
							else
							{
								?>
								<a href="javascript:void(0)" onclick="changeStatus(<?php echo (int)$row['cardholder_id']; ?>, 0)">
								<img src="images/iconred.png" width="26" height="20" border="0" />
								</a>
								<?php
								//Javascript aktiviert
								// Einbinden der Grafik für Person = gesperrt
							}
						echo "&nbsp;</td>";	
						// Familienname aufgelistet und utf8 gestellt	
						echo "<td width=140><font style=float:left>".utf8_encode($row['last_name'])."&nbsp;</td>";
						// Vorname aufgelistet und utf8 gestellt
						echo "<td width=140><font style=float:left>".utf8_encode($row['first_name'])."&nbsp;</td>";
						// Kartennummer aufgelistet
						echo "<td width=140><font style=float:left>".$row['card_no']."&nbsp;</td>";
						// Berechtigungsgruppe aufgelistet
						echo "<td width=150><font style=float:left>".$row['acc_grp_id']."&nbsp;</td>";
						echo "<td width=50><font style=float:right>"?><input name="recht" id="recht" type='submit' value='Ändern'><?php "</td>";
						echo "<td width=5></td>";
						echo "</tr>";
						
					}
				?>
                </table>
                </form>

Dann wird die zweite Seite geöffnet zum Bearbeiten.
Aber mit dieser Abfrage schaffe ich es nicht das hier auch Daten angezeigt werden.

employer2.php
PHP:
				<?php
                include('db_connect.php');
				
                $recht = $_POST['recht'];
				$acc_grp_id = $_POST['asco.employee.acc_grp_id'];
				echo $recht;
				echo $acc_grp_id;


				$user = mssql_query("SELECT last_name, first_name, card_no, card_status, 
									asco.employee.acc_grp_id, cardholder_id, 
									asco.access_groups.acc_grp_id, acc_grp_name 
									FROM asco.access_groups, asco.employee
									WHERE asco.employee.acc_grp_id = asco.access_groups.acc_grp_id
									AND cardholder_id = '$recht'");
									
				$gruppe = mssql_query("SELECT acc_grp_name, acc_grp_id FROM asco.access_groups");
 
				if ( ! $user )
				{
					die('Ungültige Abfrage: ' . mysql_error());
				}
				?>
                <form action="employer3.php" method="post">
                <table background="images/tabemp.jpg" cellspacing=0 width="680px">
                <br />
                    <caption>
                    <div id="stil3">ID<span class="Stil1">-</span>Nachname<span class="Stil1">-----</span>Vorname<span class="Stil1">-------</span>
                    Ausweis<span class="Stil1">--------</span>Berechtigung<span class="Stil1">------------</span></div>
                    </caption>
				
                <?php
				 while ($ausgabe = mssql_fetch_array( $user))
				 {
				 echo "<tr height=28px background=images/tabemp.jpg>";
				 echo "<td width=30>" .$ausgabe['cardholder_id'] . "</td>";
				 echo "<td width=150>". utf8_encode($ausgabe['last_name']) . "</td>";
				 echo "<td width=150>". utf8_encode($ausgabe['first_name']) . "</td>";
				 echo "<td width=150>". $ausgabe['card_no'] . "</td>";
				 echo "<td width=150>";
				 echo "<select name='acc_grp_id'>";
 							while ($data = mssql_fetch_array($gruppe))
							{
								$selected = "";
								if ($ausgabe['acc_grp_id'] == $data['acc_grp_id'])
								{
									$selected = " selected='selected'";
								}
							 	echo "<option value=\"" . $data['acc_grp_id'] . "\"". $selected. ">" . $data['acc_grp_id'] . "</option>\n";
							}
				echo"</select></td>";
				echo "<td width=50><font style=float:right>" ?><input name="change" type="submit" value="Speichern" method="post" ><?php "</td>";
				echo "</tr>";
				}
				mssql_free_result( $user );
				?>
                </table>
                </form>

.Auf der nächsten Seite werden die Daten in die DB geschrieben.
Hier kommen Error Meldungen.

Notice: Undefined index: recht in C:\xampp\htdocs\sipass\employer3.php on line 45
(Ich denke hier ist gemeint das die Var Index nicht definiert ist.)

Notice: Undefined index: in C:\xampp\htdocs\sipass\employer3.php on line 61
bearbeitet !
(und hier steht denke ich das die $recht leer ist.)

wenn mann den sql_query ansieht, sieht man das er leer ist, aber warum?

UPDATE asco.access_control SET ptg_id = '' WHERE emp_id = ''


employer3.php

PHP:
<?php
error_reporting(E_ALL);
// LOGIN SCRIPT
include('db_connect.php');
                $recht = $_POST['recht'];
				$acc_grp_id = $_POST['acc_grp_id'];
				
  //daten bearbeiten 
  $aendern = "UPDATE asco.employer SET 
 
  acc_grp__id = '$_POST[$acc_grp_id]' 
 
  WHERE cardholder_id = '$_POST[$recht]'";
 
echo "bearbeitet ! <br>";
 
mssql_query($aendern);
echo $aendern;

 ?>

Wäre echt toll wenn mir hier jemand weiterhelfen kann.
 
Hi,

ich gehe mal nur auf das zweite Script ein (employer2.php).

Code:
$recht = $_POST['recht'];

Das ist der Submit-Button.

Dein Query schlägt deshalb einfach fehl, da hier

Code:
AND cardholder_id = '$recht'");

wohl eine ID also eine Nummer erwartet wird (ich gehe jedenfalls stark davon aus).

Du musst diese Nummer, die du zur Identifikation benötigst, von der ersten Seite der zweiten Seite übergeben. Das könntest du mit einem unsichtbaren Html Formular Feld machen:

PHP:
echo "<input type='hidden' name='cardholder_id' value='".$row['cardholder_id']."' />";

Das kommt auf der ersten Seite vor den Submit-Button. Dadurch hast du auf der zweiten Seite $_POST['cardholder_id'] zur Verfügung, das du mit $recht tauschst und der Query sollte funktionieren.

So das reicht erstmal, nun warte ich auf dein Feedback ;)
 
Hallo,

das mit deinen Anweisungen funktioniert soweit. nur das jetzt auf der zweiten Seite immer der Letzte Tabelleneintrag auf die zweite Seite übertragen wird.
Ich denke mal die Schleife läuft durch und der änder Button nimmt einfach die letzte Zeile, aber warum?

mfg Günter
 

Neue Beiträge

Zurück