SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 23.03.2017, 17:06:14
AndreasH AndreasH ist offline
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!
Mit Zitat antworten
  #2  
Alt 23.03.2017, 17:34:44
Benutzerbild von vt1816
vt1816 vt1816 ist offline
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!
Mit Zitat antworten
  #3  
Alt 23.03.2017, 17:42:14
AndreasH AndreasH ist offline
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
Mit Zitat antworten
  #4  
Alt 23.03.2017, 17:58:37
Benutzerbild von vt1816
vt1816 vt1816 ist offline
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!
Mit Zitat antworten
  #5  
Alt 23.03.2017, 18:07:32
AndreasH AndreasH ist offline
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.
Mit Zitat antworten
  #6  
Alt 23.03.2017, 18:30:07
Benutzerbild von vt1816
vt1816 vt1816 ist offline
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!
Mit Zitat antworten
  #7  
Alt 23.03.2017, 18:42:05
AndreasH AndreasH ist offline
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 :-/
Mit Zitat antworten
  #8  
Alt 24.03.2017, 14:09:57
sysop sysop ist offline
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 14:28:21 Uhr)
Mit Zitat antworten
  #9  
Alt 24.03.2017, 17:05:59
AndreasH AndreasH ist offline
Anfänger
 
Registriert seit: Mar 2017
Alter: 38
Beiträge: 5
AW: Dynamische Anzahl an Formfeldern

Zitat:
Zitat von sysop Beitrag anzeigen
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);
            
[
UPDATEaber 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>");

  }

?>
Mit Zitat antworten
  #10  
Alt 27.03.2017, 10:30:18
sysop sysop ist offline
Member
 
Registriert seit: Mar 2004
Ort: wien
Beiträge: 512
AW: Dynamische Anzahl an Formfeldern

Zitat:
Zitat von AndreasH Beitrag anzeigen
.... 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 10:40:58 Uhr)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Übersicht von Kunden, Kundenbestellungen und Anzahl Maschinen istuggi MySQLi/PDO/(MySQL) 3 18.08.2014 15:48:37
Anzahl von Einträgen mit gleicher Fremdschlüssel-ID toomuchcoffee MySQLi/PDO/(MySQL) 3 09.07.2013 00:08:38
dynamische Tabelle oder dynamische DIV's urvater PHP Grundlagen 11 12.04.2012 05:41:48
Anzahl der Einträge aus DB erfahren Franky76 PHP Grundlagen 3 04.03.2005 22:07:48
UPDATE - nur eine bestimmte Anzahl von Datensätzen Stellaluna MySQLi/PDO/(MySQL) 0 08.07.2004 12:59:06


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:25:04 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt