Du definierst $t nur wenn die Bedingung zutrifft, dass $t dann nicht definiert ist wenn du noch keine POST-Daten abgeschickt hast ist irgendwie logisch..? Gleiches gilt fuer $z.
Siehe auch http://www.php-kurs.com/notice-undefined-index-meldung.htm
MySql Datenbank
-
-
Aber ich sende die Daten an ein 2 Formular und da kriege ich den fehler.
Oder wie meinst du das?
Die Variable sollte eigentlich ja nicht leer sein. :s -
-
Ich kriege keine Echo Meldung und beim "Post" wird auch nichts übergeben :s
HTML
Alles anzeigen<tr><td>Dein Name:</td> <td> <input type="text" name="nachname" list="browsers"> <datalist id="browsers"> <?php foreach (array_combine($nachname, $id_monteur) as $erg_nachname => $erg_id_monteur) { if(isset($_POST['nachname'])and $_POST['nachname'] == $erg_bezeichnung){ echo "Bedingung trifft zu"; $t = $id_taetigkeit; var_dump($t); } echo '<option value="' . $erg_nachname . '">' . $erg_id_monteur . '</option>'; } ?> </option> </datalist> </td> <td>ID Monteur.:</td> <td><input type="text" name="id_monteur" size="10" value="<?php echo $z; ?>" readonly="readonly" required></td></tr>
-
Dann trifft deine Bedingung
nicht zu, also ist
- entweder $_POST['nachname'] nicht definiert -> ueberpruefe ob das Formular wirklich abgeschickt wird und das Feld wirklich nachname heisst
- oder $_POST['nachname'] nicht gleich $erg_bezeichnung - was da drinsteht musst du selber ueberpruefen. Gib doch mal beide Werte vor der if aus und schau was rauskommt. -
Nun sieht meine datei so aus:
HTML
Alles anzeigen<?php ini_set('error_reporting', -1); ini_set('display_errors', -1); include('db_connect_i.inc.php'); $sql = "SELECT * FROM monteure" ; $erg = $db->query ($sql) or die ("Fehlermeldung=".$db->error); while(($row = $erg->fetch_assoc()) !== Null){ $nachname[] = $row["nachname"]; $id_monteur[] = $row["id"]; } $sql = "SELECT * FROM taetigkeit" ; $erg = $db->query ($sql) or die ("Fehlermeldung=".$db->error); while(($row = $erg->fetch_assoc()) !== Null){ $bezeichnung[] = $row["bezeichnung"]; $id_taetigkeit[] = $row["id"]; } ?> <form method="POST" action="zeiterfassung_speichern.php"> <table> <tr><td>ID Projekt.:</td> <td><input type="text" name="id_projekt" size="10" value="<?php echo $_GET['ida']; ?>" readonly="readonly" required></td></tr> <tr><td>Dein Name:</td> <td> <input type="text" name="nachname" list="browsers"> <datalist id="browsers"> <?php foreach (array_combine($nachname, $id_monteur) as $erg_nachname => $erg_id_monteur) { echo $erg_bezeichnung; echo $_POST['nachname']; if(isset($_POST['nachname'])and $_POST['nachname'] == $erg_bezeichnung){ echo "Bedingung trifft zu"; $t = $id_taetigkeit; var_dump($t); } echo '<option value="' . $erg_nachname . '">' . $erg_id_monteur . '</option>'; } ?> </option> </datalist> </td> <td>ID Monteur.:</td> <td><input type="text" name="id_monteur" size="10" value="<?php echo $z; ?>" readonly="readonly" required></td></tr> <tr><td>Tätigkeit:</td> <td> <input type="text" name="beschreibung" list="browsers1"> <datalist id="browsers1"> <?php foreach (array_combine($bezeichnung, $id_taetigkeit) as $erg_bezeichnung => $erg_id_taetigkeit) { if(isset($_POST['bezeichnung'])and $_POST['bezeichnung'] == $erg_bezeichnung){ $t = $id_taetigkeit; } echo '<option value="' . $erg_bezeichnung . '">' . $erg_id_taetigkeit . '</option>'; } ?> </option> </datalist> <td>Tätigkeits ID:</td> <td><input type="text" name="id_taetigkeit" size="10" value="<?php echo $t; ?>" readonly="readonly" required></td></tr> <tr><td> Arbeitsstunden:</td> <td><input type="text" name="arbeitszeit" size="20" required></td></tr> </table> <input type="submit" name="submit" value="Speichern"> <input type="reset"> <input type="hidden" name="insertsent" value="1"> </form>
es wird nichts ausgegeben :s
-
Führe das mal aus, OHNE etwas dran zu verändern:
PHP
Alles anzeigen<?php error_reporting(E_ALL); ini_set('display_errors', '1'); include('db_connect_i.inc.php'); //MONTEURE $sql = "SELECT * FROM `monteure`;"; $erg = $db->query($sql) or die ("DB Query nicht gelungen: ".$db->error); if ($erg === NULL) { die('Kein Ergebniss aus der DB bekommen: '.$sql); } while($row = $erg->fetch_assoc()){ $nachname[] = $row["nachname"]; $id_monteur[] = $row["id"]; } //TAETIGKEIT $sql = "SELECT * FROM `taetigkeit`;"; $erg = $db->query($sql) or die ("DB Query nicht gelungen: ".$db->error); if ($erg === NULL) { die('Kein Ergebniss aus der DB bekommen: '.$sql); } while($row = $erg->fetch_assoc()){ $bezeichnung[] = $row["bezeichnung"]; $id_taetigkeit[] = $row["id"]; } //AUSGABE foreach ($nachname as $key => $value) { echo "<br>--- ".$key." ---<br>"; echo 'Nachname:'.$nachname[$key].'<br>'; echo 'id_monteur:'.$id_monteur[$key].'<br>'; echo 'bezeichnung:'.$bezeichnung[$key].'<br>'; echo 'id_taetigkeit:'.$id_taetigkeit[$key].'<br>'; } ?>
-
So habe nichts dran geändert.
er gibt mir dies aus:
HTML
Alles anzeigen--- 0 --- Nachname:peter id_monteur:1 bezeichnung:Verdrahten id_taetigkeit:1 --- 1 --- Nachname:hans id_monteur:2 bezeichnung:Schienen Montage id_taetigkeit:2 --- 2 --- Nachname:maria id_monteur:3 Notice: Undefined offset: 2 in /volume1/web/db_stundenerfassung/neuer_eintrag.inc.php on line 36 bezeichnung: Notice: Undefined offset: 2 in /volume1/web/db_stundenerfassung/neuer_eintrag.inc.php on line 37 id_taetigkeit: --- 3 --- Nachname:nuligu id_monteur:4 Notice: Undefined offset: 3 in /volume1/web/db_stundenerfassung/neuer_eintrag.inc.php on line 36 bezeichnung: Notice: Undefined offset: 3 in /volume1/web/db_stundenerfassung/neuer_eintrag.inc.php on line 37 id_taetigkeit:
Ich habe 4 "monteure" und 2 Tätigkeiten erfasst ....
Daher gibt er alles der beiden Tabellen aus.
____
Die Select Boxen werden auch richtig befüllt, da sind alle Daten vorhanden die ich benötige.
Jedoch werden sie nicht ausgegeben :s
-
Was wird nicht ausgegeben?
Ist doch alles da was in der DB steht oder?CodeNotice: Undefined offset: 3 in /volume1/web/db_stundenerfassung/neuer_eintrag.inc.php on line 36 bezeichnung:
Bedeutet das in $bezeichnung[3] nix drinnsteht.. bzw. im Array $bezeichnung kein key mit dem Wert 3 vorhanden ist.
Also kann er hier auchnix ausgeben..
Vor dem echo könntest du jetzt z.B. mit empty() prüfen ob was aus der DB kam oder nicht. -
Ja die select-box wird erfolgreich geladen.
(mit 2 Spalten)
Nun wenn ich ein Item Auswähle soll dessen id in $z geschrieben werden und per post an ein form gesendet werden.Dies Funktioniert nicht :s
-
-
Hier ist ja die ganze datalist
HTML
Alles anzeigen<tr><td>Dein Name:</td> <td> <input type="text" name="nachname" list="browsers"> <datalist id="browsers"> <?php foreach (array_combine($nachname, $id_monteur) as $erg_nachname => $erg_id_monteur) { echo $erg_bezeichnung; echo $_POST['nachname']; if(isset($_POST['nachname'])and $_POST['nachname'] == $erg_bezeichnung){ echo "Bedingung trifft zu"; $z = $id_monteur; var_dump($t); } echo '<option value="' . $erg_nachname . '">' . $erg_id_monteur . '</option>'; } ?> </option> </datalist> </td> <td>ID Monteur.:</td> <td><input type="text" name="id_monteur" size="10" value="<?php echo $z; ?>" readonly="readonly" required></td></tr>
Was ich genau falsch oder anderst machen muss verstehe ich nicht
-
Was steckt denn in
- $nachname
- $id_monteur
- $erg_nachname
- $erg_id_monteur
- $erg_bezeichnung
- $_POST['nachname']
- $erg_id_monteur
- $t
?
Erklär mir für dumme was in den Variablen steckt und ich erkläre dir für dumme was du falsch machst ok?
Und was du dir vorstellst was beim Aufruf der Seite passieren soll (user actions)
-
Also ich fange ganz am Anfang an, hab meine Frage glaube ich wirklich nicht gut Formuliert:
Zusätzlich lösche ich alles raus was falsch ist oder nicht FunktioniertDatei: neuer_eintrag.inc.php
Ich Rufe 2 Tabellen in meiner Datenbank ab:HTML
Alles anzeigen<?php ini_set('error_reporting', -1); ini_set('display_errors', -1); include('db_connect_i.inc.php'); $sql = "SELECT * FROM monteure" ; $erg = $db->query ($sql) or die ("Fehlermeldung=".$db->error); while(($row = $erg->fetch_assoc()) !== Null){ $nachname[] = $row["nachname"]; $id_monteur[] = $row["id"]; } $sql = "SELECT * FROM taetigkeit" ; $erg = $db->query ($sql) or die ("Fehlermeldung=".$db->error); while(($row = $erg->fetch_assoc()) !== Null){ $bezeichnung[] = $row["bezeichnung"]; $id_taetigkeit[] = $row["id"]; } ?>
Diese Tabellen (2 Spalten je Tabelle) möchte ich in eine Combobox "Datalist" laden:HTML
Alles anzeigen<tr><td>ID Projekt.:</td> <td><input type="text" name="id_projekt" size="10" value="<?php echo $_GET['ida']; ?>" readonly="readonly" required></td></tr> <tr><td>Dein Name:</td> <td> <input type="text" name="nachname" list="browsers"> <datalist id="browsers"> <?php foreach (array_combine($nachname, $id_monteur) as $erg_nachname => $erg_id_monteur) { if(isset($_POST['nachname'])and $_POST['nachname'] == $erg_bezeichnung){ $t = $id_taetigkeit; } echo '<option value="' . $erg_nachname . '">' . $erg_id_monteur . '</option>'; } ?> </option> </datalist> </td> <tr><td>Tätigkeit:</td> <td> <input type="text" name="beschreibung" list="browsers1"> <datalist id="browsers1"> <?php foreach (array_combine($bezeichnung, $id_taetigkeit) as $erg_bezeichnung => $erg_id_taetigkeit) { if(isset($_POST['bezeichnung'])and $_POST['bezeichnung'] == $erg_bezeichnung){ $t = $id_taetigkeit; } echo '<option value="' . $erg_bezeichnung . '">' . $erg_id_taetigkeit . '</option>'; } ?> </option> </datalist>
Zusätzliche habe ich noch 1 Textfelder bei denen etwas Ausgefüllt wird:
<tr><td> Arbeitsstunden:</td>
<td><input type="text" name="arbeitszeit" size="20" required></td></tr>Also sieht die Datei so aus:
HTML
Alles anzeigen<?php ini_set('error_reporting', -1); ini_set('display_errors', -1); include('db_connect_i.inc.php'); $sql = "SELECT * FROM monteure" ; $erg = $db->query ($sql) or die ("Fehlermeldung=".$db->error); while(($row = $erg->fetch_assoc()) !== Null){ $nachname[] = $row["nachname"]; $id_monteur[] = $row["id"]; } $sql = "SELECT * FROM taetigkeit" ; $erg = $db->query ($sql) or die ("Fehlermeldung=".$db->error); while(($row = $erg->fetch_assoc()) !== Null){ $bezeichnung[] = $row["bezeichnung"]; $id_taetigkeit[] = $row["id"]; } ?> <form method="POST" action="zeiterfassung_speichern.php"> <table> <tr><td>ID Projekt.:</td> <td><input type="text" name="id_projekt" size="10" value="<?php echo $_GET['ida']; ?>" readonly="readonly" required></td></tr> <tr><td>Dein Name:</td> <td> <input type="text" name="nachname" list="browsers"> <datalist id="browsers"> <?php foreach (array_combine($nachname, $id_monteur) as $erg_nachname => $erg_id_monteur) { if(isset($_POST['nachname'])and $_POST['nachname'] == $erg_bezeichnung){ $t = $id_taetigkeit; } echo '<option value="' . $erg_nachname . '">' . $erg_id_monteur . '</option>'; } ?> </option> </datalist> </td> <tr><td>Tätigkeit:</td> <td> <input type="text" name="beschreibung" list="browsers1"> <datalist id="browsers1"> <?php foreach (array_combine($bezeichnung, $id_taetigkeit) as $erg_bezeichnung => $erg_id_taetigkeit) { if(isset($_POST['bezeichnung'])and $_POST['bezeichnung'] == $erg_bezeichnung){ $t = $id_taetigkeit; } echo '<option value="' . $erg_bezeichnung . '">' . $erg_id_taetigkeit . '</option>'; } ?> </option> </datalist> <tr><td> Arbeitsstunden:</td> <td><input type="text" name="arbeitszeit" size="20" required></td></tr> </table> <input type="submit" name="submit" value="Speichern"> <input type="reset"> <input type="hidden" name="insertsent" value="1"> </form>
Bis hierhin Funktioniert allesNun möchte ich diese Auswahlen Speichern:
HTML
Alles anzeigenini_set('error_reporting', -1); ini_set('display_errors', -1); include('../db_connect_i.inc.php'); $id_monteur = isset($_POST['t']) ? $_POST['t'] : ''; $id_taetigkeit = isset($_POST['z']) ? $_POST['z'] : ''; $arbeitszeit = isset($_POST['arbeitszeit']) ? $_POST['arbeitszeit'] : ''; $id_projekt = isset($_POST['id_projekt']) ? $_POST['id_projekt'] : ''; mysqli_report(MYSQLI_REPORT_ERROR); $stmt = $db->prepare("INSERT INTO stunden (taetigkeit, `mitarbeiter_id`, arbeitszeit, projekt_id) VALUES (?, ?, ?, ?)"); $stmt->bind_param('iiss', $id_taetigkeit, $id_monteur, $arbeitszeit, $id_projekt); $stmt->execute(); $stmt->close(); //Header("Location: stundenerfassung_uebersicht.php?navi=1");
Jeoch hat $t und $z keinen Inhalt
die Variable arbeitszeit und id_projekt habden den richtigen Inhalt. -
Kein Wunder das sie Inhaltslos sind... sie werden ja beim Absenden auchnicht übergeben ..
Leider ist dein HTML schon völlig invalide..:
HTML
Alles anzeigen<form method="POST" action="zeiterfassung_speichern.php"> <table> <tr> <td>ID Projekt.:</td> <td> <input type="text" name="id_projekt" size="10" value="<?php echo $_GET['ida']; ?>" readonly="readonly" required> </td> </tr> <tr> <td>Dein Name:</td> <td> <input type="text" name="nachname" list="names"> <datalist id="names"> <?php ?> </option> </datalist> </td> <tr> <td>Tätigkeit:</td> <td> <input type="text" name="beschreibung" list="taetigkeiten"> <datalist id="taetigkeiten"> <?php ?> </option> </datalist> <tr> <td> Arbeitsstunden:</td> <td> <input type="text" name="arbeitszeit" size="20" required> </td> </tr> </table> <input type="submit" name="submit" value="Speichern"> <input type="reset"> <input type="hidden" name="insertsent" value="1"> </form>
Vier schwerwiegende offensichtliche (wenn man seinen Code einrückt ) Fehler sind zu finden..
Ich verstehe nicht wofür du die id's noch mitgeben willst ( vorallem kannst du immer nur eine bestimmte id mitgeben und nicht eine davon abhängig welche Beschreibung/name angegeben wird.. Da du dies nie wissen wirst (PHP seitig) -> Die einzige möglichkeit die aktuellen ID's zu ermitteln ist so wie ich es jetzt in der datalist gemacht hab..
PHP
Alles anzeigen<?php error_reporting(E_ALL); ini_set('display_errors', '1'); include('db_connect_i.inc.php'); //MONTEURE $sql = "SELECT * FROM `monteure`;"; $erg = $db->query($sql) or die ("DB Query nicht gelungen: ".$db->error); if ($erg === NULL) { die('Kein Ergebniss aus der DB bekommen: '.$sql); } while($row = $erg->fetch_assoc()){ $nachname[] = $row["nachname"]; $id_monteur[] = $row["id"]; } //TAETIGKEIT $sql = "SELECT * FROM `taetigkeit`;"; $erg = $db->query($sql) or die ("DB Query nicht gelungen: ".$db->error); if ($erg === NULL) { die('Kein Ergebniss aus der DB bekommen: '.$sql); } while($row = $erg->fetch_assoc()){ $bezeichnung[] = $row["bezeichnung"]; $id_taetigkeit[] = $row["id"]; } ?> <form method="POST" action="zeiterfassung_speichern.php"> <table> <tr> <td>ID Projekt.:</td> <td> <input type="text" name="id_projekt" size="10" value="<?php echo $_GET['ida']; ?>" readonly required> </td> </tr> <tr> <td>Dein Name:</td> <td> <input type="text" name="nachname" list="names"> <datalist id="names"> <?php foreach ($id_monteur as $key => $value) { echo ' <option value="'.$id_monteur[$key].'"> '.$nachname[$key].' </option> '; } ?> </datalist> </td> </tr> <tr> <td>Tätigkeit:</td> <td> <input type="text" name="beschreibung" list="taetigkeiten"> <datalist id="taetigkeiten"> <?php foreach ($id_taetigkeit as $key => $value) { echo ' <option value="'.$id_taetigkeit[$key].'"> '.$bezeichnung[$key].' </option> '; } ?> </datalist> </td> <tr> <td> Arbeitsstunden:</td> <td> <input type="text" name="arbeitszeit" size="20" required> </td> </tr> </table> <?php $some_id = 9; //Wofür auch immer du das dann Brauchst... echo '<input name="z" value="'.$some_id.'" type="text" readonly>'; //Jetzt kannst du im empfängerscript mit $_POST['z'] some_id auslesen.. ?> <input type="submit" name="submit" value="Speichern"> <input type="reset"> <input type="hidden" name="insertsent" value="1"> </form>
Dein empfängerscript sollte jetzt mal so aussehen:Ich denk jetzt hast du was du willst
-
Vielen Dank,
Ist dies wirklich die einzige Art wie es Funktioniert? Schöner währe wenn beim Auszufüllenden Formular nicht die ID zuerst stehen würden sondern die namen -
Ich weiß ja nicht wie das bei dir aussieht aber bei mir gibts ein Textfeld.. wenn ich da was reintippe bekomme ich 'Vorschläge' was ich tippen könnte ( aus der Datalist ), wenn ich dann einen Vorschlag wähle, wir dessen ID ins Textfeld geschrieben..
Wie ist das bei dir? -
Ich muss es "idioten sicher" machen.
Daher dachte ich das ist die Einfachste Lösung.
Ich möchte nur vorgegebene Datensätze auflisten.
Währe es möglich dies mit einer Auflistung zu tun?
Oder gibt es keine Möglichkeit dies so zu machen? (Name Anzeigen und ID speichern)
-
Das ist idiotensicher..:
HTML<select name="id_personen"> <option value="0">Herr K.</option> <option value="1">Frau B.</option> <option value="2">Frau Y.</option> <option value="3">Herr G.</option> </select>
An das auswertende script wird dann die 'value' übergeben, also in deinem fall die Id's der Personen/Tätigkeiten.. einfaches spiel..Beispiel: http://jsfiddle.net/v2xz0g89/2/
-
Das ist ja das, was ich eigentlich brauche xD...
Einfach gerne statt mit Fixen Einträgen mit Daten aus der Datenbank
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!