Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

HTML PHP MySQL Webanwendung

Mitglied: hahaxd3

hahaxd3 (Level 1) - Jetzt verbinden

07.07.2015, aktualisiert 14:58 Uhr, 1230 Aufrufe, 12 Kommentare, 1 Danke

Hallo Leute,
Ich möchte gerne Meine Datenbank auf einer webseite darstellen.
Dabei sollte diese Als normale Tabelle dargestellt sein. Sie sollte auch Editier bar sein und auch einträge löschen können.
Was ich habe:
Ich habe die Datenbank.
Ich habe diese als CSV exportiert und mit php als Tabelle dargestellt.
So was noch fehlt sind die Buttons die einmal die Zeile Löscht( auch in der datenbank / SQL code kein problem aber der HTML/php code ) und der Butten der diese zeile löscht( auch wie der andere Butten in der DB / SQL wie gesagt nicht das problem ) Jetzt stellt sich die Frage wie ich dem SQL statmant den Namen der zeile übergebe und oder wie ich die geänderten Html code der datenbank übergebe/ php übergeben.
Ich poste erstmal mein Code der Teilweise nicht funktioniert

Versuch Mysql hinzuzufügen :
01.
<?php
02.
mysql_connect("localhost", "root" , "root");
03.
mysql_select_db("Csv");
04.
$Prudukt = $_POST[Prudukt];
05.
$Link = $_POST[Link];
06.
$Art = $_POST[Art];
07.
$htccess = $_POST[htccess];
08.
$Login = $_POST[Login];
09.
$PW = $_POST[PW];
10.
$Version = $_POST[Version];
11.
$Pflegetool = $_POST[Pflegetool];
12.
$SSLFaelligkeit = $_POST[SSLFaelligkeit];
13.
$Hosting = $_POST[Hosting];
14.
$VersionBE = $_POST[VersionBE];
15.
$NodeBE = $_POST[NodeBE];
16.
$VersionFE = $_POST[VersionFEe];
17.
$NodeFE = $_POST[NodeFE];
18.
$DBServer = $_POST[DBServer];
19.
$DBUser = $_POST[DBUser];
20.
$DBVersion = $_POST[DBVersion];
21.
$RMIPort = $_POST[RMIPort];
22.
$Monitoring = $_POST[Monitoring];
23.
$MonitoringURL = $_POST[MonitoringUR];
24.
$MonitoringPattern = $_POST[MonitoringPattern];
25.
$MonitoringLogin = $_POST[MonitoringLogin];
26.
$MonitoringMessage = $_POST[MonitoringMessage];
27.
$IPSperren = $_POST[IPSperren];
28.
$PflegetoolLogins = $_POST[PflegetoolLogins];
29.

30.

