php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.11.2005, 15:53  
Gast
 
Beiträge: n/a
Standard Problem mit Formular

Hallo zusammen!

Ich hab da ein Problem und hoffe man kann mir hier helfen.

Ich hab ein Script, in dem man aufgelistet eine Reihe von Projekten sieht.
Man kann via klick an diesen "Projekten" teilnehmen.

Der Hintergrund ist der:
Jedes Projekt hat eine eigene Tabelle und beliebig viele Felder.
Das Programm sucht sich also zuerstmal die Tabellen und filtert dabei alle aus, die keine Projekttabellen sind (Benutzertabellen usw).
Dann sucht das Programm nach den einzelnen Feldern der Tabellen, filtert auch hier wieder was aus (ID und Name - die sollen unveränderbar sein) und gibt das Ergebnis dann aus.

Aber jetzt kommt das Problem:
Bevor alles ausgegeben wird, wird überprüft, ob der User schon Mitglied von einem Projekt ist, wenn ja, dann werden ihm auch die Felder der Projekte angezeigt, an denen er teilnimmt, wenn nein, dann sieht er nur Projektnamen.
Wenn man nun nirgends Mitglied ist, dann ist die Anzeige korrekt.
Sobald man aber irgendwo teinehmen möchte (dazu klickt man auf den Button teilnehmen neben dem Projekt) erscheinen zwar die Felder des Projektes, aber die Buttons der anderen Projekte verschwinden --> man kann also keine anderen mehr anwählen.

Ich weiß aber leider nicht wo der Fehler liegt (sonst würd ich ja wohl kaum hier diesen Post posten :wink: ).

Mein Code ist der:
PHP-Code:
<?
    $mysql 
"SELECT IDENT, NAME2A, ANREDE, EVI_STELLE FROM ".$tb_name_03." WHERE IDENT = ".$id;
    
$result mysql_query($mysql);

/* ### Tabellennamen ermitteln ### */
/* ++ ANFANG ++ */
    
$table_name mysql_list_tables($MYSQL_db);
    
