php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 4 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 02-03-2013, 14:15
pluto007
 Registrierter Benutzer
Links : Onlinestatus : pluto007 ist offline
Registriert seit: Mar 2013
Beiträge: 5
pluto007 befindet sich auf einem aufstrebenden Ast
Standard Formular mit Auswahlbox -> Parameterübergabe

Hallo liebe Leute!

Ich habe ein Problem, wozu ich bisher nichts Vernünftiges gefunden habe...

Ich habe ein Formular mit Dropdownfeldern gebaut:
PHP-Code:
<?php
echo "<form action = 'new_record.php' method = 'post'>";
echo 
"<select name='Farbe'>";
echo 
"<option value='0'>rot</option>";
echo 
"<option value='1'>blau</option>";
echo 
"</select><br><br>";

echo 
"<select name='Groesse'>";
echo 
"<option value='0'>5</option>";
echo 
"<option value='1'>10</option>";
echo 
"</select><br><br>";

echo 
"<input type='submit' name='gesendet'>";
echo 
"<input type='reset'>";
echo 
"</form>";
 
?>

Der Wert der Farbe und der Groesse sollen als Parameter von dem Skript new_record.php übernommen werden, aber irgendwie komme ich nicht an die Werte ran. Bisher habe ich das ohne Dropdownfelder gemacht:
PHP-Code:
<?php
echo "<form action = 'new_record.php' method = 'post'>";
echo 
"     <input name='Farbe'> Farbe<p>";
echo 
"    <input name='Groesse'> Groesse<p>";
echo 
"    <input type='submit' name='gesendet'>";
echo 
"    <input type='reset'>";
echo 
"</form>";
?>
Hier konnte ich im Skript new_record.php mit
PHP-Code:
$Farbe$_POST['Farbe'];
$Groesse$_POST['Groesse']; 
auf die Übergabewerte zugreifen.

Kann ich das mit den Dropdownfeldern ebenso irgendwie hinkriegen?

Vielen Dank für Eure Hilfe!

pluto
Mit Zitat antworten
  #2 (permalink)  
Alt 02-03-2013, 14:28
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

print_r($_POST);
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 02-03-2013, 14:32
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Warum sollte das nicht gehen?
Nur würde ich da gleich die entsprechenden Werte übergeben.



PHP-Code:
echo "<form action = 'new_record.php' method = 'post'>".
     
"<select name='Farbe'>".
     
"<option value='FF0000'>rot</option>".
     
"<option value='0000FF'>blau</option>".
     
"</select><br><br>"
Mit Zitat antworten
  #4 (permalink)  
Alt 02-03-2013, 15:56
pluto007
 Registrierter Benutzer
Links : Onlinestatus : pluto007 ist offline
Registriert seit: Mar 2013
Beiträge: 5
pluto007 befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

wow - danke für die blitzschnellen Antworten.

Mit
PHP-Code:
print_r($_POST); 
bekomme ich die Werte der beiden Dropdownfelder ausgegeben allerdings alle Variablen und deren Werte als eine Ausgabe:
Code:
Array ( [Farbe] => 0 [Groesse] => 0 [gesendet] => Senden )
Wie greife ich gezielt auf den Wert des ersten und auf den Wert des zweiten Dropdownformulars zu?

Danke vielmals!
Mit Zitat antworten
  #5 (permalink)  
Alt 02-03-2013, 16:02
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Habe es mal getestet. Wenn die Werte ungeprüft übernommen werden, sollte es auch mit Deiner Variante gelingen. Doch wenn die Werte geprüft werden, je nachdem wie die Werte überprüft werden, kann es passieren, dass die 0 als kein Wert gewertet wird. In diesem Fall müsstest Du entweder gegen !== false püfen oder aber mit 1 beginnen und nicht mit 0 oder aber halt die Hexwerte verwenden.

Formatiert habe ich es auch noch etwas, den Unterschied siehst Du im Quelltext.

