CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
23.03.2017, 16:06:14
|
Anfänger
|
|
Registriert seit: Mar 2017
Alter: 38
Beiträge: 5
|
|
Dynamische Anzahl an Formfeldern
Hallo,
ich war mal gut in MySQL, aber bin nun schon einige Jahre raus. Könnt ihr mir auf die Sprünge helfen?
ich habe eine DB-Tabelle mit den Spalten Unternehmen, Land, Teilnehmer. Nun möchte ich per im URL-String übergebenen PHP-Parameter "Unternehmen" jeweils alle registrierten Teilnehmer/Länder anzeigen lassen. Mit dem Clou: Diese sollen in Input-Formfeldern dargestellt werden, die dann direkt geändert und per Submit-Button in der Datenbank geändert werden können.
Wie gehe ich das am besten an?!
Danke Euch und VG!
|
23.03.2017, 16:34:44
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Dynamische Anzahl an Formfeldern
Hallo und willkommen hier im Forum.
Es ist wohl mehr ein mit PHP zu lösendes Problem als ein reines MySQL Problem.
Folgende Herangehensweise würde ich vorschlagen:
- URL mit Parameter aufrufen (Frage: Wie kommt der Parameter an die URL?)
- Im verarbeitenden Script den Parameter auswerten, dabei auf möglichen SQL-Injection achten
- Die gefundenen Datensätze als Tabellen anzeigen und dabei in jeder Zeile einen Submit-Button zum speichern des jeweiligen Datensatzes anfügen.
Noch einfacher geht es mit phpMyAdmin - da ist schon alles fertig und Du hast die vielfältigsten Möglichenkeiten zum Suchen, Ändern oder Anfügen.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
23.03.2017, 16:42:14
|
Anfänger
|
|
Registriert seit: Mar 2017
Alter: 38
Beiträge: 5
|
|
AW: Dynamische Anzahl an Formfeldern
Moin, Danke Dir!
Der PHP-Teil ist fein. Der Parameter Unternehmen wird aus einem Mitgliederbereich einer Webseite übergeben. (Ein weiterer Parameter ist eine Verifizierungs-ID, um manuelles Manipulieren der URL zu unterbinden.) Ich habe nur Probleme, den richtigen SQL-Code zu finden, der mir eine dynamische Anzahl Input-Feldern generiert und dann auch genau dieselben Werte updatet.
Es sollte nur einen Submit-Button für das gesamte Formular geben
|
23.03.2017, 16:58:37
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Dynamische Anzahl an Formfeldern
Mit wieviel Datensätzen rechnest Du denn pro Abfrage/Unternehmen?
Und es hat nichts mit dem SQL-Code (SELECT * FROM tabelle WHERE firma = $_GET['Unternehemn']) zu tun. Die Anzahl der Treffer der Abfrage entscheidet die Anzahl der Zeilen.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
23.03.2017, 17:07:32
|
Anfänger
|
|
Registriert seit: Mar 2017
Alter: 38
Beiträge: 5
|
|
AW: Dynamische Anzahl an Formfeldern
Moin, aber wie kann ich dann genau dieselben Datensätze updaten? Ich habe mich in die neuen SQL-Begebenheiten ("mysqli" und Fetch-Arrays etc.) versucht einzulesen, aber bisher kein Glück gehabt bei der Umsetzung :)
Pro Unternehmen wird es 1-30 Teilnehmer geben.
|
23.03.2017, 17:30:07
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Dynamische Anzahl an Formfeldern
Lass jetzt mal SQL für das Formular vollkommen außen vor, dass ist reines PHP aufbauend auf der Rückgabe Deines Statments.
Grobe Skizze für das weitere Vorgehen:
- Ermittle die Anzahl der Datensätze die Du geliefert bekommst.
- erstelle ein Forular
- in einer Schleife durchläufst Du die Datensätze und zeigst sie im Formular an
- da nur mit EINEM Button arbeiten möchtest muss Du zu jeder Zeile in Deinem Formular noch die ID des Datensatz mitgeben (kann als hidden-Feld geschehen)
- Formular absenden
- entsprechend der Anzahl der Datensätze eine UPDATE Set Tabelle durchführen
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
23.03.2017, 17:42:05
|
Anfänger
|
|
Registriert seit: Mar 2017
Alter: 38
Beiträge: 5
|
|
AW: Dynamische Anzahl an Formfeldern
Klingt logisch und schlüssig. Besonders der Update-Teil macht mir derzeit noch zu schaffen. Wie würde der Deiner Meinung nach am besten aussehen?
Wenn ich die diversen Inputs mit IDs habe, wie kriege ich die in einen Array, der zur DB-Tabelle passt? Das ist der Teil, wo ich derzeit noch wirklich strauchle :-/
|
24.03.2017, 13:09:57
|
Member
|
|
Registriert seit: Mar 2004
Ort: wien
Beiträge: 512
|
|
AW: Dynamische Anzahl an Formfeldern
Sorry,
ohne mich in die Diskussion einmischen zu wollen, aber ich denke, die bessere Wahl für dein Formular wäre ein Dropdown-Feld (Select) statt eines Buttons.
Dann kämpft man sich in der Formularauswertung nicht durch alle möglichen $_POST Parameter der Buttons sondern wertet einen einzigen Wert beim User, Land etc aus, also $_POST['user'], $_POST['land'] etc..
Meine Vorgangsweise wäre also:
1. Datensätze auswerten
2. Select-Auswahl befüllen und im Formular anbieten.
3. Auswertung des Forms und UPDATE des Datenbank Eintrags.
PHP-Code:
<?php function preview($var) { echo '<pre>'; print_r($var); echo '</pre>'; }
function make_select($var, $name) { $select = '<select name="'.$name.'" class="selecting">'."\n"; for($i = 0; $i < count($var); $i++) { $select.= '<option value="'.$var[$i].'">'.$var[$i].'</option>'."\n"; } $select .= '</select>'."\n";
return $select; }
if(isset($_POST['do']) and ($_POST['do'] === 'do')) { // hier z.B. das UPDATE und Weiterleitung preview($_POST); }
else { /* * Alle Länder sind im array $land * Hier nur ein Testarray */ $land = array('BRD', 'AUT', 'HU', 'ENG');
/* * Alle user sind im array $user * Hier nur ein Testarray */ $user = array('Bernd', 'Anulf', 'Heinz', 'Emil');
// make_select(Variable, $_POST Name) $sel_land = make_select($land, 'land'); $sel_user = make_select($user, 'user');
echo '<form method="POST" action="'.$_SERVER['SCRIPT_NAME'].'">'; echo $sel_land; echo $sel_user; echo '<input type="SUBMIT" name="do" value="do">'; }
__________________
Gruss sys ;-)
Ich möchte wie mein Grossvater sterben, lächelnd und schlafend, nicht schreiend und weinend, wie sein Beifahrer.
Geändert von sysop (24.03.2017 um 13:28:21 Uhr)
|
24.03.2017, 16:05:59
|
Anfänger
|
|
Registriert seit: Mar 2017
Alter: 38
Beiträge: 5
|
|
AW: Dynamische Anzahl an Formfeldern
Zitat:
Zitat von sysop
ich denke, die bessere Wahl für dein Formular wäre ein Dropdown-Feld (Select) statt eines Buttons.
Dann kämpft man sich in der Formularauswertung nicht durch alle möglichen $_POST Parameter der Buttons sondern wertet einen einzigen Wert beim User, Land etc aus, also $_POST['user'], $_POST['land'] etc.
|
Moin sysop, Danke für deine Antwort, habe es gerade erst gelesen. Das Ding ist, jedes Unternehmen hat eine dynamische Anzahl sowohl an Ländern als auch an Teilnehmern.
Habe heute den Tag über ein bisschen rumprobiert und bin jetzt hier, siehe unten. Weiß aber nicht so recht, was ich mit dem Update-Teil machen soll, weil - wie Du schon sagst - jetzt jedes Input-Feld einen Namen hat, der auch die ID enthält. Wie krieg ich die in die Datenbank in die Spalten, deren namen keine IDs haben... :-/
PHP-Code:
<?php
if(isset($_POST['update']))
{
echo "Updated data successfully";
$dbhost = '...';
$dbuser = '...';
$dbpass = '...';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
[UPDATE, aber wie? :-/]
mysql_select_db('...');
$retval = mysql_query( $sql, $conn );
}
else
{
$Company = $_GET['company'];
$link = mysqli_connect ("...", "...", "...", "...");
echo ("<html><body><table>");
$query = "SELECT ID, Country, FullName, Conference, DietaryRequests FROM DinnerAttendees WHERE Company = '$Company'";
if ($result = mysqli_query($link, $query)) {
echo ("<form method='post' action='regstest.php'>");
/* fetch associative array */
while ($row = mysqli_fetch_assoc($result)) {
printf ("<input type='text' name='%s_ID' value='%s'> <input type='text' name='%s_Land' value='%s'> <input type='text' name='%s_Name' value='%s'> <input type='text' name='%s_Conf' value='%s'> <input type='text' name='%s_Diet' value='%s'><br>", $row["ID"], $row["ID"], $row["ID"], $row["Country"], $row["ID"], $row["Country"], $row["ID"], $row["FullName"], $row["ID"], $row["Conference"], $row["ID"], $row["DietaryRequests"]);
}
echo ("<input name='update' type='submit' id='update' value='Update'></form>");
/* free result set */
mysqli_free_result($result);
}
/* close connection */
mysqli_close($link);
echo ("</table></body></html>");
}
?>
|
27.03.2017, 09:30:18
|
Member
|
|
Registriert seit: Mar 2004
Ort: wien
Beiträge: 512
|
|
AW: Dynamische Anzahl an Formfeldern
Zitat:
Zitat von AndreasH
.... Das Ding ist, jedes Unternehmen hat eine dynamische Anzahl sowohl an Ländern als auch an Teilnehmern.....
|
Genau das ist es, was mein Code berücksichtigt und vereinfacht. Alles was da noch ergänzt werden müsste, ist das Auslesen der Länder und der User.
Wenn du mit dynamisch meinst, dass mehrere Länder und mehrere User einem Datensatz zugeordnet werden können, sind Hilfstabellen das, was du suchst. Aufbau ca so:
Code:
Userhildfstabelle
Datesatz_id | User_id
Landhilfstabelle
Datensatz_id | Land_id
Wenn man mal alle Daten beieinander hat, ist das Update doch wie bei jedem anderen SQL-Update auch.
$query = 'UPDATE `'.$db_name.'`.`tabelle` SET `Wert1` = \''.$Formvalue1.'\', `Wert2` = \''.$Formvalue2.'\' WHERE `bla` = \''.$bla.'\'';
Wenn es NICHT die Hilfstabellen Variante ist, wird vor dem Update z.B. per implode() der Feldinhalt zusammengestellt. Das hängt aber davon ab, wie du dein Formular aufgebaut hast.
PHP-Code:
printf ("<input type='text' name='%s_ID' value='%s'> <input type='text' name='%s_Land' value='%s'>
ist in meinen Augen etwas unglücklich gewählt.
PHP-Code:
printf ("<input type='text' name='%s_ID' value='%s'> <input type='text' name='land['%s'] value='%s'>")
erstellt dir ein array mit den Daten, das man dann weiter bearbeiten kann.
Annahme, deine Daten kommen aus dem Formular in $_POST['land'][1], $_POST['land'][2], $_POST['land'][3]
PHP-Code:
$landwert = implode(",",$_POST['land']);
$query = 'UPDATE `'.$db_name.'`.`tabelle` SET `Land` = \''.$landwert.'\' WHERE `bla` = \''.$bla.'\'';
__________________
Gruss sys ;-)
Ich möchte wie mein Grossvater sterben, lächelnd und schlafend, nicht schreiend und weinend, wie sein Beifahrer.
Geändert von sysop (27.03.2017 um 09:40:58 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:07:23 Uhr.
|