$num_rows mysql_num_rows($table_name);
    for (
$i 0$i $num_rows$i++)
    {
        if (!(
mysql_tablename($table_name$i) == "benutzer") && !(mysql_tablename($table_name$i) == "vkadres") && !(mysql_tablename($table_name$i) == "vkstamm"))
        {
            
$projekt[$i] = mysql_tablename($table_name$i);
        
//    echo "[b]Table: ", $projekt[$i], "[/b]
";
/* ### Feldnamen ermitteln ### */
/* ++ ANFANG ++ */
                $res = mysql_query("
SELECT FROM $projekt[$i]");
                $num_fields = mysql_num_fields($res);
                for ($j = 0; $j < $num_fields; $j++)
                {
                    $projekt_feld[$j] = mysql_field_name($res, $j);
                //    echo $projekt_feld[$j] . "
";
                }
/* ++ ENDE ++ */
        }
    }
    mysql_free_result($table_name);
/* ++ ENDE ++ */
    
    while($row = mysql_fetch_assoc($result))
    {
        $NAME2A = $row['NAME2A'];
        $ANREDE = $row['ANREDE'];

/* +++ Wenn ein Button gedrückt wurde +++ */
        if($update == "
ja")
        {
            //$projekt_id = $_POST["
$projekt_1"];
            print_r($_POST);
            //echo $projekt_id."

";
            neuer_eintrag_01($tb_name_04, $id, $NAME2A, $ANREDE);
        }
        
        $mysql = "
SELECT NAME2ASELECTED FROM ".$tb_name_04." WHERE IDENT ".$id;
        $result = mysql_query($mysql);

?>

    <form name="
projektformular" action="index.php?section=projekt&update=ja&id=<?=$id?>" method="post" target="_self" >
.
.
.
<form>
<table>
.
.
.
                </tr>
                                <?
                                    
/* ### Projektnamen ausgeben ### */
                                    /* ++ ANFANG ++ */
                                        
for($i 0$i $num_rows$i++)
                                        {
                                            if (!empty(
$projekt[$i]))
                                            {
                                                echo 
"<tr>";
                                                echo 
"<td>Verfügbare Projekte:</td>";
                                                echo 
"<td>",$projekt[$i], "</td>";
                                                
                                                
$projekt_id    "projekt_".$i;
                                                
                                                
// wenn man noch nicht Mitglied ist
                                                
if (mysql_num_rows($result) == 0)
                                                {
                                                    
$CHOOSE_BUTTON CHOOSE_BUTTON_1;
                                                    echo 
"<td><input type='checkbox' name='$projekt_id' $selected = 'checked' />";
                                                    echo 
"<input type='button' name='$projekt_id' value=' $CHOOSE_BUTTON ' onclick='anhaken_00(this.name)' /></td>";
                                                    echo 
"<input type='hidden' name='$projekt_id' value='$projekt[$i]' /></td>";
                                                }
                                                
// wenn man schon Mitglied ist
                                                
else
                                                {
                                                    while(
$row mysql_fetch_assoc($result))
                                                    {
                                                        if((
$row['SELECTED']) == "JA")
                                                        {
                                                            
$selected "checked";
                                                            
$CHOOSE_BUTTON CHOOSE_BUTTON_2;
                                                        }
                                                        else
                                                        {
                                                            
$selected "";
                                                            
$CHOOSE_BUTTON CHOOSE_BUTTON_1;
                                                        }
                                                    echo 
"<td><input type='checkbox' name='$projekt_id' $selected = 'checked' />";
                                                    echo 
"<input type='button' name='$projekt_id' value=' $CHOOSE_BUTTON ' onclick='anhaken_00(this.name)' /></td>";
                                                    
                                                    
                                                    
                                                    
                                                        
/* ### Feldnamen ermitteln ### */
                                                        /* ++ ANFANG ++ */
                                                        
$res mysql_query("SELECT * FROM $projekt[$i]");
                                                        
$num_fields mysql_num_fields($res);
                                                        for (
$j 0$j $num_fields$j++)
                                                        {
                                                            
$projekt_feld[$j] = mysql_field_name($res$j);
                                                            if (!(
$projekt_feld[$j] == "IDENT") && !($projekt_feld[$j] == "SELECTED"))
                                                            {
                                                                if(
$projekt_feld[$j] == "NAME2A")
                                                                {
                                                                    echo 
"</tr><tr><td></td><td>Voller Name:</td><td><input type='text' value='$NAME2A' /></td></tr>";
                                                                }
                                                                else
                                                                {
                                                                    echo 
"</tr><tr><td></td><td>$projekt_feld[$j]:</td><td><input type='text' value='' /></td></tr>";
                                                                }
                                                            }
                                                        }
                                                        
/* ++ ENDE ++ */
                                                    
                                                    
                                                    
                                                    
                                                    
}
                                                }
                                            }
                                        }
                                    
/* ++ ENDE ++ */
                                
?>
                        </tbody>
                        </table>
?>
.
.
.
<script type="text/javascript">
// *** Funktion, die die Checkbox anhakt
// +++ benutzt in: projekte.php
        function anhaken_00(x)
        {
    //        document.write(x);
    
            var on = document.getElementsByName(x)[0].checked == true;
            
            if(on)
            { document.getElementsByName(x)[0].checked = false; }
            else
            { document.getElementsByName(x)[0].checked = true; }
            
             document.projektformular.submit();
        }
</script>
Kann mir jemand sagen, wo da der Fehler liegt?

Vielen Dank im Vorraus für jede Antwort!
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 02.11.2005, 16:34  
Gast
 
Beiträge: n/a
Standard

Hat keiner eine Ahnung warum das Script nicht korrekt funktioniert?
 
Alt 02.11.2005, 16:41  
Erfahrener Benutzer
 
Registriert seit: 30.07.2005
Beiträge: 142
jesus666
Standard

Hau mal alles raus ausser den teil wo die Button ausgegeben werden.(werden sollen)
jesus666 ist offline  
Alt 02.11.2005, 16:50  
Gast
 
Beiträge: n/a
Standard

Hm!

Es liegt an der Zeile:
PHP-Code:
<?
if (mysql_num_rows($result) == 0)
?>
--> $result
PHP-Code:
<?
$mysql 
"SELECT NAME2A, SELECTED FROM ".$tb_name_04." WHERE IDENT = ".$id;
$result mysql_query($mysql);
?>
--> $tb_name_04 ist fix definiert

Frage:
Wie kann ich $tb_name_04 den Wert des gerdückten Buttons geben?
 
Alt 02.11.2005, 16:53  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hochriskant sowas, da kann ich ja nen Button erfinden, der den Namen der Tabelle enthält, die die Zugangsdaten des MySQL-Servers enthält (mysql.users oder wie die hieß).
Zergling-new ist offline  
Alt 02.11.2005, 16:54  
Erfahrener Benutzer
 
Registriert seit: 30.07.2005
Beiträge: 142
jesus666
Standard

kannst du mal einen link posten oder pn
wie werden die daten übergeben über link oder button verwendest du ein formular???
jesus666 ist offline  
Alt 02.11.2005, 17:00  
Gast
 
Beiträge: n/a
Standard

@Zergling:
Wie würdest du das sonst machen?

@jesus666:
Ich verwende ein Formular.
Wenn man auf den Button klickt, dann werden/sollen die Änderungen wirksam werden.
Es wird also ein neuer Datensatz mit den entsprechenden Usereingaben erzeugt bzw upgedatet (ID und Name kann der User nicht ändern, damit immer eindeutig ist, zu wen der Datensatz gehört).
 
Alt 02.11.2005, 17:11  
Gast
 
Beiträge: n/a
Standard

Das große Problem ist ja, dass sobald man auf einen Button klickt, IMMER ALLE Buttons Werte haben!
Warum ist das eigentlich so?

--> mit print_r($_POST) sieht man das nämlich...

Wie kann ich das so ändern, dass wenn man auf Button A klickt auch nur Button A als POST-Variable existiert und nicht A, B, C, D, E, ... ?
 
Alt 02.11.2005, 17:29  
Erfahrener Benutzer
 
Registriert seit: 30.07.2005
Beiträge: 142
jesus666
Standard

nun ich hab leider noch keinen link bekommen deswegen kann ich dir jetzt nicht sagen ob das gscheit ist.

aber ich hatte ähnliches prob.

ich machte mir für jedes ein eigenes form so wird beim abschiken des forms nur der eine wert im $_post übergeben inkl unveränderbare werte im hidden.

wenn du jedoch eine mehr fachauswahl zulassen möchtest ist diese methode unbrauchbar.
wie gesagt hab noch nix gesehen.
jesus666 ist offline  
Alt 02.11.2005, 17:34  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Warum das so ist? Na weil sie Teil des Formulars sind und damit mitgesendet werden.
Vielleicht kannst du statt Buttons einfach radio-Buttons verwenden. Dafür sind die schließlich da. Abgesehen davon, solltest du nichts was vom User kommt direkt in die Datenbank stecken, wenn du es nicht gut vorher geprüft hast.

Prüf also was ankommt und erlaube nur gültige Werte:

PHP-Code:
<?php
if (isset($_GET['table'])) {
  switch (
$_GET['table']) {
  case 
'tableX':
  case 
'tableY':
  case 
'tableZ':
    
$useTable $_GET['table'];
    break;
  default:
    
$useTable 'tableX';
  }
} else {
  
$useTable 'tableX';
}
?>
Hier ein paar Infos zu http://de.wikipedia.org/wiki/SQL-Injection
Zergling-new 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
Problem mit IF und Formular Black-Devil PHP Tipps 2008 12 03.03.2008 17:54
Problem mit interaktiven Formular max-dhom HTML, Usability und Barrierefreiheit 0 19.09.2006 10:28
[JS] Problem mit Formular aus anderem Fenster kiffy HTML, Usability und Barrierefreiheit 1 13.04.2006 08:53
Problem mit Formular und Generierung einer Seite PHP Tipps 2006 12 08.02.2006 18:51
Formular Problem PHP Tipps 2007 6 05.12.2005 15:33
Formular Problem mit Übertragung (SunOS) PHP Tipps 2005-2 12 07.09.2005 11:26
Problem mit Formular! PHP Tipps 2005-2 5 12.08.2005 19:20
get problem in einem formular nautiluS PHP Tipps 2005 2 03.03.2005 22:58
Problem bei Script Formular Daten und Baum PHP Tipps 2004 1 27.09.2004 23:19
onClick problem mit Formular Sclot HTML, Usability und Barrierefreiheit 2 21.09.2004 11:38
Problem mit Login Formular PHP Tipps 2004 7 16.09.2004 16:48
Problem mit Formular + Mail To+ PHP-Seiten weiterleitung HTML, Usability und Barrierefreiheit 3 27.08.2004 11:06
Problem mit Formular + Antwortseite PHP Tipps 2004 2 22.07.2004 09:51
[Erledigt] Formular, Submit, PHP - Hab ein kleines Problem PHP Tipps 2004 2 10.07.2004 13:50
Ich hab ein problem mit dem speichern von formular daten PHP Tipps 2004 7 23.06.2004 07:11

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql_tablename() mit ausgeben, unveränderbar formular php

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:10 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.