php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack (3) Themen-Optionen Thema bewerten
  3 links from elsewhere to this Post. Click to view. #1 (permalink)  
Alt 07-01-2015, 16:12
Heavy-Dee
 Registrierter Benutzer
Links : Onlinestatus : Heavy-Dee ist offline
Registriert seit: Jan 2015
Beiträge: 6
Heavy-Dee befindet sich auf einem aufstrebenden Ast
Standard Übergabe $_POST aus einer Tabellenzelle

Ein frohes neues Jahr an alle Forenmitglieder.

Ich bearbeite gerade einen Dienstplaner der die Schichtdienste aller Angestellten anzeigt.

Dazu wird nach Auswahl eines Monat/Jahr eine Tabelle angezeigt in der horizontal die Tage des Monats und vertikal alle Angestellten untereinander dargestellt werden.
Die eingetragenen Dienstarten (Tagschicht, Nachtschicht ect. ) werden bei jedem Angestellten an dem entsprechenden Tag (mit entsprechender Formatierung und ggf. vorhandenem Kommentar als 'title') angezeigt.
Nun möchte ich das beim anklicken einer Tabellenzelle der entsprechende Datumswert für den angeklickten Tag (Spalte) und die NutzerID des angeklickten Nutzers (Zeile) zur Ersteingabe bzw. Bearbeitung mittels $_POST übergeben werden.
Das onklick event befindet sich im Tag der Tabellenzelle: (echo "<td onclick='document.edit_data.submit()'; align='center'"


PHP-Code:
<div>
    <fieldset class="table_list">
        <form class="frm" name='edit_data' method='POST' action='planning.php?mpkt=1'> 
        <table class="table" align='center'>
            <thead class="frm">
                <tr class="frm">
                    <th align='left' width='160px'></th>

                    <?php
                    
// Schleife für Tage des Monats / 1.Zeile
                    
for ($selTag 1$selTag <= date("t",$selDatum); $selTag++)
                    {
                        
$selDatum mktime(000$selMonat$selTag$selJahr);        // selektietes Datum als "timestamp"
                        
$df_tag Dienstfrei($selMonat$selTag$selJahr);              // Übergabewert Funktion Dienstfrei [0]=Mo.-Fr. [1]=Sa. [2]=Sa+ [3]=So./Feiertag
        
                        
$ferien_tag Ferien($selMonat$selTag$selJahr);              // Übergabewert Funktion Ferien [0]=keine Ferien [1]=Ferien in Bayern
        
                        
echo "<th align='center' width='28px' ";
                            IF (
$df_tag)
                            {
                                echo 
"bgcolor='#DDDDDD' ";
                            }
                            Else
                            {
                                echo 
"bgcolor='#F5F5F5' ";        
                            }
                            IF (
$_aktDatum == $selDatum)
                            {
                                echo 
"style='border: solid 1px red; padding-top 3px'>";
                            }
                            Else
                            {
                                echo 
"style='border: none; padding-top: 3px'>";        
                            }
                            
# Ausgabe Tage u. Bezeichnung des Wochentags                        
                            
echo date ("d"$selDatum) . "<br>" .
                            
"<div style='font-size: 10px;  ";
                            
# Ausgabe der Ferien in Bayern
                            
IF ($ferien_tag)
                            {
                                echo 
"border-bottom: solid 5px #85ADAD;' title='Ferien'>";
                            }
                            Else
                            {
                                echo 
"border-bottom: solid 5px transparent;'>";        
                            }
                            echo 
strtr(date("w"$selDatum), $arrTage_kz) . "</div>";                            
                        echo 
"</th>";
                    }
                    
?>    
                </tr>
            </thead>        
            <?php
            
// Gruppierung der Datensätze nach Fachbereichen            
            
$sql_o "SELECT * FROM `unitc`
                    INNER JOIN `organ` ON organ.orgkey = unitc.fk_orgkey
                    WHERE `orgid` = '$_OID'               
                    ORDER BY `unitcid` asc"
;
            
$res_o mysql_query($sql_o);
            
            while(
$row=mysql_fetch_array($res_o))
            {    
                
$cid $row['unitcid'];
                
$cname $row['unitcname'];
                echo 
"<tr class='frm'>";    
                    echo 
"<td class='frm_o' colspan='$selTag' >";
                        echo 
$cname;                        
                    echo 
"</td>";    
                echo 
"</tr>";

                
// Zeilenweise Auflistung der Nutzer (Hauptbereich der Tabelle)                
                
$sql_u "SELECT `rankshort`, `surname`, `forename`, userid FROM `user`
                        INNER JOIN `rank` ON rank.rankkey = user.fk_rankkey
                        INNER JOIN `role` ON role.rolekey = user.fk_rolekey
                        INNER JOIN `organ` ON organ.orgkey = user.fk_orgkey
                        INNER JOIN `unitc` ON unitckey = user.fk_unitckey
                        WHERE `staffno` != 0 AND `orgid` = '$_OID' AND `unitcid` = $cid             
                        ORDER BY `roleid` desc, `rankid` desc, `surname` asc"
;
                
$res_u mysql_query($sql_u);
                
                while(
$row=mysql_fetch_array($res_u))
                {    
                    
$rank $row['rankshort'];
                    
$name $row['surname'];
                    
$vname $row['forename'];
                    
$userid $row['userid'];
                    echo 
"<tr class='frm'>";    
                        
//    1. Spalte Personal (DstG, Name, Vorname)            
                        
echo "<td align='left'>";
                            echo 
$rank " " $name " " $vname;
                        echo 
"</td>";
                        
//  Tagesspalten für den entsprechenden Monat
                        
for ($selTag 1$selTag <= date("t",$selDatum); $selTag++)
                        {
                            
$selDatum mktime(000$selMonat$selTag$selJahr);        // selektietes Datum als "timestamp"
                            
$df_tag Dienstfrei($selMonat$selTag$selJahr);              // Übergabewert Funktion Dienstfrei [0]=Mo.-Fr. [1]=Sa. [2]=Sa+ [3]=So./Feiertag

                            
echo "<td  onclick='document.edit_data.submit()'; align='center'";                        
                                IF (
$df_tag)
                                {
                                    echo 
"bgcolor='#DDDDDD' ";
                                }
                                Else
                                {
                                    echo 
"bgcolor='#F5F5F5' ";        
                                }
                                IF (
$_aktDatum == $selDatum)
                                {
                                    echo 
"style='border:solid 1px red'>";
                                }
                                Else
                                {
                                    echo 
"style='border:none'>";        
                                }    
                                
                                
// Zeilenweise Auflistung der Nutzerdaten (Hauptbereich der Tabelle)    
                                
$selDatum date("Y-m-d",$selDatum);    # Umwandlung in strTime in Datumsformat            
                                
$sql_d "SELECT fk_userid, shiftdate, shiftshort, shiftcolour, comments
                                FROM `data_$_OID`                            
                                INNER JOIN `shift` ON `shift`.shiftkey = `data_$_OID`.fk_shiftkey
                                WHERE `data_$_OID`.fk_userid = '$userid' AND shiftdate = '$selDatum'"
;
                                
$res_d mysql_query($sql_d);
            
                                while(
$row=mysql_fetch_array($res_d))
                                {
                                    
$fk_userid $row['fk_userid'];                                
                                    
$shiftdate $row['shiftdate'];
                                    
$shiftshort $row['shiftshort'];
                                    
$shiftcolour $row['shiftcolour'];
                                    
$comments $row['comments'];


                                    
// <div> für Formatierung der Daten und Anzeige der Kommentare
                                    
echo "<div style='line-height: 16px; font-weight: 100; background: $shiftcolour; ";
                                    If (
$comments != NULL
                                    {
                                        echo 
"font-weight: 700; font-style: italic;' title='$comments";            # Format u. Ausgabe  'Comments'
                                    
}
                                    echo 
"' >";    
                                    echo 
$shiftshort "</div>";    # Ausgabe Schichtart                
                                
}
// Formularfelder für Datum und NutzerId (hier noch als Text später 'hidden')                        
echo "<input type='text' name='sDatum' value='$selDatum'>";    // Datum der Spalte
echo "<input type='text' name='sUser' value='$userid'>";        // UserId der Benutzerzeile

                            
echo "</td>";
                        }
                    echo 
"</tr>";                            
                }
            }        
            
?>
        </table>
        </form>
    </fieldset>    
</div>
<?php
$S 
$_POST['sDatum'];
$U $_POST['sUser'];
echo 
$S "/" $U;
?>
...
die Input Felder in den Zellen zeigen die korrekten Werte an, aber beim klick auf eine Zelle werden diese nicht richtig übergeben.
Ich vermute das bei der Übermittlung der Daten die "letzten" Werte aus den Schleifen übergeben werden, aber ich habe keine Ahnung wie ich das abfangen kann.
Wäre nett wenn mir jmd helfen könnte.
Mit Zitat antworten
  #2 (permalink)  
Alt 07-01-2015, 19:02
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Worked as designed. Du überschreibst jedes Mal den Namen des Input-Feldes, also wird auch nur der letzte Wert übermittelt. Mach mal Folgendes
PHP-Code:
echo "<input type='text' name='sDatum[]' value='$selDatum'>";
echo 
"<input type='text' name='sUser[]' value='$userid'>"
und dann lass dir das mit einem print_r ausgeben. Dann verstehst du es.

Gruß
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 07-01-2015, 20:26
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist gerade online
Registriert seit: Mar 2008
Beiträge: 3.576
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Datenbankabfragen haben übrigens inmitten der HTML-Ausgabe nichts verloren. Halte dich an das EVA-Prinzip.

SELECT * sollte niemals verwendet werden. Gib im SELECT immer die Spalten an, die du im Ergebnis erwartest.

Du beachtest die Kontextwechsel nicht. Werte, die du in HTML-Code einfügst, müssen mit htmlspecialchars() maskiert werden. Werte, die du in SQL-Code einfügst, müssten mit mysql_real_escape_string() maskiert werden.

Die mysql_* Funktione sind veraltet und sollten nicht mehr verwendet werden. Als Alternative gibt es mysqli und PDO.
Mit Zitat antworten
  #4 (permalink)  
Alt 08-01-2015, 09:59
Heavy-Dee
 Registrierter Benutzer
Links : Onlinestatus : Heavy-Dee ist offline
Registriert seit: Jan 2015
Beiträge: 6
Heavy-Dee befindet sich auf einem aufstrebenden Ast
Standard

@ Kropff:

die Ausgabe von
PHP-Code:
$S $_POST['sDatum'];
echo 
print_r($S,true); 
liefert folgendes Ergebnis:
Array ( [0] => 2015-01-01 )

Alles klar, aber wie kann ich das ändern?
Mit Zitat antworten
  #5 (permalink)  
Alt 08-01-2015, 10:12
Heavy-Dee
 Registrierter Benutzer
Links : Onlinestatus : Heavy-Dee ist offline
Registriert seit: Jan 2015
Beiträge: 6
Heavy-Dee befindet sich auf einem aufstrebenden Ast
Standard

@ h3ll:

Wenn das so funktioniert wie ich mir das vorstelle versuche ich die Datenbankabfragen aus dem html-teil zu nehmen und passe auch die select-Anweisungen entsprechend an. Auch die mysql_* Funktionen möchte ich dann auf mysqlli umstellen.
Da ich aber Änfänger bin und nicht sofort den Überblick verlieren möchte, versuche ich es erst zu realisieren (mit den mir teil-bekannten alten) und dann anzupassen.
Die folgende Aussage verstehe ich nicht richtig, versuche mir aber die "Grunglagen" anzueignen.

Zitat:
Zitat von h3ll
Du beachtest die Kontextwechsel nicht. Werte, die du in HTML-Code einfügst, müssen mit htmlspecialchars() maskiert werden. Werte, die du in SQL-Code einfügst, müssten mit mysql_real_escape_string() maskiert werden.
Mit Zitat antworten
  #6 (permalink)  
Alt 08-01-2015, 14:37
Heavy-Dee
 Registrierter Benutzer
Links : Onlinestatus : Heavy-Dee ist offline
Registriert seit: Jan 2015
Beiträge: 6
Heavy-Dee befindet sich auf einem aufstrebenden Ast
Standard

Ich habe mir nun 2 Arrays erstellt
PHP-Code:
$s_arr [$selTag]  = $selTag;
$s_arr [$selTag][$userid]   = $userid
und meine Input-Felder wie folgt angepasst
PHP-Code:
echo "<input type='text' name='sDatum[$selTag]' value='$s_arr[$selTag][$selDatum]'>";    // Datum der Spalte
echo "<input type='text' name='sUser[$userid]' value='$s_arr[$selTag][$userid]'>";    // UserId der Benutzerzeile 
als Ergebnis wird nun in jeder Zelle der Tageswert u. die Userid angezeit
-----------------------------------------------------
1[2015-01-01]. | 2[2015-01-02]. | 3[2015-01-03]. |
1[d215c89a].... | 2[d215c89a].... | 3[d215c89a].... |
-----------------------------------------------------
1[2015-01-01]. | 2[2015-01-02]. | 3[2015-01-03]. |
1[7e4986c7].... | 2[7e4986c7].... | 3[7e4986c7].... |
-----------------------------------------------------
1[2015-01-01]. | 2[2015-01-02]. | 3[2015-01-03]. |
1[3afa2593].... | 2[3afa2593].... | 3[3afa2593].... |
-----------------------------------------------------

allerdings bekomme ich es nicht hin die entsprechenden Werte zu über geben.
Wie schaffe ich es, das beim anklichen des "blauen" Tabellenfeldes die Werte der Input-Felder übergeben werden.

Soll:
sDatum = 2015-01-02
sUser = 7e4986c7


PHP-Code:
print_r $s_arr ); 
liefert folgendes Ergebnis
Array
(
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => 5
[6] => 6
[7] => 7
[8] => 8
[9] => 9
[10] => 10
[11] => 11
[12] => 12
[13] => 13
[14] => 14
[15] => 15
[16] => 16
[17] => 17
[18] => 18
[19] => 19
[20] => 20
[21] => 21
[22] => 22
[23] => 23
[24] => 24
[25] => 25
[26] => 26
[27] => 27
[28] => 28
[29] => 29
[30] => 30
[31] => 31
[32] => Array
(
[d215c89a] => d215c89a
[7e4986c7] => 7e4986c7
[3afa2593] => 3afa2593
[bd83e97e] => bd83e97e
[8eb82cd2] => 8eb82cd2
[e130e8f5] => e130e8f5
[24d5ee15] => 24d5ee15
[207e55a1] => 207e55a1
[b148c4a1] => b148c4a1
[7d91a0cb] => 7d91a0cb
[d83631b2] => d83631b2
[b213426f] => b213426f
[5791d5fb] => 5791d5fb
[548fadcc] => 548fadcc
[ef7c7242] => ef7c7242
[a0c679c3] => a0c679c3
[252d7be6] => 252d7be6
[561d0daf] => 561d0daf
[3f24094b] => 3f24094b
[2d0fb2ca] => 2d0fb2ca
[f56f5af0] => f56f5af0
[9ac53996] => 9ac53996
[9d7dbe68] => 9d7dbe68
[5bd1abbb] => 5bd1abbb
[62244eee] => 62244eee
)
)

vorab Danke für eine mögliche Hilfestellung
Mit Zitat antworten
  #7 (permalink)  
Alt 08-01-2015, 19:40
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist gerade online
Registriert seit: Mar 2008
Beiträge: 3.576
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Heavy-Dee Beitrag anzeigen
Wenn das so funktioniert wie ich mir das vorstelle versuche ich die Datenbankabfragen aus dem html-teil zu nehmen und passe auch die select-Anweisungen entsprechend an. Auch die mysql_* Funktionen möchte ich dann auf mysqlli umstellen.
Ich halte es nicht besonders Zielführend als Anfänger erst das Falsche zu lernen, nur um es dann später umändern zu müssen. Da hast du nur doppelte Arbeit.
Mit Zitat antworten
  #8 (permalink)  
Alt 08-01-2015, 19:50
Heavy-Dee
 Registrierter Benutzer
Links : Onlinestatus : Heavy-Dee ist offline
Registriert seit: Jan 2015
Beiträge: 6
Heavy-Dee befindet sich auf einem aufstrebenden Ast
Standard

naja wahrscheinlich hast du recht.
Beim nächsten Abschnitt im obigen Projekt versuche ich es gleich anders.
Aber erst mal brüte ich weiter über meiner Datenübergabe.
Mit Zitat antworten
  #9 (permalink)  
Alt 12-01-2015, 10:58
Heavy-Dee
 Registrierter Benutzer
Links : Onlinestatus : Heavy-Dee ist offline
Registriert seit: Jan 2015
Beiträge: 6
Heavy-Dee befindet sich auf einem aufstrebenden Ast
Standard

da ich zur Umsetzung des Themas noch einige Zeit benötigen werde, möchte ich diesen Thread beenden.
Zeitgleich möchte ich mich hiermit jegliche Art der Unterstützung in diesem Forum bedanken!
Mit Zitat antworten
Antwort

Lesezeichen


LinkBacks (?)
LinkBack to this Thread: https://www.php-resource.de/forum/php-developer-forum/104894-ubergabe-_post-aus-einer-tabellenzelle.html
Erstellt von For Type Datum
php Übergabe $_POST aus einer Tabellenzelle This thread Refback 13-01-2015 07:37
[Erledigt] Übergabe $_POST aus einer Tabellenzelle - php.de This thread Refback 12-01-2015 14:24
Übergabe $_POST aus einer Tabellenzelle - php.de This thread Refback 08-01-2015 11:34

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
$_post übergibt nur das erste Wort aus einer Tabelle yogibaer PHP Developer Forum 10 07-08-2012 19:32
mitscrollendes Element innerhalb einer Tabellenzelle Chriss HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 24-05-2008 23:07
$_Post variablen alle in einer..!?!?!? bailey PHP Developer Forum 6 25-06-2006 11:28
Problem bei der Übergabe von Werten aus einer Datebank in ein Formular perfi PHP Developer Forum 13 19-02-2004 23:10
text in einer tabellenzelle abrollen Hiob Apps und PHP Script Gesuche 11 27-11-2003 10:58

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:21 Uhr.