Datensatz per PHP Formular ändern.

Kent94

Mitglied
Guten Abend,

ich möchte per PHP Formular z.b die Datenspalte IP ändern und per select die id verändern wie mach ich das ? bin echt am verzweifeln.. benutze php7.

PHP:
<?php
global $db, $prefix;
$sql = "SELECT * FROM ".$prefix."_wartungsmodus ORDER BY aktiv ASC LIMIT 10";
$result = $db->sql_query($sql);
while($row = $db->sql_fetchrow($result)) {
echo'
<form method="post">
<label>IP: <input type="text" value="'.$row[ip].'" name="ip"></label>
<input type="submit" value="Absenden">
</form>';
}
?>
 
Wenn ich dich richtig verstehe, möchtest du einen bestehenden Eintrag in der Datenbank ändern? Das geht mit dem Updatebefehl. Unter der Annahme, dass die IP in deiner Tabelle nicht unique ist, musst du in deinem Formular noch die ID mitgeben.
PHP:
echo'
<form method="post">
<label>IP: <input type="text" value="'.$row[ip].'" name="ip"></label>
<input type="hidden" value="'.$row[id].'" name="id">
<input type="submit" value="Absenden">
</form>';
 
Wenn ich dich richtig verstehe, möchtest du einen bestehenden Eintrag in der Datenbank ändern? Das geht mit dem Updatebefehl. Unter der Annahme, dass die IP in deiner Tabelle nicht unique ist, musst du in deinem Formular noch die ID mitgeben.
PHP:
echo'
<form method="post">
<label>IP: <input type="text" value="'.$row[ip].'" name="ip"></label>
<input type="hidden" value="'.$row[id].'" name="id">
<input type="submit" value="Absenden">
</form>';


Hallo wie verstehe ich das der code sieht wie folgt jetzt aus

PHP:
<?php
global $db, $prefix;
$sql = "SELECT * FROM ".$prefix."_wartungsmodus ORDER BY aktiv ASC LIMIT 10";
$result = $db->sql_query($sql);
while($row = $db->sql_fetchrow($result)) {
echo'
<form method="post">
<label>IP: <input type="text" value="'.$row[ip].'" name="ip"></label>
<input type="hidden" value="'.$row[id].'" name="id">
<input type="submit" value="Absenden">
</form>';
}
?>

wie meist du das mit update?

meine sql sieht derzeit wie folgt aus. ich bekomm es leider nicht hin
SQL:
-- phpMyAdmin SQL Dump
-- version 4.6.6
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Erstellungszeit: 02. Nov 2017 um 21:36
-- Server-Version: 5.5.58-0+deb7u1
-- PHP-Version: 5.6.30

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Datenbank: `tekbasedesign`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `teklab_wartungsmodus`
--

CREATE TABLE `teklab_wartungsmodus` (
  `aktiv` varchar(255) CHARACTER SET utf8 COLLATE utf8_swedish_ci NOT NULL,
  `rank` smallint(6) DEFAULT '1',
  `ip` varchar(200) CHARACTER SET latin1 NOT NULL,
  `ip1` varchar(200) CHARACTER SET latin1 NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Daten für Tabelle `teklab_wartungsmodus`
--

INSERT INTO `teklab_wartungsmodus` (`aktiv`, `rank`, `ip`, `ip1`) VALUES
('if (!in_array(@$_SERVER[\'REMOTE_ADDR\'], array($row[\'ip\'], $row[\'ip1\'])))\n{\n  header(\'Location: /wartungsmodus/index.php\');\n  exit;\n} ', 1, '178.201.3.105#', '');

--
-- Indizes der exportierten Tabellen
--

--
-- Indizes für die Tabelle `teklab_wartungsmodus`
--
ALTER TABLE `teklab_wartungsmodus`
  ADD PRIMARY KEY (`aktiv`);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 
Zuletzt bearbeitet:
ehrlicherweise habe ich deine Problem noch nicht vollständig verstanden. Du hast ein Formular. In dieses lässt du den Inhalt deiner SQL-Abfrage. Was soll dann passieren? Was möchtest du mit dem Formular erreichen?
 
Hallo,

Also das Formular dient für eine Wartungmodus Seite.

Sprich ich logge mich in mein cm/s ein gehe auf wartungsmodus und habe dort 2 Input mit ip und ip2 sowie eine select funtkion für Rank, rank 1 ist deaktiviert und Rank 0 aktiviert.

Leider bekomme ich das ganze mit dem
Update per php nicht hin.

Es soll nur 1 Datei geben in der dies alles geregelt wird der Datenbank Verbindungsaufbau ist ja bereits schon aktiv

Meine Rank funktion wird von der index.php überprüft das klappt soweit auch wenn rank 0 ist, ist der Wartungsmodus aktiviert wenn rank 1 ist ist dieser deaktiviert
 
Zuletzt bearbeitet:
Woran scheiterst du den genau bei dem Update der Daten? Hier findest du die Grundzüge?

Du redest die ganze Zeit von einem CMS. Um welches handelt es sich den? In der Regel haben die CMS eigene Plugins für den Wartungsmodus.

Wenn ich dich bisher richtig verstanden habe, möchtest du eine Seite, wo du angeben kannst für welche IP-Adressen der Wartungsmodus angezeigt wird.
  1. Sind dir die IP-Adressen bekannt bzw. auch statisch oder ändert sich das je Fall?
  2. Woran unterscheiden sich die Datenbankfelder 'ip' und 'ip1'?
  3. Willst du nur ein Eingabefeld, wo du die einzelnen IP-Adressen kommasepariert einträgst (Whitelist bzw. Blacklist) oder eine Auflistung aller IP-Adressen aus der DB-Tabelle, bei der du dann je IP-Adresse angeben kannst, ob diese aktiv ist oder nicht
  4. Wozu schreibst du
    Code:
    'if (!in_array(@$_SERVER[\'REMOTE_ADDR\'], array($row[\'ip\'], $row[\'ip1\'])))\n{\n  header(\'Location: /wartungsmodus/index.php\');\n  exit;\n} '
    in das Datenbankfeld. Dies scheint gerade sehr statisdch zu sein und gehört auch eher in den Code
 
Hallo,

also ich erkläre das noch einmal also das CMS ist TEKBASE und hat leider kein Wartungsmodus weshalb ich es selber angehe.

also ich habe eine Datei die, die Datensätze IP und IP1 Speichern soll also sprich ich will z.B meine IP und die IP meines kollegen angeben. wenn Status Aktiv also sprich ,,Rank 0'' ist bei mir Wartungsmodus aktiviert diese form möchte ich per select option wählen also sprich rank 0 = aktiviert und rank 1 = deaktiviert dies rufe ich per index.php mit folgenden befehl ab.

PHP:
global $db, $prefix;
$sql = "SELECT * FROM ".$prefix."_wartungsmodus ORDER BY aktiv ASC LIMIT 10";
$result = $db->sql_query($sql);
while($row = $db->sql_fetchrow($result)) {
$rank = $row[rank];

// true, weil $var leer ist
if (empty($rank )) {
eval(stripslashes($row[aktiv]));
}

// true, weil $var gesetzt wurde
if (isset($rank )) {
    echo '';
}
}

das funktioniert auch also wenn ich in der phpmyadmin rank 0 oder 1 eingebe das ist nicht das problem. Mein Problem ist einfach die wartungsmodus.php mit folgenden Inhalt

Code:
<?php
  global $db, $prefix;
  $sql = "SELECT * FROM ".$prefix."_wartungsmodus ORDER BY ip asc";
  $result = $db->sql_query($sql);
?>
<form action="admin.php?op=adminwartungsmodus" method="post">
  <?php
      while($row = $db->sql_fetchrow($result)) {
         echo'
           <label>IP: <input type="text" value="'.$row[ip].'" name="ip"></label>
           <label>IP 1: <input type="text" value="'.$row[ip1].'" name="ip1"></label>
             Status <select name="Namen">
          <option label="deaktiviert">Deaktviert</option>
          <option label="aktivert">Aktiviert</option>
    </select>
<input type="submit" value="Absenden">
</form>';
      }


?>


wenn ich da auf absenden klicke speichert er mir dies nicht in der Datenbank.... also ip sowie ip1 und dann ist die frage noch wie ich das mit dem Datensatz Rank regel also select option deaktiviert soll datensatz ,,rank'' wert 1 speichern und aktiviert datensatz ,,rank'' wert 0

ich hoffe das ich es verständlich erklärt habe.
 
Zuletzt bearbeitet:
Hi,

erkläre doch mal genau dies hier:

PHP:
<label>IP: <input type="text" value="'.$row[ip].'" name="ip"></label>
           <label>IP 1: <input type="text" value="'.$row[ip1].'" name="ip1"></label>

Diese IP ist dies deine oder vom Server ferner sind dies Unterschiedliche teklab Interfaces?

Wenn ich dich richtig verstehe, möchtest du im Interface sagen Panel1 soll im Wartungsmodus?

Gruß
 
Hallo, also die IPS trage ich selber ein das ist meine IP vom Router diese ändert sich auch nicht also statisch. IP 1 wäre dann z.b von einen freund von mir.+

rank 0 ist aktiviert und rank 1 ist deaktiviert das klappt ja auch alles mir gehts eig nur darum das er die input felder nicht in der datenbank speichert der rest funktioniert ja bereits schon wenn ich das per phpmyadmin eingebe.
 

Neue Beiträge

Zurück