Daten in MSSql ändern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Daten in MSSql ändern

    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-Code:
                    <?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="http://www.php-resource.de/forum/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="http://www.php-resource.de/forum/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="http://www.php-resource.de/forum/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-Code:
                    <?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="http://www.php-resource.de/forum/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='accessgroup'>";
                                 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: test in C:\xampp\htdocs\sipass\employer3.php on line 45
    (Ich weiß aber nicht wie ich da den Wert reinkriegen soll.)


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

    UPDATE asco.employee SET acc_grp_id = '1' WHERE emp_id = ''


    employer3.php

    PHP-Code:
    <?php
    error_reporting
    (E_ALL);
    // LOGIN SCRIPT
    include('db_connect.php');
                    
    $emp_id $_POST['test'];
                    
    $acc_grp_id $_POST['accessgroup'];
                    
      
    //daten bearbeiten 
      
    $aendern "UPDATE asco.employee SET 
     
      acc_grp_id = '
    $acc_grp_id
     
      WHERE emp_id = '
    $emp_id'";
     
    echo 
    "bearbeitet ! <br>";
     
    mssql_query($aendern);
    echo 
    $aendern;

     
    ?>

    Ein Teil des letzen Schrittes mit dem Update funktioniert.
    Nur in einer Variable ist kein Wert und sie ist nicht definiert.
    Die definierte Var holt ihren Wert aus der employer2.php aus der Tablee vom selectfenster

    Wäre echt nett wenn mir jemand weiterhelfen kann.
    Zuletzt geändert von guskg; 03.06.2009, 21:27.

  • #2
    Zitat von guskg Beitrag anzeigen
    Nur in einer Variable ist kein Wert und sie ist nicht definiert.
    Geht's noch etwas ungenauer ...?

    Was haben deine Kontrollausgaben ergeben, wie sieht das HTML-Formular aus, ...?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Alles im Script

      Die HTML Ausgabe ist in den Scriptteilen integriert.

      Die Fehlermeldungen stehen zwischen den Scrips.

      Ich habe jetzt in der Tabellen Ausgabe
      vor dem Submitbutton die cardholder ID geschrieben.
      Jetzt werden Daten mitübertragen auf die zweite Seite, aber leider immer nur die letzte Zeile der Tabelle.

      PHP-Code:
                      <?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_name']."&nbsp;</td>";
                              echo 
      "<input type='hidden' name='cardholder_id' value='".$row['cardholder_id']."' />";
                              echo 
      "<td width=50><font style=float:right>"?><input name="recht" type='submit' value='Ändern'><?php "</td>";
                              echo 
      "<td width=5></td>";
                              echo 
      "</tr>";
                              
                              
                          }
                      
      ?>
      Ich weis, es kann nicht viel sein, aber ich komme nicht dahinter.

      Kommentar


      • #4
        was ganz normal ist ... wenn man
        HTML-Code:
        <input type='hidden' name='cardholder_id' (...) />
        verwendet in einer schleife ;D probiers es mal mit einem Array.

        HTML-Code:
        <input type='hidden' name='cardholder_id[]'  (...) />
        Bitte Beachten.
        Foren-Regeln
        Danke

        Kommentar


        • #5
          Das funktioniert nicht

          PHP-Code:
                echo "<input type='hidden' name='cardholder_id' value='".$row['cardholder_id']."' />";
                echo "<td width=50><font style=float:right>"?><input name="recht" type='submit' value='Ändern'><?php "</td>";
          Meinst du diese Zeile(n) so ändern???

          Das funktioniert irgendwie nicht

          Kommentar


          • #6
            was funktioniert irgendwie nicht ? ...
            in der While schleife erstellst du ... mehrere Datensätze deren Datensatz ID schreibst du in ein hidden input ... in deinem beitrag sagst du nur die Letzte Datensatz ID kommt an ... damit du auswerten kannst mit welchem Datensatz du etwas machen willst muss das $_POST['cardholder_id'] ein array sein ;D oder es gehört nicht die while schleife da beim absenden des Formulares nur der letzte Hidden input mit übertragen wird weil alle anderen überschrieben werden ;D probier es mal aus


            var_dump($_POST['cardholder_id']) mit <input type='hidden' name='cardholder_id' />
            und dann mal

            var_dump($_POST['cardholder_id']) <input type='hidden' name='cardholder_id[]' (...) />

            du wirst einen unterschied feststellen.
            Bitte Beachten.
            Foren-Regeln
            Danke

            Kommentar


            • #7
              Wollte nur eine Zeile übertragen

              Hi

              wenn ich deinen Befehl einbinde werden (glaube ich) alle Zeilen übertragen.
              Ich habe in jeder Tabellenzeile einen ändern Button und möchte diese Zeile in der der Button ist zum bearbeiten übertragen.

              mfg Günter

              Kommentar


              • #8
                das wird solange nicht gehen bis du den Form Tag in die While mit aufnimmst und somit mehrere Formulare erstellst.
                oder
                Du irgendwie Definierst welchen Block er nachdem alle daten übertragen wurden auswerten soll.

                es ist im Grunde recht simpel. Entweder alle daten oder nur den datensatz block ... so wie du es machst zur Zeit ohne das du array elemente benutzt im namen wirste ewig nur die Daten vom letzten While durchlauf erhalten.

                also bau mal die Form tags in die While.
                Bitte Beachten.
                Foren-Regeln
                Danke

                Kommentar

                Lädt...
                X