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 Thema bewerten
  #1 (permalink)  
Alt 08-12-2005, 20:28
NameZero912
 Newbie
Links : Onlinestatus : NameZero912 ist offline
Registriert seit: Dec 2005
Beiträge: 36
NameZero912 ist zur Zeit noch ein unbeschriebenes Blatt
Standard vorherigen checkbox-wert ermitteln

hallo an alle

ich baue ein php-script, bei dem es darum geht, dass dem user nur die datensätze angezeigt werden, die der kategorie entsprechen die er angeklickt hat. ich habe das (teils mittels hilfe aus einem anderem forum) sogar selbst hinbekommen.

es existieren in der datenbank 2 tabellen. eine tabelle beinhaltet alle datensätze (an die 50 stück), und jeder datensatz wird nur einer kategorie zugeordnet, es existiert dafür hal eine palte "catid" in der tabelle. in der anderen tabelle stehen die kategorien selbst.

am anfang der seite werden alle kategorien (also nur der Name der Kategorie) angezeigt, jede erhält eine checkbox die standardgemäß aktiviert ist.

Der user wird die datensätze in jedem fall erst dann angezeigt bekommen, wenn er auf den submitbutton (name="showcats", value="Anzeigen") drückt. deswegen sollten standardgemäß alle checkboxen aktiviert sein (damit er nicht erst alle von hand angklicken muss falls er alle kategorien angezeigt haben möchte). aber es könnte ja auch der andere fall eintreten: dass der user bereits ein paar boxen deselektiert hat und auf Anzeigen gedrückt hat.

es entstehen also 2 fälle:
Fall 1: der User hat die seite zum ersten mal aufgerufen: es werden also die bestehenden Kategorien samt checkbox angezeigt, alle haben die "checked" markierung, und der user kann auf anzeigen drücken
Fall 2: falls der submitbutton aber aktiviert wurde, sollen natürlich nur noch die checkboxen angeklickt sein die der user vorher auch angewählt hat. das problem das ich nun habe, ist, dass das array das die checkboxen erzeugt haben nur die werte anzeigen wird, die auch angeklickt wurden, nicht aber die, die nicht angeklickt wurden.

/*durch suchfunktion-nutzung kam dann etwas auf von wegen "isset" geschichte, dass man prüfen soll ob die variable gesetzt ist, und wenn nicht, dass die variable dann auf null gesetzt werden soll. aber das kann nicht wirklich funktionieren, und es hat auch nicht funktioniert*/


folgendermaßen sieht mein code bis jetzt aus:
PHP-Code:
echo '<form action="';
echo 
$_SERVER['PHP_SELF'];
echo 
'" method="post">';
$cats=mysql_query("SELECT id, catname FROM `tuning-cats`");
echo 
'<p align="center">';
while ( 
$boxen mysql_fetch_array($cats) )
{
    
$catid $boxen["id"];
    
$catname $boxen["catname"];
    echo 
'<input type="checkbox" name="selected[]" value="'.$catname.'" checked> '.$catname.'  ';
}
echo 
'<input type="submit" name="showcats" Value="Anzeigen"></p>';
if (isset(
$_REQUEST['selected'])) {
  
//reset($_REQUEST['selected']);
  
foreach ($_REQUEST['selected'] as $k => $v)
  {
    
$getcatidforcatname=mysql_query("SELECT id, catname FROM `tuning-cats` WHERE catname='$v'");
    
$catids mysql_fetch_array($getcatidforcatname);
    
$matchid $catids["id"];
/*im array kann ich jeder checkbox leider nur einen wert zuweisen, . ich habe als wert den "catname" gewählt, da
der user auf jeden fall nochmal die Kategorie als überschrift sehen soll. wenn später die datensätze gewählt
werden, muss ich natürlich für die catname die entsprechende catid herausbekommen*/
    
echo '<br><div id="kattitel"><b>'.$v.'</b></div>'//Ausgabe der Kategorie
    
echo '<br><br>';
    
$ergebnis=mysql_query("SELECT id, name, sdwert, beschr, empf, catid
    FROM tunings WHERE catid='$matchid' ORDER BY name ASC"
);
    while (
$row mysql_fetch_array($ergebnis) )
    {
    
//Es folgt die Darstellung der Datensätze in speziell formatierten Tabellen
    


mein problem ist: ich habe, wenn ich auf Anzeigen geklickt habe, ein Array, das besteht aus
0 wert1
1 wert2
2 wert3
usw...
die erste zahl ist der key des arrays, der zweite wert ist der wert den ich halt der jeweiligen checkbox zugewiesen habe. aufgeführt werden aber nur die werte die auch wirklich angeklickt wurden

nun habe ich ja die whileschleife die erstmal alle kategorien auflistet. nehmen wir mal an es ist der erste durchgang der while-schleife und es wird die erste checkbox mit dem ersten value erstellt. wie soll ich dann eine funktionierende kontrolle einbauen, wenn ich als vergleichsreferenz ein array habe ? da wäre die einzige möglichkeit eine art zähler ($i).

wenn ich das array der checkboxen so hinbekommen/rausbekommen würde, dass es z.B: so aussieht:
0 on
1 on
2 off
3 off
4 on
....

dann wäre es einfacher. ich könnte in meine erste whileschleife einfach den $i zähler einbauen und dann wäre der vergleich möglich...
das könnte dann z.B. so aussehen:
PHP-Code:
while $boxen mysql_fetch_array($cats) )
{
....
$i=0;
if (
$_POST['selected[$i]'] == "on")
{echo 
" checked";}
$i++;
....

aber das array gibt mir ja nur aus was angeklickt wurde, und ich wenn da drei werte im array sind weiss ich nicht ob es die ersten drei checkboxen, oder die letzten drei oder was auch immer waren

Habt ihr ne Idee wie man es trotzdem hinbekommt ?
Mit Zitat antworten
  #2 (permalink)  
Alt 08-12-2005, 20:59
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard Re: vorherigen checkbox-wert ermitteln

sorry. habe aber nur bis hierher gelesen ...

Zitat:
Original geschrieben von NameZero912
/*durch suchfunktion-nutzung kam dann etwas auf von wegen "isset" geschichte, dass man prüfen soll ob die variable gesetzt ist, und wenn nicht, dass die variable dann auf null gesetzt werden soll. aber das kann nicht wirklich funktionieren, und es hat auch nicht funktioniert*/
und das isset() ist genau deine gesuchte lösung, tippe ich mal. vorausgesetzt natürlich, dass du bei der ausgabe der CBs auch die id entsprechend mitgibst.

PHP-Code:
while ( $boxen mysql_fetch_array($cats) )
{
    
$catid $boxen["id"];
    
$catname $boxen["catname"];
    echo 
'<input type="checkbox" name="selected['.$catid.']" value="1" checked> '.$catname.'  ';

schaue es dir mal an und teste ein wenig mit isset() rum.

wenn $_POST['selected'] nicht vorhanden ist, schalte alle an. ansonsten nur die, welche auch aktviert wurden ....

PHP-Code:
$_POST['selected'][$catid] == 
und das isset() bei den ganzen abfragen natürlich nicht vergessen.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #3 (permalink)  
Alt 08-12-2005, 21:02
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

da will ich mal nicht so sein ...
PHP-Code:
while ( $boxen mysql_fetch_array($cats) )
{
    
$catid $boxen["id"];
    
$catname $boxen["catname"];
    
$sel '';
    if ( !isset(
$_POST['selected']) ||
         isset(
$_POST['selected'][$catid]) && $_POST['selected'][$catid] == )
        
$sel 'checked="cecked"';
    echo 
'<input type="checkbox" name="selected['.$catid.']" value="1" '.$sel.'> '.$catname.'  ';

__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #4 (permalink)  
Alt 08-12-2005, 21:21
NameZero912
 Newbie
Links : Onlinestatus : NameZero912 ist offline
Registriert seit: Dec 2005
Beiträge: 36
NameZero912 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ah, vielen dank, ich hab den code glaube ich sogar soweit verstanden!

die checkboxen werden alle selektiert wenn die variable selected noch garnicht existiert (also der user noch garnicht auf den submit button geklickt hat), oder wenn sie zwar existiert, aber dabei gleichzeitig 1 sein muss

Allerdings hatte dann plötzlich meine Abfrage der Datensätze nicht mehr funktioniert, da die variable $catname plötzlich nicht mehr im Spiel war. aber ich habe einfach an den stellen an denen du "1" geschrieben hattest die "1" durch $catname ersetzt, seitdem funktioniert alles so wie es soll

vielen dank nochmals für die hilfe!

ich habe in meinem ersten beitrag ja geschrieben:
/*durch suchfunktion-nutzung kam dann etwas auf von wegen "isset" geschichte, dass man prüfen soll ob die variable gesetzt ist, und wenn nicht, dass die variable dann auf null gesetzt werden soll. aber das kann nicht wirklich funktionieren, und es hat auch nicht funktioniert*/

ich hatte etwas ähnliches wie du es nun geschrieben hast bereits selbst probiert, aber ich wusste nicht wie man einen bestimmten wert im selected-array ansprechen kann und hatte es falsch geschrieben, nämlich so:
$_POST['selected[$catid]']
anstatt
$_POST['selected'][$catid]

MfG
Mit Zitat antworten
  #5 (permalink)  
Alt 08-12-2005, 23:01
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
[...] durch $catname ersetzt [...]
und wenn ein toller user die namen ändert, funktioniert auch nichts mehr. ich würde dir empfehlen aussschliesslich über die id's zu arbeiten.

diese kannst du leichter, schneller und effektiver prüfen und hast damit auch den vorteil, dass ein böser user nicht einfach so dein script unterwandern kann.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
Antwort

Lesezeichen


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

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

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

jqPlot jQuery Plotting Plugin ansehen jqPlot jQuery Plotting Plugin

jqPlot ist ein plotting und charting plugin für das jQuery Javascript framework

06.11.2019 Berni | Kategorie: AJAX/ Framework
WYSIWYG Editor

WYSIWYG Editor zum Einbinden in PHP Scripte.

21.10.2019 Stephan_1972 | Kategorie: PHP/ WYSIWYG
Modelmanager

Der Modelmanager ist ein Webtool für Fotografen, kann als komplette Homepage oder als Webtool installiert werden.

10.10.2019 Stephan_1972 | Kategorie: PHP/ Bilder
 Alle PHP Scripte anzeigen

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