php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.05.2008, 00:47  
Neuer Benutzer
 
Registriert seit: 14.05.2008
Beiträge: 2
VodKen befindet sich auf einem aufstrebenden Ast
Standard Auswahlfeld in MYSQL abspeichern ( Array Problem )

Hallo zusammen,
ich bin gerade dabei ein Formular zu basteln, in dem auch ein Auswahlfeld vorhanden ist. Dieses Auswahlfeld soll in einer mysql Datenbank abgespeichert werden.
Alle Felder funktionieren auch ohne Problem, nur eben dieses Auswahlfenster nicht. Er speichert in der DB immer nur " Array " ab.
Würde mich freuen, wenn einer eine Idee hat.
Hier mein Quellcode:
index.php:
PHP-Code:
<form action="speichern.php" method="post"
<
TABLE WIDTH="800" BORDER="1" CELLPADDING="4" CELLSPACING="4">
<
TR>
<
TD COLSPAN ="5">zertifiziert nach<br> (Mehrfachnennung mit strg-Taste möglich)</TD>
<
TD COLSPAN ="5" 
<select name="zertifiziert_nach[]" size="5" multiple
<
option selected>ISO 9001</option>
<
option>ISO 14001</option>
</
select
</
TD>
</
TABLE
Und hier meine speichern.php:
PHP-Code:
<?php 
dyn_form
(); 
$server"test"
$datenbank"test"
$user"test"
$passwort"test"
 
// Zugriff auf SQL-Server  
MYSQL_CONNECT($server$user$passwort) or die ("Datenbankserver nicht erreichbar"); 
MYSQL_SELECT_DB($datenbank) or die ( "Datenbank nicht vorhanden"); 
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // 
// Aktionen  fuer diese Datei 
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // 
if (isset($_GET['action']) && $_GET['action'] != "") {  
$action $_GET['action'];  
}  
elseif (isset(
$_POST['action']) && $_POST['action'] != "") {  
$action $_POST['action'];  
}  
 
switch (
$action) { 
case 
"savedaten"
    
savedaten(); 
    break; 
default: 
    
savedaten(); 
    break; 

function 
savedaten () { 
 
$zertifiziert_nach datensaver($_POST['zertifiziert_nach']);
$zertifiziert_nach mysql_real_escape_string($zertifiziert_nach);
 
 
MYSQL_QUERY("INSERT INTO formular (zertifiziert_nach) 
VALUES('$zertifiziert_nach')"
); 
MYSQL_CLOSE(); 
echo 
"Ihre Daten wurden erfolgreich gespeichert"
 

 
//-----------------------------------------------------------------// 
// Datensaver Regexe 
//-----------------------------------------------------------------// 
function datensaver($formdaten) { 
$formdaten stripslashes($formdaten); 
$suchmuster = array( 
'#^\s+#'
'#\s+$#'
'#<#'
'#>#'
'#\|#'
'#\'#'
'#\"#'
'#\r#'
'#\n#' 
); 
$ersatz = array("","","","","","","","",""); 
$formdaten preg_replace($suchmuster$ersatz$formdaten); 
return 
$formdaten

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // 
?> 
 
 
<?php
function dyn_form()
{
  global 
$HTTP_POST_VARS$HTTP_GET_VARS;
  if (isset(
$HTTP_POST_VARS)) {
//bei POST
    
foreach ($HTTP_POST_VARS as $key => $elem) {
    echo 
"<input type=\"hidden\" name=\"$key\" value=\"$elem\">";
    }
  }
//end function
 
?>
Ich habe bereits den ganzen Tag gegoogelt und mich mit der Funktion implode rum geschlagen, was meines erachtens evtl. eine Lösung sein könnte ?!?!
Bin dankbar für jede Hilfe
VodKen ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.05.2008, 06:53  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

ist ja auch logisch, ein array wandelt sich nicht von selbst in einen String um. da du eine Mehrfachauswahl hast, solltest du auch nicht beide Werte in ein Feld der Datenbank schreiben. Du solltest dir mal print_r angucken, das hilft oft weiter und foreach wird dein array durchlaufen und du kannst die werte dann einzeln speichern
cycap ist offline  
Alt 14.05.2008, 06:57  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.846
HPR1974 wird schon bald berühmt werden
Standard

serialize() unserialize() können dir helfen oder eben implode()
HPR1974 ist offline  
Alt 14.05.2008, 07:03  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
Zitat von HPR1974 Beitrag anzeigen
serialize() unserialize() können dir helfen oder eben implode()
das halte ich für eine ganz schlechte idee, das führt zu falschem db-design
cycap ist offline  
Alt 14.05.2008, 07:11  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.846
HPR1974 wird schon bald berühmt werden
Standard

@cycap warum?
HPR1974 ist offline  
Alt 14.05.2008, 07:12  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

weil in einer normalisierten Datenbank genau 1 Wert in einem Feld steht und z.b. mit implode machst du genau das gegenteilige
cycap ist offline  
Alt 14.05.2008, 07:16  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.846
HPR1974 wird schon bald berühmt werden
Standard

mit implode mache ich erstmal garnichts was mit einer Datenbank zu tun hat, ich verbinde lediglich Array-Elemente zu einem String.
HPR1974 ist offline  
Alt 14.05.2008, 07:17  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Ja klar, aber ich hab mich auch auf die Überschrift bezogen

Zitat:
Auswahlfeld in MYSQL abspeichern ( Array Problem )
cycap ist offline  
Alt 14.05.2008, 07:21  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.846
HPR1974 wird schon bald berühmt werden
Standard

ja und?
wer sagt, dass es falsch ist eine kleine Anzahl von Werten in ein Feld zu schreiben, zB mit serialize()? oder implode() und es später wieder auszulesen?
HPR1974 ist offline  
Alt 14.05.2008, 07:24  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Weil genau das zu einer nicht normalisierten Datenbank führt und eine normalisierte Datenbank ist keine fortschrittliche Sache, sondern eine Grundlage! Deine methode funktioniert zwar, ist aber mit Sicherheit nicht der richtige Weg.
cycap ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
[Erledigt] MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
[Erledigt] MYSQL Problem Datenbanken 4 09.02.2006 15:14
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
MySql Fels Ã* la "2,43,43,43" zu Array PHP Tipps 2007 2 27.12.2005 15:00
[Erledigt] Problem mit Sonderzeichen PHP -&gt; MySQL -&gt; HTML PHP Tipps 2007 18 07.12.2005 15:23
[Erledigt] Problem beim verbindungsaufbau zum Mysql Server Datenbanken 9 27.10.2005 11:27
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
MySQL &amp;amp; PHP: Problem mit Password() Datenbanken 10 19.09.2005 11:00
MySQL, PHP und ein großes Problem! Datenbanken 2 27.08.2005 10:51
Problem mir einem Array PHP Tipps 2005-2 5 11.08.2005 11:33
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
mysql installations problem Datenbanken 4 16.02.2005 18:46
[Erledigt] Problem mit PHP und MYSQL Datenbanken 6 01.08.2004 05:59

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql auswahlfeld, auswahlfeld mysql, auswahlfeld in mysql, mysql auswahlfelder, mysql auswahl feld, php mysql auswahlfeld, arrays normalisierung datenbank, http://www.php.de/php-tipps-2008/1204-auswahlfeld-mysql-abspeichern-array-problem.html, auswahlfeld aus mysql generieren, php mysql auswahlfelder, auswahlfeld aus mysql, mysql auswahlfeld erstellen, php array mysql serialize, mysql auswahlfeld speichern, mysql feld auswählen, mysql datenbank auswahlfelder, auswahlfelder in mysql speichern, my sql auswahl wert, php case savedaten, php mysql auswahlfeld jahr

Alle Zeitangaben in WEZ +1. Es ist jetzt 20:37 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum