hahaxd3
Goto Top

HTML PHP MySQL Webanwendung

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 face-smile

Versuch Mysql hinzuzufügen :
<?php
mysql_connect("localhost", "root" , "root");  
mysql_select_db("Csv");  
$Prudukt = $_POST[Prudukt];
$Link = $_POST[Link];
$Art = $_POST[Art];
$htccess = $_POST[htccess];
$Login = $_POST[Login];
$PW = $_POST[PW];
$Version = $_POST[Version];
$Pflegetool = $_POST[Pflegetool];
$SSLFaelligkeit = $_POST[SSLFaelligkeit];
$Hosting = $_POST[Hosting];
$VersionBE = $_POST[VersionBE];
$NodeBE = $_POST[NodeBE];
$VersionFE = $_POST[VersionFEe];
$NodeFE = $_POST[NodeFE];
$DBServer = $_POST[DBServer];
$DBUser = $_POST[DBUser];
$DBVersion = $_POST[DBVersion];
$RMIPort = $_POST[RMIPort];
$Monitoring = $_POST[Monitoring];
$MonitoringURL = $_POST[MonitoringUR];
$MonitoringPattern = $_POST[MonitoringPattern];
$MonitoringLogin = $_POST[MonitoringLogin];
$MonitoringMessage = $_POST[MonitoringMessage];
$IPSperren = $_POST[IPSperren];
$PflegetoolLogins = $_POST[PflegetoolLogins];


$insert = mysql_query("INSERT INTO Anwendung_Hosting  
(Link,Art,htaccess,Login,PW,Version,Pflegetool,SSLFaelligkeit,Hosting,VersionBE,NodeBE,VersionFE,NodeFE,DBServer,DBUser,DBVersion,RMIPort,Monitoring,MonitoringURL,MonitoringPattern,MonitoringLogin,MonitoringMessage,IPSperren,PflegetoolLogins")  
VALUES
('$Link',  
'$Art',  
'$htaccess',  
'$Login',  
'$PW$Version',  
'$Pflegetool',  
'$SSLFaelligkeit',  
'$Hosting',  
'$VersionBE',  
'$NodeBE',  
'$VersionFE',  
'$NodeFE',  
'$DBServer',  
'$DBUser',  
'$DBVersion',  
'$RMIPort',  
'$Monitoring',  
'$MonitoringURL',  
'$MonitoringPattern',  
'$MonitoringLogin',  
'$MonitoringMessage',  
'$IPSperren',  
'$PflegetoolLogins')  
or die(mysql_error());
?>
( die html seite erspare ich mal face-smile
Aus CSV zu Html:
<?php 

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

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

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

    else 

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

    } 
     
    $start++; 
     
    echo '</tr>' . "\n";   
     
} 

fclose($handle); 

echo '</table>';   

?>

Ich hoffe einer kann mir Helfen

Danke face-smile

Content-Key: 276633

Url: https://administrator.de/contentid/276633

Printed on: April 19, 2024 at 03:04 o'clock

Member: Philipp711
Philipp711 Jul 07, 2015 updated at 12:47:51 (UTC)
Goto Top
Hallo,

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

<?php
error_reporting(E_ALL);
// Zum Aufbau der Verbindung zur Datenbank
define ( 'MYSQL_HOST',      'DATENBANKHOST' ); <- DB-HOST eintragen  
define ( 'MYSQL_BENUTZER',  'DATENBANKBENUTZER' ); <- DB-User eintragen  
define ( 'MYSQL_KENNWORT',  'PASSWORT' ); <- DB-PW eintragen  
define ( 'MYSQL_DATENBANK', 'DATENBANK' ); <- DB eintragen  
 
$db_link = mysqli_connect (MYSQL_HOST, 
                           MYSQL_BENUTZER, 
                           MYSQL_KENNWORT, 
                           MYSQL_DATENBANK);

if ( $db_link ) {
echo 'Datenbankverbindung erfolgreich';  
}
else {
die('keine Verbindung möglich: ' . mysqli_error());  
}
?>

in die Eigentlichen PHP-Datei kommt dann so etwas rein:

<?php

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

$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. 
                            
if (!$db_insert) {
die('Ungültige Abfrage: ' . mysqli_error($db_link)); <- Sollte irgendwas schief gelaufen sein, wird es hierdurch ausgegeben.  
}

Hoffe ich konnte dir helfen!
Member: SlainteMhath
SlainteMhath Jul 07, 2015 at 12:47:03 (UTC)
Goto Top
Moin,

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

lg,
Slainte
Member: Arano
Arano Jul 07, 2015 at 20:19:06 (UTC)
Goto Top
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
Member: hahaxd3
hahaxd3 Jul 08, 2015 updated at 08:11:44 (UTC)
Goto Top
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
Member: Arano
Arano Jul 08, 2015 updated at 19:04:59 (UTC)
Goto Top
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 face-smile 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 !
<?php
// fürs TESTEN einfach auskommentieren
@ini_set( 'error_reporting', '0' ); //   -1 hat übrigends keine wirkung wie ich gerade feststellen musste... -.-  
@ini_set( 'display_errors',  'Off' );  


define( 'MYHOST', 'localhost' );  
define( 'MYUSER', 'Benutzername' );  
define( 'MYPASS', 'Passwort' );  
define( 'MYDABA', 'DAtenBAnk' );  

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




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


    // erstellen query:
    
    switch( $_POST['action'] )  
    {
        // dieses update-case kann man auch in eine eigene datei schieben und dort
        // ggf noch die eingaben auf plausibilität prüfen um fehleingaben zu verhindern
        // case 'update: include './pfad/action_update.inc.php'; break; 
        case 'update': $sqlQuery = "UPDATE `tabelle`  
                                       SET `feld1` = '".$My->real_escape_string($_POST['name1'])."',  
                                           `feld2` = '".$My->real_escape_string($_POST['name2'])."',  
                                           `feld3` = '".$My->real_escape_string($_POST['name3'])."',  
                                           `feld4` = '".$My->real_escape_string($_POST['name4'])."'  
                                            ...
                                            und deine weiteren Felder...
                                            ...
                                            
                                     WHERE `IDoderNAME` = '".$My->real_escape_string($_POST['object'])."'  
                                     LIMIT 1"; // LIMIT 1 weil:  
                                     // nach dem ersten Treffer aufhören, sont wird die komplette DB durchsucht
                                     // obwohl wir wissen das nichts mehr da sein kann !
                       break;
        case 'delete': $sqlQuery = "DELETE FROM `tabelle`  
                                          WHERE `IDoderNAME` = '".$My->real_escape_string($_POST['object'])."'  
                                          LIMIT 1";  
                       break;
        default: die( 'Unbekannte Aktion - ABBRUCH !' );  
                 // abbruch weil wir die ausführung des queries (welches nicht existiert)
                 // verhindern müssen, sonst gibts ne hässliche PHP-fehlermeldung.
    }
    
    
    // query ausführen:
    
    if( ! $My->query($sqlQuery) )
    {
        echo '<span class="errorMsg">Achtung, fehler beim ausführen des Queries !</span>';  
        // KEIN PROGRAMMABBRUCH, wir wollen die Liste trotzdem angezeigt bekommen (s. unten)
    }
    else
    {
        // alles okay, update oder delete wurde durchgeführt
        // gebe KEINE Meldung aus, wir wollen nur meckern
        // WENN etwas fehl schlug.
    }
}