PHP-Code:
<?php
echo "<form action = 'new_record.php' method = 'post'>\n".
     
"\t<select name='Farbe'>\n".
     
"\t<option value='1'>rot</option>\n".
     
"\t<option value='2'>blau</option>\n".
     
"\t</select><br>\n".
     
"\t<br>\n".
     
"\t<select name='Groesse'>\n".
     
"\t<option value='1'>5</option>\n".
     
"\t<option value='2'>10</option>\n".
     
"\t</select><br>\n".
     
"\t<br>\n".
     
"\t<input type='submit' name='gesendet'>\n".
     
"\t<input type='reset'>\n".
     
"</form>\n";


if (isset(
$_POST['Farbe']) and !empty($_POST['Farbe'])) {

    
$Farbe $_POST['Farbe'];
    echo 
htmlspecialchars($Farbe);
}
else {echo 
"Es wurde kein Wert für Farbe übergeben.";
}

if (isset(
$_POST['Groesse']) and !empty($_POST['Groesse'])) {

    
$Groesse $_POST['Groesse'];
    echo 
htmlspecialchars($Groesse);
}
else {echo 
"Es wurde kein Wert für Groess übergeben.";
}
 
?>
Und bei Verwendung noch mit Filter, sonst kann Dir da alles reingedrückt werden:

PHP-Code:
// oder [^a-zA-Z0-9]  bei Hex

if (isset($_POST['Farbe']) and !empty($_POST['Farbe'])) {

    
$Farbe $_POST['Farbe'];
    
$Farbe preg_replace("/[^0-9]/"""$Farbe);    
    echo 
htmlspecialchars($Farbe);
}
else {echo 
"Es wurde kein Wert für Farbe übergeben.";
}