31.
$insert = mysql_query("INSERT INTO Anwendung_Hosting
32.
(Link,Art,htaccess,Login,PW,Version,Pflegetool,SSLFaelligkeit,Hosting,VersionBE,NodeBE,VersionFE,NodeFE,DBServer,DBUser,DBVersion,RMIPort,Monitoring,MonitoringURL,MonitoringPattern,MonitoringLogin,MonitoringMessage,IPSperren,PflegetoolLogins")
33.
VALUES
34.
('$Link',
35.
'$Art',
36.
'$htaccess',
37.
'$Login',
38.
'$PW$Version',
39.
'$Pflegetool',
40.
'$SSLFaelligkeit',
41.
'$Hosting',
42.
'$VersionBE',
43.
'$NodeBE',
44.
'$VersionFE',
45.
'$NodeFE',
46.
'$DBServer',
47.
'$DBUser',
48.
'$DBVersion',
49.
'$RMIPort',
50.
'$Monitoring',
51.
'$MonitoringURL',
52.
'$MonitoringPattern',
53.
'$MonitoringLogin',
54.
'$MonitoringMessage',
55.
'$IPSperren',
56.
'$PflegetoolLogins')
57.
or die(mysql_error());
58.
?>
( die html seite erspare ich mal
Aus CSV zu Html:
01.
<?php 
02.

03.
$hasTitle = true; 
04.
echo '<table border="0" cellspacing="0" cellpadding="5" width="500" class="csvTable">';
05.
$handle = fopen("hosting.csv", "r"); 
06.
$start = 0; 
07.
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)  
08.
{ 
09.

10.
    echo '<tr>' . "\n"; 
11.
   
12.
  for ( $x = 0; $x < count($data); $x++) 
13.
    { 
14.

15.
    if ($start == 0 && $hasTitle == true) 
16.
        echo "<th>.$data[$x].'</th>' . "\n"; 
17.

18.
    else 
19.

20.
        echo "<td>.$data[$x].'</td>' . "\n"; 
21.

22.
    } 
23.
     
24.
    $start++; 
25.
     
26.
    echo '</tr>' . "\n"; 
27.
     
28.
} 
29.

30.
fclose($handle); 
31.

32.
echo '</table>'; 
33.

34.
?>
Ich hoffe einer kann mir Helfen

Danke
Mitglied: Philipp711
07.07.2015, aktualisiert um 14:47 Uhr
Hallo,

zunächst würde ich den Connect zur Datenbank in einer eigenen PHP-Datei realisieren. In etwa so:

01.
<?php
02.
error_reporting(E_ALL);
03.
// Zum Aufbau der Verbindung zur Datenbank
04.
define ( 'MYSQL_HOST',      'DATENBANKHOST' ); <- DB-HOST eintragen
05.
define ( 'MYSQL_BENUTZER',  'DATENBANKBENUTZER' ); <- DB-User eintragen
06.
define ( 'MYSQL_KENNWORT',  'PASSWORT' ); <- DB-PW eintragen
07.
define ( 'MYSQL_DATENBANK', 'DATENBANK' ); <- DB eintragen
08.
 
09.
$db_link = mysqli_connect (MYSQL_HOST, 
10.
                           MYSQL_BENUTZER, 
11.
                           MYSQL_KENNWORT, 
12.
                           MYSQL_DATENBANK);
13.

14.
if ( $db_link ) {
15.
echo 'Datenbankverbindung erfolgreich';
16.
}
17.
else {
18.
die('keine Verbindung möglich: ' . mysqli_error());
19.
}
20.
?>
in die Eigentlichen PHP-Datei kommt dann so etwas rein:

01.
<?php
02.

03.
$POST1 = $_POST ['VAR'];
04.
$POST2 = $_POST ['VAR'];
05.
$POST3 = $_POST ['VAR'];
06.
                    
07.
//Verbindungsaufbau mit Datenbank
08.
include ("dbconnect.php"); <- da muss der Pfad für die oben gezeigte Datei hin         
09.
$db_link = mysqli_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT, MYSQL_DATENBANK); <- hier musst du gar nichts ändern!!
10.
                         
11.
$sql = "Insert Into Tabelle (Col1,Col2,Col3) Values ('Post1',Post2,'Post3')"; <- Hier wird der Insert in "Klartext" definiert und in die Variable $SQL gespeichert
12.

13.
$db_insert = mysqli_query($db_link, $sql); <- Durch mysqli_query($db_link, $sql) wird eine Query mit den Verbindungsdaten aus $db_link mit dem Inhalt von $sql ausgeführt. Das Ergebnis wird in $db_insert gespeichert. 
14.
                            
15.
if (!$db_insert) {
16.
die('Ungültige Abfrage: ' . mysqli_error($db_link)); <- Sollte irgendwas schief gelaufen sein, wird es hierdurch ausgegeben.
17.
}
18.
Hoffe ich konnte dir helfen!
Bitte warten ..
Mitglied: SlainteMhath
07.07.2015 um 14:47 Uhr
Moin,

bitte setze den Code den du hier postest in <code > Tags, so ist das nicht lesbar.

lg,
Slainte
Bitte warten ..
Mitglied: Arano
07.07.2015 um 22:19 Uhr
Hi hahaxd3.

Oh mann, was bekommst du den hier für antworten ? Das ist ja nicht zu glauben...

@Philipp711
zunächst würde ich...
Als erstes sollte man lesen !

1. er HAT
  • einen Datenbankverbindungsaufbau und
  • ein INSERT-Statement
2. viel besser ist dein Code leider auch nicht:
  • error_reporting(E_ALL) sollte NUR ZUM TESTEN / ENTWICKELN verwenden ! Statt "E_ALL" also bitte "-1" und/oder ini_set( 'display_errors', 'Off') Fehlermeldungen haben die Besucher/Anwender niemals zu Gesicht zu bekommen. Gerade die MySQL-Verbindungsmeldung enthält sensible Daten -> den Datenbankuser und bietet somit Angriffsfläche !
  • $db_link = mysqli_connect( ... ); if( false ) echo mysql_error(); Hier wird die Fehlermeldung, die nicht an die "Öffentlichkeit" sollte, gleich zweimal ausgegeben. Einmal beim auftreten des Fehlers (Aufruf von mysqli_connect()) und in dem späterem echo. Sollte nicht sein und ist doppelt !
  • in deiner dbconnect.php wird bereits eine Datenbankverbindung hergestellt, warum erstellst du nach dem include eine Zweite Verbindung mit der du die Erste (ungenutzte) überschreibst !?


Wie wäre es denn, wenn wir erst einmal die Frage lesen und versuchen zu Verstehen...
Aus der DB in eine CSV, CSV auf Seite darstellen UND Änderungen in BEIDEN Quellen übernehmen.
Ganz einfach !
Weg mit der CSV-Datei (oder hat die noch einen weiteren Zweck der unerwähnt blieb ?)

Wenn CSV-Datei weg kann:
Jede Tabelle sollte eine Spalte ID bekommen, in dieser wird eine fortlaufende Nummer (AUTO_INCREMENT (MySQL) geführt die dann jeden Datensatz eindeutig IDentifiziert. Diese ID fügst du als Verstecktes Formularfeld mit in das HTML ein. Über diese ID kann dann jeder Datensatz einfach bearbeitet oder gelöscht werden:
ändere wo ID=123 oder
löscher wo ID=321
-> Ich kann mit deinen Daten nicht viel anfangen, aber möglicherweise eignet sich auch ein bereits existierendes Feld dazu ?!

Wenn die CSV-Datei gebraucht wird:
Dann wird es leider komplizierter !
Dann muss immer der komplette Dateiinhalt durchlaufen bzw neu geschrieben werden. Vielleicht kann man auch zu der entsprechenden Stelle "springen" aber dann muss man berechnen was mit dem Inhalt dahinter passieren muss: alle Zeichen X Stellen nach vorne Ziehen, oder nach hinten schiebe. Wenn der neue Inhalt kürzer ist, muss ermittelt werden wieviel von dem alten gelöscht werden soll... usw und sofort.
Da die Datenbank aber auch hier geändert werden würde, könnte man vielelciht auch nah dem UPDATE die CSV-Datei einfach neu erstellen lassen so das die weitern, davon abhängenden Prozesse, trotzdem auf aktuelle Daten zugreifen können.

Aber warten wir doch erst einmal was der Fragesteller zum Nutzen der CSV-Datei sagt.


~Arano
Bitte warten ..
Mitglied: hahaxd3
08.07.2015, aktualisiert um 10:11 Uhr
Hi Arano,
Das mit den ID's hab ich mir auch Überlegt aber weiss überhaubt nicht wie. Mir ist auch grade eingefallen das man einen Link zu einen php script aufrufen kann und dieser über gibt eine Variable zum löschen des eintrages mit den Namen : $name oder so. Und mit dem bearbeiten genau so nur das in ein Formular die Eintrage eingefügt werden und dann mit UPDATE diesen updatet. Wie ist das möglich oder ist das überhaubt möglich ?
Wie du bereits gesagt hast war es auch meine idee nach jedem Ändern der Tabbele die CSV auch neu zu laden.
Die CSV Datei wird für ein Cronjob gebraucht.
Zur sicherheit ist ist folgenes zu sagen: Ich werde noch htaccess einbauen und die Seite wird nur Intern genuutzt also kein Zugriff von außerhalb.
Für den Cronjob habe ich auch gedacht jedesmal bein Ausführen des Scriptes wird vorher auf ein link gegangen der die CSV akualisiert damit das Script nicht mit alten daten läuft.

Ich kann keine auch mein gedachten Ablauf hier rein schreiben wenn es helfen würde.
// edit : Wenn es möglich ist mit einen Befehl den ganzen Inhalt der DB dazustellen währe das mir auch zu genüge aber diese sollten denn trd veränderbar und löschbar sein

Grüße

hahaxd3
Bitte warten ..
Mitglied: Arano
08.07.2015, aktualisiert um 21:04 Uhr
Hi

Genau, Ziel der ID ist es "etwas zu haben" das man "weiterreichen" kann um die Daten entsprechen zu aktualisieren oder zu löschen.
Klar ist das möglich Wir geben die ID oder irgend ein anderes, geeignetes und eindeutiges Feld als versteckten Parameter über das Formular mit (als normaler GET-Parameter ginge das aber auch).

Jetzt musst du aber erst noch einmal selber entscheiden !:
Der Cronjob, wie häufig läuft der ?
Wenn der z.B. nur einmal in der Nacht läuft aber tagsüber von Dutzenden Mitarbeiter (auch die können Sicherheitslücken nutzen (absichtlich oder unbeabsichtigt, der Mensch ist neugierig !)) die Daten bearbeitet werden, wäre es nur unnötig jedes mal die CSV-Datei neu zu erzeugen.
Könnt aber ja auch anders herum sein, selten bearbeiten und häufig nutzen, dann wäre es wichtig sofort die CSV-Datei zu aktualisieren.
Es kann aber auch eine jede mögliche Kombination dazwischen sein, das weisst nur du.

Also, man könnte zu jedem UPDATE oder DELETE auch die CSV-Datei von PHP neu erstellen lassen (ggf. sogar nur mit einem SQL-Query (wenn ich mich nicht irre)) sofern PHP/Webserver die Schreibrechte auf die Zieldatei besitzt.
Oder man bearbeitet den Cronjob entsprechen im Sinne von: mysql_dump into /path/datei.csv && /var/myscript.sh bzw. schiebt das mysql_dump in das Script.


Die Anzeige und das bearbeiten könnte man z.B. so gestalten (habe mich etwas mehr an die OOP-Version von MySQLi gehalten)
Queries anpassen in Zeile 34, 48 und 83
Namen anpassen in Zeile 107 bis xxx
Die <label for="ID"> zeigt auf die <input id="ID"> um ein Zuordnung herstellen zu können.
Server, User, Pass und Db sowieso *g*
Und wie immer: Ungetestet, Benutzung auf eigenen Gefahr und NICHT OHNE BACKUP DER DATENBANK !
01.
<?php
02.
// fürs TESTEN einfach auskommentieren
03.
@ini_set( 'error_reporting', '0' ); //   -1 hat übrigends keine wirkung wie ich gerade feststellen musste... -.-
04.
@ini_set( 'display_errors',  'Off' );
05.

06.

07.
define( 'MYHOST', 'localhost' );
08.
define( 'MYUSER', 'Benutzername' );
09.
define( 'MYPASS', 'Passwort' );
10.
define( 'MYDABA', 'DAtenBAnk' );
11.

12.
$My = new mysqli( MYHOST, MYUSER, MYPASS, MYDABA );
13.
if( NULL!=$My->connect_error )
14.
    die( 'Fehler bei der Datenbankverbindung !' );
15.

16.

17.

18.

19.
/**
20.
 * VERARBEITUNG
21.
 * Jenach dem ob der UPDATE oder DELETE Button gedrückt wurde, wird hier ein entsprechendes
22.
 * Query erstellt und anschließend ausgeführt.
23.
 */
24.
if( isset($_POST['action']) )
25.
{
26.

27.

28.
    // erstellen query:
29.
    
30.
    switch( $_POST['action'] )
31.
    {
32.
        // dieses update-case kann man auch in eine eigene datei schieben und dort
33.
        // ggf noch die eingaben auf plausibilität prüfen um fehleingaben zu verhindern
34.
        // case 'update: include './pfad/action_update.inc.php'; break;
35.
        case 'update': $sqlQuery = "UPDATE `tabelle`
36.
                                       SET `feld1` = '".$My->real_escape_string($_POST['name1'])."',
37.
                                           `feld2` = '".$My->real_escape_string($_POST['name2'])."',
38.
                                           `feld3` = '".$My->real_escape_string($_POST['name3'])."',
39.
                                           `feld4` = '".$My->real_escape_string($_POST['name4'])."'
40.
                                            ...
41.
                                            und deine weiteren Felder...
42.
                                            ...
43.
                                            
44.
                                     WHERE `IDoderNAME` = '".$My->real_escape_string($_POST['object'])."'
45.
                                     LIMIT 1"; // LIMIT 1 weil:
46.
                                     // nach dem ersten Treffer aufhören, sont wird die komplette DB durchsucht
47.
                                     // obwohl wir wissen das nichts mehr da sein kann !
48.
                       break;
49.
        case 'delete': $sqlQuery = "DELETE FROM `tabelle`
50.
                                          WHERE `IDoderNAME` = '".$My->real_escape_string($_POST['object'])."'
51.
                                          LIMIT 1";
52.
                       break;
53.
        default: die( 'Unbekannte Aktion - ABBRUCH !' );
54.
                 // abbruch weil wir die ausführung des queries (welches nicht existiert)
55.
                 // verhindern müssen, sonst gibts ne hässliche PHP-fehlermeldung.
56.
    }
57.
    
58.
    
59.
    // query ausführen:
60.
    
61.
    if( ! $My->query($sqlQuery) )
62.
    {
63.
        echo '<span class="errorMsg">Achtung, fehler beim ausführen des Queries !</span>';
64.
        // KEIN PROGRAMMABBRUCH, wir wollen die Liste trotzdem angezeigt bekommen (s. unten)
65.
    }
66.
    else
67.
    {
68.
        // alles okay, update oder delete wurde durchgeführt
69.
        // gebe KEINE Meldung aus, wir wollen nur meckern
70.
        // WENN etwas fehl schlug.
71.
    }
72.
}
73.

74.

75.

76.

77.
/**
78.
 * ANZEIGE
79.
 * Hier wenden alle Daten aus der DB gelesen und in separaten formularen zur
80.
 * bearbeitung (oder löschung) ausgegeben.
81.
 * Gemachte Änderungen oder Löschungen wurden vorher (s.oben) durchgeführt, so
82.
 * das die DB auf dem aktuellen Stand ist wenn die Daten gelesen werden.
83.
 */
84.
$sqlSelectAll = "SELECT * FROM `tabelle` ORDER BY `id` ASC";
85.
$resSelectAll = $My->query( $sqlSelectAll );
86.
if( ! ($resSelectAll instanceof mysqli_result) )
87.
{
88.
    echo '<p>Zu Zeit können keine Daten aus der Datenbak gelesen werdeb, bitte versuchen Sie es später erneut.</p>';
89.
}
90.
else
91.
{
92.
    if( 0>=$resSelectAll->num_rows )
93.
    {
94.
        echo '<p>Es sind keine Einträge in der Datenbank vorhanden.</p>';
95.
    }
96.
    else
97.
    {
98.
        // liste alle einträge in formulaten auf
99.
        while( $arrData = $resSelectAll->fetch_assoc() )
100.
        {
101.
            echo '
102.
                  <form action="" method="POST"
103.
                    
104.
                    style="height:25px; overflow:hidden;"
105.
                    onclick="this.style.height=\'auto\';"
106.
                    
107.
                    >
108.
                    <label for="id_name1">Name Nr.1</label><input id="id_name1" type="text" name="name1" value="'.$arrData['name1'].'"><br>
109.
                    <label for="id_name2">Name Nr.2</label><input id="id_name2" type="text" name="name2" value="'.$arrData['name2'].'"><br>
110.
                    <label for="id_name3">Name Nr.3</label><input id="id_name3" type="text" name="name3" value="'.$arrData['name3'].'"><br>
111.
                    <label for="id_name4">Name Nr.4</label><input id="id_name4" type="text" name="name4" value="'.$arrData['name4'].'"><br>
112.
                    ...
113.
                    und deine weiteren Felder...
114.
                    ...
115.
                    
116.
                    <input type="hidden" name="object" value="'.$arrData['spalteID_oderIrgendetwasAnderesEindeutiges'].'">
117.
                    <input type="submit" name="delete" value="Löschen">
118.
                    <input type="submit" name="update" value="Aktualisieren">
119.
                  </form>';
120.
        }
121.
    }
122.
}
123.
?>

~Arano
Bitte warten ..
Mitglied: hahaxd3
09.07.2015 um 08:02 Uhr
HI Arano,
Erstmal vielen Dank für deine Antwort und deine Mühe/zeit.

Das einzigste was ich nicht im Code verstehe ist das mit dem Ausgeben des Inhaltes.
Also mit dem <label for .....
kannst du mir bitte noch mal für dumme erklären was ich wo eintragen muss damit es funktiioniert ?( hab es noch nicht getestet weil ich mir nicht sicher bin was dort rein muss.


Danke


Hahaxd3
Bitte warten ..
Mitglied: Arano
09.07.2015 um 09:46 Uhr
Hi,

gerne doch !
Hm... also das <form> hat ja seine einzelnen Elemente, z.B. die <input>s.
Damit der User weis wass er denn in solch ein Eingabefeld eingeben soll schreiben wir es meistens einfach davor
01.
Name: <input name="username">
Nun muss man aber direkt auf das <input> klicken um dort etwas eintragen zu können. Okay, das geht noch aber wir sieht es mit den Checkboxen aus ? Diese kleinen Kästchen in die man einen Haken setzen kann... da ist es manchmal schon ganz schön nerfig diesesn kleinen Kasten mit der Maus zu treffen.
Ausserdem besteht aktuelle zwischen dem Text und derm <input> keine auswertbare Verbindung die von Suchmaschienen oder Screenreadern ausgewertet werden könnte um dem User mitziteilen worum es überhaupt geht - Sinn und Zweck. (Auch wenn es uns Mensch das offt als "logisch" erscheint).

Also setzten wir den Text erstmal in <label>-Tags um überhaupt auszusagen das dieser Text ein Label für etwas ist. Und da sind wir auch schon bei dem "for", ein Label für was !? Um diese Zuordnung zu erzeugen "verknüpfen" wir das <label> mit dem <input> über eine ID, die ID des <input>.
01.
<label for="username">Benutzername: </label>
02.
<input  id="username" name="user">
03.
<label for="agbaccept">Hiermit bestätige ich die AGB gelesen, akzeptiert uns weiter und sofort</label>
04.
<input  id="agbaccept" name="agb" type="checkbox">
Denke daran, das eine ID __eindeutig__ sein MUSS und das Dokumenten weit.
Die Ausgabe der Einträge erfolgt ja über eine Schleife. Wenn du es so wie in meinem beispiel machst, werden mit jedem Schleifendurchlauf Felder mit den gleichen IDs erstellt. Diese sind dann nicht nicht mehr eindeutig und das IST FALSCH.
So wäre es dann möglich das wenn du ein Label anklickst, nur das oberstet Input mit der ID aktiviert wird. Oder bei Checkboxen, das vielleicht ALLE Checkboxen aktiviert werden Oo. Ich denke dafür ist kein Verhalten der Browser definiert, so das alles und nichts passieren kann.

Hier noch ein Link zu selfHTM: http://wiki.selfhtml.org/wiki/HTML/Formulare/Gruppierung


~Arano
Bitte warten ..
Mitglied: hahaxd3
09.07.2015 um 15:46 Uhr
Vielen Dank Arano für deine zeit und deinen Aufstand für diese Aktion
ich werde gleich morgen mal rumprobieren mit dem hinzufügen hat es jetzt auch schon mal funktioniert.
Bitte warten ..
Mitglied: hahaxd3
20.07.2015 um 15:44 Uhr
Hi Arano,
Ich bion jezt zu gut wie fertig alles wird angezeigt man kann updaten und löschen.

Jetzt jehlt nur noch ein Button mit dem ich einen eintrag für eine stunde ändern kann mein versuch sieht biss her so aus :
01.
if(  isset($_GET['pause'])) 
02.
{
03.
$object=real_escape_string($_GET['object']);
04.
$pause="UPDATE `Anwendung_Hosting` SET `Link`=\"ja\" WHERE `Prudukt`="."\"$object\"";
05.
echo $pause;
06.
$My->query($pause);
07.
//exec("php /var/www/pause.php $object");
08.
echo "\n"."hallo";
09.

10.
//header("location: admin.php");
leider funktioniert das nicht kannst du mir oder jemand anders Helfen ?
Bitte warten ..
Mitglied: Arano
20.07.2015 um 22:03 Uhr
Hallo.

Ähm...
mit dem ich einen eintrag __für eine stunde__ ändern kann
Was meinst den damit !?

Das es automatisch wieder "zurück geändert" ist meines wissen nach so nicht möglich (aber ich weiß auch nur Teile!).
Wobei man das sicher automatisieren könnte.
Z.B. könnte man das Objekt zusammen mit einem Zeitwert und den rückgängig zu machenden Änderungen in eine Datei speichern die jede Minute von einem Cronjob überwacht wird (oder alle 5min wenn tolerant). Der Cronjob scannt also die Datei nach abgelaufenen Zeitwerten (älter als 1h) und führt dann die zurück zu rollenden Änderungen in der DB aus und löscht den Eintrag aus der Datei. So können mehrere Objekte "pausiert" werden oder wie auch immer.

Aber "viele Wege führen zum Ziel". Mann könnte z.B auch einen Zeitwert setzten ab wann, oder bis wann etwas gültig ist. Und solange sich der Zeitwert noch in der gültigen Phase befindet, wird es angezeigt oder abgearbeitet oder was auch immer damit sein soll.

Oder man arbeitet mit einer zweiten Tabelle und man verschiebt den Ganzen Datensatz von Tabelle zu Tabelle und später wieder zurück.


Aber momentan habe ich keine Ahnung was du überhaupt willst !


~Arano
PS. Du hast $_GET anstelle von $_POST verwendet, das war beabsichtigt !?
Bitte warten ..
Mitglied: hahaxd3
12.08.2015 um 10:54 Uhr
Hi Arano,
ich möchte mich noch mal bedanken für deine Hilfe dank dir hatte ich einen Ansatz und konnte die Seite nun fast fertig stellen.
Ich musste so einiges neu machen da mehr wünsche kammen. Meine seite Sieht so aus:
01.
<?php session_start(); if( isset($_GET[clear])){session_destroy(); header("location: index.php");}?>
02.
<html>
03.
<div id="kopfzeile">
04.
<h3> <a href="Kontakt.html"> Bugreport und Verpesserungsvorschlaege </a>      Legende<font color="#b51f1f" size="10">&#9726;</font> Deaktiviert<font color="#494949" size="10">&#9726;</font> Pausiert
05.
</h3>
06.

07.
</div>
08.
<head>
09.
<figure><a href=index.php><img src='http://localhost/logo.png' alt='Logo'/></a></figure><br></head>
10.
<a href=hinzufuegen.html><img src='http://localhost/plus.png' width='25' height='25' alt='Hinzufuegen'/>Hinzufuegen</a>
11.
<style>
12.
table, td, th {
13.
    border: 1px solid green;
14.
}
15.

16.
th {
17.
    background-color: 3d3d3d;
18.
	color: white;
19.
}
20.
#kopfzeile {
21.
  
22.
  border-bottom:0px;
23.
}
24.
h3{text-align: center}
25.

26.
</style> 
27.
<table><thead>
28.
<tr>
29.
<th>Optionen</th>
30.
<th>PRODUKT</th>
31.
<th>LINK</th>
32.
<th>ART</th>
33.
<th>HTACCESS</th>
34.
<th>LOGIN</th>
35.
<th>PW</th>
36.
<th>VERSION</th>
37.
<th>PFLEGETOOL</th>
38.
<th>SSL-FAELLIGKEIT</th>
39.
<th>HOSTING</th>
40.
<th>VERSION BE</th>
41.
<th>NODE BE</th>
42.
<th>VERSION FE</th>
43.
<th>NODE FE</th>
44.
<th>DB-SERVER</th>
45.
<th>DB-USER</th>
46.
<th>DB-VERSION</th>
47.
<th>RMI-PORT</th>
48.
<th>MONITORING</th>
49.
<th>MONITORINGURL</th>
50.
<th>MONITORINPATTERN</th>
51.
<th>MONITORINGLOGIN</th>
52.
<th>MONITORINMESSAGE</th>
53.
<th>IP-SPERREN</th>
54.
<th>Pflegetool-Logins</th>
55.
<th>Pausiert bis zum:</th>
56.
</tr></thead><body>
57.
<br>
58.
<form methode="get" name="ignore" action="index.php" algin="center">
59.
<input type="hidden" name="ignore" value="yes">
60.
<input type=submit value="Deaktiviere eintraege Ignorieren "> 
61.
</form>
62.
<form methode="get" name="ignore" action="index.php" algin="center">
63.
<input type="hidden" name="clear" value="">
64.
<input type=submit value="Alle einstellungen zuruecksetzten"> 
65.
</form>
66.

67.
<div>
68.
<?php
69.

70.
$servername = "localhost";
71.
$username = "root";
72.
$password = "root";
73.
$dbname = "Csv";
74.
if(isset($_GET['eintraege']))
75.
{
76.
$_SESSION['eintraege']=$_GET[eintraege];
77.
}
78.
if(isset( $_GET['ignore']))
79.
{
80.
$_SESSION['ignore']=$_GET[ignore];
81.
}
82.
if(isset( $_GET['search']))
83.
{
84.
$_SESSION['search']=$_GET[search];
85.
}
86.
if( isset($_GET[seite]))
87.
{
88.
$_SESSION[seite]=$_GET[seite];
89.
}
90.
// Create connection
91.
$conn = new mysqli($servername, $username, $password, $dbname);
92.
// Check connection
93.
if ($conn->connect_error) {
94.
    die("Connection failed: " . $conn->connect_error);
95.
} 
96.

97.
$seite=$_SESSION["seite"];
98.
if(empty($seite)){
99.
$seite=1;
100.
}
101.

102.
$eintraege =$_SESSION[eintraege]; 
103.
if(empty($eintraege))
104.
{
105.
$eintraege=25;
106.
}
107.
$start = $seite * $eintraege - $eintraege;
108.

109.

110.
$ignore=$_SESSION[ignore];
111.
if($eintraege=="Alle"){ 
112.
	if( $ignore == "yes" )
113.
	  {
114.
		$sql = "SELECT * From Anwendung_Hosting WHERE NOT pause_bis=\"300012311259\" Order BY Prudukt";} 
115.
		else{
116.
		$sql = "SELECT * From Anwendung_Hosting Order BY Prudukt";
117.
		    }
118.
	  }
119.
else{
120.
	if( $ignore == "yes" ){
121.
		$sql = "SELECT * From Anwendung_Hosting Where Not pause_bis=\"300012311259\" Order By `Prudukt` LIMIT $start,$eintraege ";}
122.
		else{ 
123.
		$sql = "SELECT * From Anwendung_Hosting Order By `Prudukt` LIMIT $start,$eintraege "; }
124.
    }
125.
$result = $conn->query($sql);
126.

127.
if ($result->num_rows > 0) {
128.

129.
	while($row = $result->fetch_assoc()) {
130.
	$jetzt=date("YmdHi");
131.
	$pause=$row[pause_bis];
132.
	if ( $jetzt < $pause )
133.
		{
134.
		if ( $row[pause_bis] == "300012311259" )
135.
			{
136.
				echo '<tr bgcolor="#b51f1f"><td><form action="update.php" methode=get><input type=hidden name=object value="'.$row[Prudukt].'"><input type="submit" name="pause" value="Pausieren" ><input type=submit value=Aendern><input type="submit" name="action" value="Aktivieren" ></form></td><td>'.	$row	[Prudukt].'</th><td><a style="color:black" href="'.$row[Link].'"</a>'.$row[Link].'</th><td>'.$row[Art].'</th><td>'.$row[htaccess].'</th><td>'.$row[Login].'</th><td>'.$row[PW].'</th><td>'.$row[Version].'</th><td>'.$row[Pflegetool].'</th>'.'<td>'.$row[SSLFaelligkeit].'</th>'.'<td>'.$row[Hosting].'</th>'.'<td>'.$row[VersionBE].'</th>'.'<td>'.$row[NodeBE].'</th>'.'<td>'.$row[VersionFE].'</th>'.'<td>'.$row[NodeFE].'</th>'.'<td>'.$row[dbServer].'</th>'.'<td>'.$row[dbUser].'</th>'.'<td>'.$row[dbVersion].'</th>'.'<td>'.$row[rmiPort].'</th>'.'<td>'.$row[Monitoring].'</th>'.'<td>'.$row[MonitoringUrl].'</th>'.'<td>'.$row[MonitoringPattern].'</td>'.'<td>'.$row[MonitoringLogin].'</td><td>'.$row[MonitoringMessage].'</td>'.'<td>'.$row[ipSperren].'</td>'.'<td>'.$row[PflegetoolLogins].'</td><td>'.$row[pause_bis].'</td></tr>';
137.
			}
138.
		else 
139.
			{
140.
				echo '<tr bgcolor="#494949" style="color:#ffffff" ><td><form action="update.php" methode=get><input type=hidden name=object value="'.$row[Prudukt].'"><input type="submit" name="pause" value="Pausieren" ><input type=submit value=Aendern><input type="submit" name="action" value="Deaktivieren" ></form></td><td>'.$row[Prudukt].'</th><td><a style="color:white" href="'.$row[Link].'"</a>'.$row[Link].'</th><td>'.$row[Art].'</th><td>'.$row[htaccess].'</th><td>'.$row[Login].'</th><td>'.$row[PW].'</th><td>'.$row[Version].'</th><td>'.$row[Pflegetool].'</th>'.'<td>'.$row[SSLFaelligkeit].'</th>'.'<td>'.$row[Hosting].'</th>'.'<td>'.$row[VersionBE].'</th>'.'<td>'.$row[NodeBE].'</th>'.'<td>'.$row[VersionFE].'</th>'.'<td>'.$row[NodeFE].'</th>'.'<td>'.$row[dbServer].'</th>'.'<td>'.$row[dbUser].'</th>'.'<td>'.$row[dbVersion].'</th>'.'<td>'.$row[rmiPort].'</th>'.'<td>'.$row[Monitoring].'</th>'.'<td>'.$row[MonitoringUrl].'</th>'.'<td>'.$row[MonitoringPattern].'</td>'.'<td>'.$row[MonitoringLogin].'</td><td>'.$row[MonitoringMessage].'</td>'.'<td>'.$row[ipSperren].'</td>'.'<td>'.$row[PflegetoolLogins].'</td><td>'.$row[pause_bis].'</td></tr>';
141.
			}
142.
		}
143.
	
144.
	else 
145.
		{
146.
			echo '<tr><td><form action="update.php" methode=get><input type=hidden name=object value="'.$row[Prudukt].'"><input type="submit" name="pause" value="Pausieren" ><input type=submit value=Aendern><input type="submit" name="action" value="Deaktivieren" ></form></td><td>'.$row[Prudukt].'</th><td><a style="color:black" href="'.$row[Link].'"</a>'.$row[Link].'</th><td>'.$row[Art].'</th><td>'.$row[htaccess].'</th><td>'.$row[Login].'</th><td>'.$row[PW].'</th><td>'.$row[Version].'</th><td>'.$row[Pflegetool].'</th>'.'<td>'.$row[SSLFaelligkeit].'</th>'.'<td>'.$row[Hosting].'</th>'.'<td>'.$row[VersionBE].'</th>'.'<td>'.$row[NodeBE].'</th>'.'<td>'.$row[VersionFE].'</th>'.'<td>'.$row[NodeFE].'</th>'.'<td>'.$row[dbServer].'</th>'.'<td>'.$row[dbUser].'</th>'.'<td>'.$row[dbVersion].'</th>'.'<td>'.$row[rmiPort].'</th>'.'<td>'.$row[Monitoring].'</th>'.'<td>'.$row[MonitoringUrl].'</th>'.'<td>'.$row[MonitoringPattern].'</td>'.'<td>'.$row[MonitoringLogin].'</td><td>'.$row[MonitoringMessage].'</td>'.'<td>'.$row[ipSperren].'</td>'.'<td>'.$row[PflegetoolLogins].'</td><td>'.$row[pause_bis].'</td></tr>';
147.
		}
148.

149.
}
150.
}
151.

152.
else 
153.
{
154.
    echo "0 results";
155.
}
156.

157.
$conn->close();
158.

159.
$link = mysql_connect("localhost","root","root") or die ("Keine Verbindung moeglich"); 
160.
mysql_select_db("Csv") or die ("Die Datenbank existiert nicht"); 
161.
$mange = mysql_query("SELECT Prudukt FROM Anwendung_Hosting"); 
162.
$menge = mysql_num_rows($mange); 
163.
$wieviel_seiten = $menge / $eintraege;
164.

165.
echo '<div align="center">'; 
166.
echo '<form action="update.php" methode="get" id="search">Suchen: 
167.
<input type="text" name="search">
168.
<input type="submit" value="Suchen"></form>
169.
<form>Eintraege pro Seite:<select name="eintraege" onchange="this.form.submit()">
170.
	<option>'.$_SESSION[eintraege].'</option>
171.
	<option>25</option>
172.
	<option>50</option>
173.
	<option>Alle</option>
174.
</select></form>
175.
';
176.
echo "<b>Seite:</b> "; 
177.
for($a=0; $a < $wieviel_seiten; $a++) 
178.
   { 
179.
   $b = $a + 1; 
180.
      if($seite == $b) 
181.
      { 
182.
      echo "  <b>$b</b> "; 
183.
      } 
184.
     else 
185.
      { 
186.
      echo "  <a href=\"?eintraege=$_SESSION[eintraege]&seite=$b\">$b</a> "; 
187.
      } 
188.
   } 
189.
echo "Die Session Variablen".$_SESSION[eintraege].$_SESSION[seite].$_SESSION[ignore].$_SESSION[search];
190.
echo "</div>"; 
191.
$conn->close();
192.

193.
?></div></body>
194.

195.
</html>
Jetzt soll aber anstatt der spalte Optionen und die 3 Button ein Radio button sein und oben drüber die 3 Button die denn die aktion ausführen soll für diese zeile.
kannst du mir da weiter helfen ? Oder einen ansatzt geben ?


Vielen Dank und Grüße

Hahaxd3
Bitte warten ..
Mitglied: Arano
15.08.2015 um 19:12 Uhr
Hi,

hatte dein weiteres Fragen total vergessen, sorry !

Als erstes, schau dir mal das HTML-Grundgerüst an !
01.
<DOCTYPE html>
02.
<html>
03.
  <head>
04.
    <title>Titel der Seite</title>
05.
    <style type="text/css">
06.
      <!--
07.
        /* dein CSS hier */
08.
        /* (kann man auch über eine extra Datei realisieren) */
09.
      -->
10.
    </style>
11.
    <script type="text/javascript">
12.
      <!--
13.
        /* dein Javascript hier */
14.
        /* (kann man auch über eine extra Datei realisieren) */
15.
      -->
16.
    </script>
17.
  </head>
18.
  
19.
  <body>
20.
  
21.
  <!-- HIER alles weitere HTML -->
22.
  
23.
  </body>
24.
  
25.
</html>


Also das mit dem Radio-Button kann man machen ABER Formulare dürfen NICHT verschachtelt werden !
Im Prinzip ist es nur ein Formular, mit drei Submitbuttons und einer ganzen Menge an an Radio-Buttons - für jeden Eintrag einen.
Das Formular muss also die gesamte Tabelle umfassen und in jeder Zeile ist ein Radiobutton. in diesem Fall haben die alle den gleichen Namen:
01.
  <from>
02.
    <input type="submit" name=""delete" value="löschen">
03.
    <input type="submit" name=""pause" value="pausieren">
04.
    <input type="submit" name=""resume" value="fortfahren">
05.
    <table>
06.
      <!-- die zeilen werden ja in der PHP-While generiert und darum ist die $dataID immer eine andere -->
07.
      <tr>    <td></td>    <td>  <input type="radio" name="machwasmitmir" value="$dataID">  </td>    </tr>
08.
      <tr>    <td></td>    <td>  <input type="radio" name="machwasmitmir" value="$dataID">  </td>    </tr>
09.
      <tr>    <td></td>    <td>  <input type="radio" name="machwasmitmir" value="$dataID">  </td>    </tr>
10.
    </table>
11.
  </form>


da sind übrigend noch einige andere Fehler in deinem Code !
01.
 $array[value] // das ist falsch !
02.
 $array['value'] // so oder
03.
 $array["value"] // so
04.
 /*
05.
  im ersten fall müsste "value" eine definierte Konstante sein: define( 'value', 'wert');
06.
  weil deine ganzen array-Indexe aber NICHT als Konstanten existieren müsste es jedemal eine PHP-Warnung oder Notice geben
07.
 */
Aktiviere mal - und zwar nur fürs entwickeln! - die Ausgabe der PHP-Meldungen
01.
  ini_set( 'display_errors', 1 ); // aktiviere fehlerausgabe
02.
  ini_set( 'error_reporting', -1 ); // melde alles: http://php.net/manual/de/function.error-reporting.php 

Und dann ist mir noch aufgefallen, das du in den While-Schleifen gaaaanz oft eine Tabellenzelle <td> öffnest, aber eine Tabellenkopfzelle <th> schließt
01.
  <tr><th>Land</th><th>Einwohner</th></tr>
02.
  <tr><td>asdasd</td><td>12345678</td></tr>
03.
  <tr><td>werwer</td><td>87654321</td></tr>

~Arano
Bitte warten ..
Ähnliche Inhalte
PHP
PHP MySQL Login
Frage von YanmaiPHP7 Kommentare

Hallo ihr Administratoren, ich habe eine Datenbank, in der alle User des Netzwerkes enthalten sind. Wenn ein User sich ...

PHP
Benutzerregistrierung php, mysql
Frage von zelamediaPHP5 Kommentare

Hallo, kennt jemand ein gutes Tutorial/Anleitung wie ich mit php/mysql eine einfache Benutzer-Registrierung umsetzte mit Benutzerrollen also Administrator/Mitarbeiter usw. ...

PHP
HTML Code in PHP
gelöst Frage von newit1PHP8 Kommentare

Hallo, es geht um folgenden PHP Code: In der letzten Zeile wird ein einer Tabelle die E-Mail Adresse ausgegeben. ...

PHP
PHP - MySQL-Ausgabe editieren
gelöst Frage von ThoomaasPHP19 Kommentare

Hallo alle zusammen! Ich bin gerade dabei ein Portal für meine Firma zu basteln. Hierbei sollen die User Protokolle ...

Neue Wissensbeiträge
Google Android

Google sperrt Android-Updates und den Play Store für Huawei

Information von Deepsys vor 22 StundenGoogle Android8 Kommentare

Das finde ich schon ein starkes Stück, Trump der Welt Diktator. So kann man mit einem Dekret mal eben ...

Windows 7

Südkoreas Regierung setzt auf Linux, um Windows 7 Clients abzulösen

Information von kgborn vor 1 TagWindows 74 Kommentare

Kleiner Infosplitter zum Wochenanfang: Während München (LiMux) und die niedersächsische Finanzverwaltung von Linux auf einen Windows 10-Client (und Office) ...

Internet
Big Brother is Watching You
Information von transocean vor 1 TagInternet1 Kommentar

Moin, die Datenkrake Google fischt Informationen über Einkäufe ab, die GMail Nutzer im Netz tätigen. Gruß Uwe

Datenschutz
TeamViewer gehackt !
Information von aqui vor 1 TagDatenschutz7 Kommentare

Hat schon einen Grund warum verantwortungsvolle Admins diese Software nicht einsetzen und sie in den meisten größeren Firmen aus ...

Heiß diskutierte Inhalte
Windows 10
Windows am MAC
Frage von LeeX01Windows 1015 Kommentare

Guten Abend zusammen, ich habe gerade ein Macbook Pro vor mir welches ich mit einem Windows 10 to go ...

Linux Userverwaltung
Ist sudo auf Servern Pflicht?
gelöst Frage von lcer00Linux Userverwaltung13 Kommentare

Hallo zusammen, wir haben für einige Netzwerkdienste einige Debian Server. Auf diesen Servern arbeiten keine Benutzer im eigentlichen sinne. ...

Humor (lol)
Mitarbeiter meldet: VPN funktioniert nicht
gelöst Frage von Epixc0reHumor (lol)13 Kommentare

Servus, einer unserer Mitarbeiter meldete heute, sein VPN funktioniert Zuhause nicht, im LTE Netz aber schon. Per Teamviewer hin ...

Batch & Shell
Powershell Datum der zuletzt eingespielten Patche bei remote Servern ermitteln
Frage von bensonhedgesBatch & Shell12 Kommentare

Hallo, ich möchte gerne anhand einer Serverliste (bsp. computers.txt) via PS ermitteln, wann derjeweilige Server zuletzt gepatcht wurde (Liste ...