/**
 * ANZEIGE
 * Hier wenden alle Daten aus der DB gelesen und in separaten formularen zur
 * bearbeitung (oder löschung) ausgegeben.
 * Gemachte Änderungen oder Löschungen wurden vorher (s.oben) durchgeführt, so
 * das die DB auf dem aktuellen Stand ist wenn die Daten gelesen werden.
 */
$sqlSelectAll = "SELECT * FROM `tabelle` ORDER BY `id` ASC";  
$resSelectAll = $My->query( $sqlSelectAll );
if( ! ($resSelectAll instanceof mysqli_result) )
{
    echo '<p>Zu Zeit können keine Daten aus der Datenbak gelesen werdeb, bitte versuchen Sie es später erneut.</p>';  
}
else
{
    if( 0>=$resSelectAll->num_rows )
    {
        echo '<p>Es sind keine Einträge in der Datenbank vorhanden.</p>';  
    }
    else
    {
        // liste alle einträge in formulaten auf
        while( $arrData = $resSelectAll->fetch_assoc() )
        {
            echo '  
                  <form action="" method="POST"  
                    
                    style="height:25px; overflow:hidden;"  
                    onclick="this.style.height=\'auto\';"  
                    
                    >
                    <label for="id_name1">Name Nr.1</label><input id="id_name1" type="text" name="name1" value="'.$arrData['name1'].'"><br>  
                    <label for="id_name2">Name Nr.2</label><input id="id_name2" type="text" name="name2" value="'.$arrData['name2'].'"><br>  
                    <label for="id_name3">Name Nr.3</label><input id="id_name3" type="text" name="name3" value="'.$arrData['name3'].'"><br>  
                    <label for="id_name4">Name Nr.4</label><input id="id_name4" type="text" name="name4" value="'.$arrData['name4'].'"><br>  
                    ...
                    und deine weiteren Felder...
                    ...
                    
                    <input type="hidden" name="object" value="'.$arrData['spalteID_oderIrgendetwasAnderesEindeutiges'].'">  
                    <input type="submit" name="delete" value="Löschen">  
                    <input type="submit" name="update" value="Aktualisieren">  
                  </form>';  
        }
    }
}
?>