if (isset(
$_POST['Groesse']) and !empty($_POST['Groesse'])) {

    
$Groesse $_POST['Groesse'];
    
$Groesse preg_replace("/[^0-9]/"""$Groesse);    
    echo 
htmlspecialchars($Groesse);
}
else {echo 
"Es wurde kein Wert für Groesse übergeben.";


Geändert von Melewo (02-03-2013 um 16:13 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 02-03-2013, 22:53
pluto007
 Registrierter Benutzer
Links : Onlinestatus : pluto007 ist offline
Registriert seit: Mar 2013
Beiträge: 5
pluto007 befindet sich auf einem aufstrebenden Ast
Standard

Hallo!

spitze - klappt perfekt!

Nochmals danke!

Grüße
pluto
Mit Zitat antworten
  #7 (permalink)  
Alt 19-03-2013, 16:15
pluto007
 Registrierter Benutzer
Links : Onlinestatus : pluto007 ist offline
Registriert seit: Mar 2013
Beiträge: 5
pluto007 befindet sich auf einem aufstrebenden Ast
Standard

Hallo nochmal,

mittlerweile bin ich dank Eurer Hilfe recht weit gekommen. Ich habe nur noch ein paar grundsätzliche Fragen wozu ich nichts Vernünftiges finde.
Aktuell sieht meine Struktur so aus:
Hauptskript -> include DB-Connect Skript
Hauptskript -> per Link -> Löschskript
Hauptskript -> per Form Action -> Neuer Datensatz Skript

Was mir daran nicht gefällt:
- Parameterübergabe im Link Aufruf ($_Session - habe ich nicht mit einem Link hin bekommen)
- viele Skripte - wie kann man das DB-Connect Skript und auch das Löschskript in das Hauptskript packen? Macht man das mit Klassen oder Funktionen? Ich werde nicht schlau aus dem was ich da immer lese...

Vielleicht hat einer eine Tipp für mich? Wäre sehr nett!
Hier die einzelnen Skripte.

Danke & Grüße
pluto

Hauptskript:

PHP-Code:
<?php
//error_reporting(0);

$joomlarootdir="http://mu-c-030/stefan";

// DB Verbindung herstellen
include 'fangblatt_connect_db.php';

// Ohne Joomlaframework muss die folgende Zeile auskommentiert werden, da die Variable $joomlaid sonst nicht verfügbar ist.
$joomlaid="861";

// SQL Abfrage für die Ausgabe der Tabelle formulieren und absetzen
// Datumsspalte wird in deutschem Format ausgegeben
// UserID wird auf die aktuelle JoomlaID des angemeldeten Joomla Users eingeschränkt
$sql_all "SELECT DATE_FORMAT(Datum,'%d.%m.%Y') as Datum, Gewaesser, Anzahl, Fischart, Bemerkung, ColumnID FROM fangblatt where UserID = $joomlaid";
$query_all mysql_query($sql_all) or die("Anfrage sql_all nicht erfolgreich");

// SQL Abfrage für die maximale ColumnID formulieren, absetzen.
// Array abholen und maximale ColumnID für aktuellen User als Variable setzen
$sql_max_columnid "SELECT max(ColumnID) as maxcolumnid FROM fangblatt where UserID = $joomlaid";
$query_max_columnid mysql_query($sql_max_columnid) or die("Anfrage sql_max_columnid nicht erfolgreich");
$row_max_columnid mysql_fetch_array($query_max_columnidMYSQL_ASSOC);
$maxColumnID $row_max_columnid['maxcolumnid'];


// Kopfzeile der Tabelle ausgeben
echo
"<table border='1'>\n".
"<tr>\n".
"<th>Datum <BR>(z.B. 15.03.2013)</th>\n".
"<th>Gewaesser</th>\n".
"<th>Anzahl</th>\n".
"<th>Fischart</th>\n".
"<th>Bemerkung</th>\n".
"<th>L&ouml;schen?</th>\n".
"</tr>\n";

// Schleife für Datenebereich der Tabelle einleiten
while ($adr mysql_fetch_array($query_all))
    {

    
// Datenspalten ausgeben
    
echo
    
"<tr>\n".
    
"<td>".$adr['Datum']."</td>\n".
    
"<td>".$adr['Gewaesser']."</td>\n".
    
"<td>".$adr['Anzahl']."</td>\n".
    
"<td>".$adr['Fischart']."</td>\n".
    
"<td>".$adr['Bemerkung']."</td>\n";

    
// Löschbutton ausgeben, wenn die ColumnID mit der größten ColumnID des angemeldeten Useres übereinstimmt.
    
$loeschid=$adr['ColumnID'];
    if (
$maxColumnID == $loeschid)
        {
          echo 
"<td><a href='".$joomlarootdir."/fangblatt_delete_record.php?del=".$loeschid."&joomlarootdir=".$joomlarootdir."'>L&ouml;schen</a></td>";
        }
        else
        {
        echo 
"<td>&nbsp</td>";
        }
        echo 
"</tr>";
    }

// Formular aufbauen
echo
// Formulardefinition
"<form action = '/stefan/fangblatt_new_record.php' method = 'post'>\n".
// Feld in Spalte 1
"<td bgcolor='#00FFFF'> <input name='Datum'></td>\n".
// Feld in Spalte 2
"<td bgcolor='#00FFFF'><select name='Gewaesser'>\n".
"<option value='Bitte ausw&auml;hlen'>Bitte ausw&auml;hlen</option>\n".
"<option value='See'>See</option>\n".
"<option value='Paar'>Paar</option>\n".
"</select></td>\n".
// Feld in Spalte 3
"<td bgcolor='#00FFFF'><select name='Anzahl'>\n".
"<option value='Bitte ausw&auml;hlen'>Bitte ausw&auml;hlen</option>\n".
"<option value='1'>1</option>\n".
"<option value='2'>2</option>\n".
"<option value='3'>3</option>\n".
"<option value='4'>4</option>\n".
"</select></td>\n".
// Feld in Spalte 4
"<td bgcolor='#00FFFF'> <select name='Fischart'>\n".
"<option value='Bitte ausw&auml;hlen'>Bitte ausw&auml;hlen</option>\n".
"<option value='Aal'>Aal</option>\n".
"<option value='Äsche'>&Auml;sche</option>\n".
"<option value='Bachforelle'>Bachforelle</option>\n".
"<option value='Bachsaibling'>Bachsaibling</option>\n".
"<option value='Graskarpfen'>Graskarpfen</option>\n".
"<option value='Hecht'>Hecht</option>\n".
"<option value='Karpfen'>Karpfen</option>\n".
"<option value='Regenbogen Forelle'>Regenbogen Forelle</option>\n".
"<option value='Schleie'>Schleie</option>\n".
"</select></td>\n".
// Feld in Spalte 5
"<td bgcolor='#00FFFF'>    <input name='Bemerkung'></td>\n".
"<td>&nbsp</td>\n".
"</tr>\n".
"</table>\n".
"<input name='joomlauser' type= 'hidden' value='".$joomlauser."'>\n".
"<input name='joomlaid' type= 'hidden' value='".$joomlaid."'>\n".
"<input name='joomlarootdir' type= 'hidden' value='".$joomlarootdir."'>\n".
// Formular Footer
"<input type='submit' name='gesendet'>\n".
"<input type='reset'>\n".
"</form>\n";

// Variablen
$Gewaesser $_POST['Gewaesser'];
$Anzahl $_POST['Anzahl'];
$Fischart $_POST['Fischart'];
?>
DB-Connect Skript:
PHP-Code:
<?php

$mysqlhost
="localhost"// MySQL-Host angeben
$mysqluser="root"// MySQL-User angeben
$mysqlpwd=""// Passwort angeben
$mysqldb="stefan"// Gewuenschte Datenbank angeben

$connection=mysql_connect($mysqlhost$mysqluser$mysqlpwd) or die ("Verbindungsversuch fehlgeschlagen");
mysql_select_db($mysqldb$connection) or die("Konnte die Datenbank nicht waehlen.");

//  Joomla! framework einbinden - NU
// http://www.minitek.gr/tutorials/joomla-16-tutorials/joomla-api-tutorials/item/254-how-to-load-the-joomla-framework-inside-an-external-file.html
// oder http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-content/4470

define'_JEXEC');
define'_VALID_MOS');
define'JPATH_BASE'realpath(dirname(__FILE__)));
define'DS'DIRECTORY_SEPARATOR );
require_once ( 
JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( 
JPATH_BASE .DS.'includes'.DS.'framework.php' );

$mainframe JFactory::getApplication('site');
$mainframe->initialise();

// Joomla User abfragen
$joomladata JFactory::getUser();
$joomlauser $joomladata->name;
$joomlaid $joomladata->id;
?>
Löschskript:
PHP-Code:
<?php

$joomlarootdir 
$_GET['joomlarootdir']; 

include 
'fangblatt_connect_db.php';

mysql_query('DELETE FROM fangblatt WHERE ColumnID = '.(int)$_GET['del']);

header("Location:".$joomlarootdir."/fangblatt.php"); 
exit;
?>
Neuer Datensatz Skript:
PHP-Code:
<?php
// Datenbankverbindung herstellen & Joomla Framework laden
include 'fangblatt_connect_db.php';

$joomlarootdir $_POST['joomlarootdir'];
$joomlauser $_POST['joomlauser'];
$joomlaid $_POST['joomlaid'];

// Werte aus dem Joomlaframework übernehmen
$UserID $joomlaid;
$Name $joomlauser;

// Werte aus dem Formular übernehmen
$timestamp strtotime($_POST['Datum']);
$Datum date ('Y-m-d'$timestamp);
$Gewaesser $_POST['Gewaesser'];
$Anzahl $_POST['Anzahl'];
$Fischart $_POST['Fischart'];
$Bemerkung $_POST['Bemerkung'];
if(
check_date($_POST['Datum'],"dmY","."))
      {
      
$sql 'INSERT INTO fangblatt 
             (UserID, Name, Datum, Gewaesser, Anzahl, Fischart, Bemerkung) 
              VALUES ("'
.$UserID.'", "'.$Name.'", "'.$Datum.'", "'.$Gewaesser.'", "'.$Anzahl.'", "'.$Fischart.'", "'.$Bemerkung.'")';
      
$eintragen mysql_query($sql) or die("Fehler: ".mysql_error());
      echo 
'Der Eintrag war erfolgreich<p>';
      
header("Location:".$joomlarootdir."/fangblatt.php"); 
      exit;
      } 
        else 
        {
        echo 
'Ihre Angaben sind fehlerhaft.';
        exit;
        }

function 
check_date($date,$format,$sep)
{    
    
    
$pos1    strpos($format'd');
    
$pos2    strpos($format'm');
    
$pos3    strpos($format'Y'); 
    
    
$check    explode($sep,$date);
    
    return 
checkdate($check[$pos2],$check[$pos1],$check[$pos3]);

}
 
?>
Mit Zitat antworten
  #8 (permalink)  
Alt 19-03-2013, 16:35
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von pluto007 Beitrag anzeigen
- viele Skripte - wie kann man das DB-Connect Skript und auch das Löschskript in das Hauptskript packen?
Copy and Paste, wenn es denn ganz einfach sein soll. Oder was meinst Du?

Ich würde ein Löschskript aber einzeln lassen und eine nochmalige Bestätigung fürs Löschen voraussetzen.
Mit Zitat antworten
  #9 (permalink)  
Alt 19-03-2013, 21:53
pluto007
 Registrierter Benutzer
Links : Onlinestatus : pluto007 ist offline
Registriert seit: Mar 2013
Beiträge: 5
pluto007 befindet sich auf einem aufstrebenden Ast
Standard

Hi,

mir ist nicht klar wie ich z.B. das Löschskript in das Hauptskript integriere und dann dieses "integrierte Skript" aufrufe.

Zweites Problem das ich habe ist, dass mir die Übergabe von Variablen per URL nicht gerade gefällt, da es sehr unsicher ist, aber meine Versuche mit $_Session nicht geklappt haben.

Danke & Grüße
pluto
Mit Zitat antworten
  #10 (permalink)  
Alt 19-03-2013, 23:19
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Wie andere das machen, weiß ich nicht, doch ob Post oder GET, bei beiden sind die Parameter im Quelltext ersichtlich und ohne Session gibt es keinen Zutritt zum Admin-Bereich. Als das wichtigste sehe ich deshalb eigentlich an, den Admin-Bereich richtig abzusichern. Also, if (Fehler in Session, Passwort oder sonstiges) {Script wird nicht geparst;}.

Dann, bei Post gehst Du doch mit den Parameter-Werte-Paaren nicht anders um, als bei GET, außer dass Du die nicht mit einem Link als QueryString übergeben kannst. Nun habe ich erst einmal ein älteres Script von mir ausgebuddelt, bei dem ich das noch mit GET mache, da öffnet example.net/loeschpage.php?loesche=id erst einmal eine Seite, die nicht viel mehr als ein window.confirm öffnet und bevor das nicht true liefert, geht es nicht zurück zur eigentlichen Löschseite.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Multiple Auswahlbox komikaa PHP Developer Forum 1 07-11-2006 09:42
Auswahlbox funktioniert nicht simauki PHP Developer Forum 7 31-07-2006 10:37
readonly fuer auswahlbox scasburn HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 10 24-09-2005 10:26
Markierung in Auswahlbox mgoertz PHP Developer Forum 4 11-05-2005 20:18
Link mit Parameterübergabe hd-andi PHP Developer Forum 4 06-12-2002 12:21

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:28 Uhr.