~Arano
Member: hahaxd3
hahaxd3 Jul 09, 2015 at 06:02:54 (UTC)
Goto Top
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
Member: Arano
Arano Jul 09, 2015 at 07:46:12 (UTC)
Goto Top
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
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>.
<label for="username">Benutzername: </label>  
<input  id="username" name="user">  
<label for="agbaccept">Hiermit bestätige ich die AGB gelesen, akzeptiert uns weiter und sofort</label>  
<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
Member: hahaxd3
hahaxd3 Jul 09, 2015 at 13:46:40 (UTC)
Goto Top
Vielen Dank Arano für deine zeit und deinen Aufstand für diese Aktion face-smile
ich werde gleich morgen mal rumprobieren mit dem hinzufügen hat es jetzt auch schon mal funktioniert.
Member: hahaxd3
hahaxd3 Jul 20, 2015 at 13:44:16 (UTC)
Goto Top
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 :
if(  isset($_GET['pause']))   
{
$object=real_escape_string($_GET['object']);  
$pause="UPDATE `Anwendung_Hosting` SET `Link`=\"ja\" WHERE `Prudukt`="."\"$object\"";  
echo $pause;
$My->query($pause);
//exec("php /var/www/pause.php $object"); 
echo "\n"."hallo";  

//header("location: admin.php"); 

leider funktioniert das nicht kannst du mir oder jemand anders Helfen ?
Member: Arano
Arano Jul 20, 2015 at 20:03:49 (UTC)
Goto Top
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 !?
Member: hahaxd3
hahaxd3 Aug 12, 2015 at 08:54:14 (UTC)
Goto Top
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:
<?php session_start(); if( isset($_GET[clear])){session_destroy(); header("location: index.php");}?>  
<html>
<div id="kopfzeile">  
<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  
</h3>

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

th {
    background-color: 3d3d3d;
	color: white;
}
#kopfzeile {
  
  border-bottom:0px;
}
h3{text-align: center}

</style> 
<table><thead>
<tr>
<th>Optionen</th>
<th>PRODUKT</th>
<th>LINK</th>
<th>ART</th>
<th>HTACCESS</th>
<th>LOGIN</th>
<th>PW</th>
<th>VERSION</th>
<th>PFLEGETOOL</th>
<th>SSL-FAELLIGKEIT</th>
<th>HOSTING</th>
<th>VERSION BE</th>
<th>NODE BE</th>
<th>VERSION FE</th>
<th>NODE FE</th>
<th>DB-SERVER</th>
<th>DB-USER</th>
<th>DB-VERSION</th>
<th>RMI-PORT</th>
<th>MONITORING</th>
<th>MONITORINGURL</th>
<th>MONITORINPATTERN</th>
<th>MONITORINGLOGIN</th>
<th>MONITORINMESSAGE</th>
<th>IP-SPERREN</th>
<th>Pflegetool-Logins</th>
<th>Pausiert bis zum:</th>
</tr></thead><body>
<br>
<form methode="get" name="ignore" action="index.php" algin="center">  
<input type="hidden" name="ignore" value="yes">  
<input type=submit value="Deaktiviere eintraege Ignorieren ">   
</form>
<form methode="get" name="ignore" action="index.php" algin="center">  
<input type="hidden" name="clear" value="">  
<input type=submit value="Alle einstellungen zuruecksetzten">   
</form>

<div>
<?php

$servername = "localhost";  
$username = "root";  
$password = "root";  
$dbname = "Csv";  
if(isset($_GET['eintraege']))  
{
$_SESSION['eintraege']=$_GET[eintraege];  
}
if(isset( $_GET['ignore']))  
{
$_SESSION['ignore']=$_GET[ignore];  
}
if(isset( $_GET['search']))  
{
$_SESSION['search']=$_GET[search];  
}
if( isset($_GET[seite]))
{
$_SESSION[seite]=$_GET[seite];
}
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);  
} 

$seite=$_SESSION["seite"];  
if(empty($seite)){
$seite=1;
}

$eintraege =$_SESSION[eintraege]; 
if(empty($eintraege))
{
$eintraege=25;
}
$start = $seite * $eintraege - $eintraege;


$ignore=$_SESSION[ignore];
if($eintraege=="Alle"){   
	if( $ignore == "yes" )  
	  {
		$sql = "SELECT * From Anwendung_Hosting WHERE NOT pause_bis=\"300012311259\" Order BY Prudukt";}   
		else{
		$sql = "SELECT * From Anwendung_Hosting Order BY Prudukt";  
		    }
	  }
else{
	if( $ignore == "yes" ){  
		$sql = "SELECT * From Anwendung_Hosting Where Not pause_bis=\"300012311259\" Order By `Prudukt` LIMIT $start,$eintraege ";}  
		else{ 
		$sql = "SELECT * From Anwendung_Hosting Order By `Prudukt` LIMIT $start,$eintraege "; }  
    }
$result = $conn->query($sql);

if ($result->num_rows > 0) {

	while($row = $result->fetch_assoc()) {
	$jetzt=date("YmdHi");  
	$pause=$row[pause_bis];
	if ( $jetzt < $pause )
		{
		if ( $row[pause_bis] == "300012311259" )  
			{
				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>';  
			}
		else 
			{
				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>';  
			}
		}
	
	else 
		{
			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>';  
		}

}
}

else 
{
    echo "0 results";  
}

$conn->close();

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

echo '<div align="center">';   
echo '<form action="update.php" methode="get" id="search">Suchen:   
<input type="text" name="search">  
<input type="submit" value="Suchen"></form>  
<form>Eintraege pro Seite:<select name="eintraege" onchange="this.form.submit()">  
	<option>'.$_SESSION[eintraege].'</option>  
	<option>25</option>
	<option>50</option>
	<option>Alle</option>
</select></form>
';  
echo "<b>Seite:</b> ";   
for($a=0; $a < $wieviel_seiten; $a++) 
   { 
   $b = $a + 1; 
      if($seite == $b) 
      { 
      echo "  <b>$b</b> ";   
      } 
     else 
      { 
      echo "  <a href=\"?eintraege=$_SESSION[eintraege]&seite=$b\">$b</a> ";   
      } 
   } 
echo "Die Session Variablen".$_SESSION[eintraege].$_SESSION[seite].$_SESSION[ignore].$_SESSION[search];  
echo "</div>";   
$conn->close();

?></div></body>

</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
Member: Arano
Arano Aug 15, 2015 at 17:12:24 (UTC)
Goto Top
Hi,

hatte dein weiteres Fragen total vergessen, sorry !

Als erstes, schau dir mal das HTML-Grundgerüst an !
<DOCTYPE html>
<html>
  <head>
    <title>Titel der Seite</title>
    <style type="text/css">  
      <!--
        /* dein CSS hier */
        /* (kann man auch über eine extra Datei realisieren) */
      -->
    </style>
    <script type="text/javascript">  
      <!--
        /* dein Javascript hier */
        /* (kann man auch über eine extra Datei realisieren) */
      -->
    </script>
  </head>
  
  <body>
  
  <!-- HIER alles weitere HTML -->
  
  </body>
  
</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:
  <from>
    <input type="submit" name=""delete" value="löschen">  
    <input type="submit" name=""pause" value="pausieren">  
    <input type="submit" name=""resume" value="fortfahren">  
    <table>
      <!-- die zeilen werden ja in der PHP-While generiert und darum ist die $dataID immer eine andere -->
      <tr>    <td></td>    <td>  <input type="radio" name="machwasmitmir" value="$dataID">  </td>    </tr>  
      <tr>    <td></td>    <td>  <input type="radio" name="machwasmitmir" value="$dataID">  </td>    </tr>  
      <tr>    <td></td>    <td>  <input type="radio" name="machwasmitmir" value="$dataID">  </td>    </tr>  
    </table>
  </form>




da sind übrigend noch einige andere Fehler in deinem Code !
 $array[value] // das ist falsch !
 $array['value'] // so oder  
 $array["value"] // so  
 /*
  im ersten fall müsste "value" eine definierte Konstante sein: define( 'value', 'wert'); 
  weil deine ganzen array-Indexe aber NICHT als Konstanten existieren müsste es jedemal eine PHP-Warnung oder Notice geben
 */
Aktiviere mal - und zwar nur fürs entwickeln! - die Ausgabe der PHP-Meldungen
  ini_set( 'display_errors', 1 ); // aktiviere fehlerausgabe  
  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
  <tr><th>Land</th><th>Einwohner</th></tr>
  <tr><td>asdasd</td><td>12345678</td></tr>
  <tr><td>werwer</td><td>87654321</td></tr>


~Arano