Vorgehensweise bei Übergabe von Variablen und mehr :-)
Nadine
- php
0 Dieter Raber0 Dieter Raber0 Nadine0 Dieter Raber0 Nadine
Hallo zusammen und sorry für das wenig sagende topic, aber mir ist nichts passenderes eingefallen :-)
Folgendes Problem:
ich habe mir ein kleines Adressbuch geschrieben. In einer der Ansichten werden alle vorhandenen Einträge angezeigt.
Zusätzlich kann man versch. Optionen wählen, z.B. männlich/weiblich.
Bis jetzt hab ich es mit einer checkbox gelöst, sprich man klickt entweder "männlich" oder "weiblich" oder beides an, klickt auf GO und dementspr. werden die Einträge angezeigt.
Die checkboxen liegen in einem Formular, und übergeben die Parameter an den Browser.
Die URL sieht dann in etwa so aus:
adrbuch.php?show_m=1&show_w=1
Da dies nicht die einzigen Optionen sind, wird die URL dann sehr schnell sehr lang
show_tel=1&show_mail=1&show_icq=1&...
Die Länge an sich ist ja nicht schlimm, nur frag ich mich ob man das Problem nicht eleganter lösen könnte.
Ausserdem hab ich folgendes weiteres Problem:
Ich hätte es aber lieber so, dass anstelle der checkbox ein button ist, und sobald ich auf den klicke erscheint bzw verschwindet die entspr. Kategorie.
Also ichhab z.B. nen button "weiblich". Wenn der button grün ist werden alle weibl. Einträge angezeigt.
Wenn ich drauf klick wir er rot und IM SELBEN Moment verschwinden alle weibl. Einträge.
Bis jetzt muss ich ja immer erst eine Auswahl treffen und dann mit "GO" das ganze "abschicken".
Ich hoffe meine Probleme sind deutlich geworden und freue mich auf eure Antworten :-)
Liebe Grüße,
Nadine
Hallo,
Problem 1 lange URL:
Achim hat einen schoenen Artikel ueber Checkboxen geschrieben unter http://aktuell.de.selfhtml.org/tippstricks/php/checkboxen/index.htm. Benutze Post statt Get in Deiner Form, dann bleibt dei URL kurz.
Problem 2:
setze Deine Kategorien in DIV's mit style="display:block". Dem Button gibst Du ein JavaScript mit, das die Button-Farbe auf rot und den Style der Kategorie auf display:none setzt
Dieter
Hi,
vielen Dank für die mega schnele Antwort :-)
Problem 1 lange URL:
Achim hat einen schoenen Artikel ueber Checkboxen geschrieben unter http://aktuell.de.selfhtml.org/tippstricks/php/checkboxen/index.htm. Benutze Post statt Get in Deiner Form, dann bleibt dei URL kurz.
hmm, in dem Beispiel von ihm schauts bezügl. der URL aber auch nicht anderes aus wie bei mir. Die wird auch umso länger, je mehr Checkboxen ich anklick.
Problem 2:
setze Deine Kategorien in DIV's mit style="display:block". Dem Button gibst Du ein JavaScript mit, das die Button-Farbe auf rot und den Style der Kategorie auf display:none setzt
Das sagt mir gar nix :-)
Aber ich werd mich mal durch SelfHTML bzgl. diesen DIVs wühlen...
1000Dank !!
Nadine
Hallo nochmal
Problem 2:
setze Deine Kategorien in DIV's mit style="display:block". Dem Button gibst Du ein JavaScript mit, das die Button-Farbe auf rot und den Style der Kategorie auf display:none setzt
Also laut SelfHTML benutzt man diese Funktion, um Elemente anzuzeigen bzw zu verstecken.
Ich versteh da den Zusammenhang zu meinem Problem nicht.
Wie muss ich nun den code schreiben, dass per Klick die Seite mit den entspr. Variablen neu geladen wird ?
(Wenn ich auf "weibllich" klicke, weiss ich ja auch nicht, ob männlich angeklicjt ist oder nicht....)
Danke für die Mühe,
Nadine
Hallo Nadine,
nochmal zum besseren Verstaendnis.
Sagen wir, Deine Form hat ein Feld mit dem Namen 'test'
Wenn in deiner Form method='get' steht, werden die Parameter an die URL angehaengt, wenn dort 'post' steht, ist das nicht so. In der aufzurufenden Datei, die in der Form unter 'action' steht, empfaengst du den Parameter anstatt mit $test = $_GET['test']; mit $test = $_POST['test'];. Deine URL bleibt unveraendert.
Was Dein Formular anbetrifft, waere es gut, Du wurdest etwas Code posten, oder die Seite online stellen, offenbar gibt es hier Missverstaendnisse.
Dieter
Hallo Nadine,
nochmal zum besseren Verstaendnis.
Sagen wir, Deine Form hat ein Feld mit dem Namen 'test'
Wenn in deiner Form method='get' steht, werden die Parameter an die URL angehaengt, wenn dort 'post' steht, ist das nicht so. In der aufzurufenden Datei, die in der Form unter 'action' steht, empfaengst du den Parameter anstatt mit $test = $_GET['test']; mit $test = $_POST['test'];. Deine URL bleibt unveraendert.
Irgendwie klappt das bei mir nicht.
Muss ich wirklich nur GET durch POST ersetzen ??
Was Dein Formular anbetrifft, waere es gut, Du wurdest etwas Code posten, oder die Seite online stellen, offenbar gibt es hier Missverstaendnisse.
ok:
Diese Funktion listet mir alle Einträge auf
--------
function all($order,$show_birth,$show_mail,$show_friend,$show_work){
$verbindung=mysql_connect('localhost','root','');
if (!$verbindung)
echo "nix wars";
mysql_select_db("Adressen", $verbindung);
$sql="SELECT * FROM Adressen ORDER BY nachname";
$ergebnis=mysql_query($sql, $verbindung);
echo "Alle Einträge der Datenbank<p>\n";
echo "<p><form Methode='POST' action=''>\n";
echo "<input type='hidden' value='all' name='aktion'>\n";
echo "<input type='checkbox' name='show_birth' value='1'";
if($show_birth==1)
echo "checked";
echo ">Geburtstag\n";
echo "<input type='checkbox' name='show_mail' value='1'";
if($show_mail==1)
echo "checked";
echo ">email<br><br>\n";
echo "<input type='checkbox' name='show_friend' value='1'";
if($show_friend==1)
echo "checked";
echo ">Friend\n";
echo "<input type='checkbox' name='show_work' value='1'";
if($show_work==1)
echo "checked";
echo ">Work\n";
echo "<p><input type='submit' value='Go'></p>";
echo "</form>\n";
--------
Es wird abgefragt ob des entspr. Element angezeigt werden sollte, und die checkbox dementspr. "vorbelegt".
Folgende Änderungen hätte ich gerne:
1.) die Variablen $show_mail,$show_friend, ... sollen NICHT in der Adressleiste zu sehen sein.
2.) Um eine Änderung zu erwirken reicht ein Klick auf ein Button. Man muss NICHT eine checkbox markieren und ZUSÄTZLICH auf nen Button klicken.
Das wär schön :-)
Nochmals vielen Dank !
Nadine
Hallo,
Muss ich wirklich nur GET durch POST ersetzen ??
Im Prinzip ja
echo "<p><form Methode='POST' action=''>\n";
nicht Methode, sondern method, in action muss die Datei stehen, die das Ergebnis verarbeiten soll. Sieh es so, Du schickst was weg, das muss auch irgendwo ankommen, irgendein Script soll was damit machen und Dir das Ergebnis zeigen.
if($show_birth==1)
echo "checked";
sollte in einer Zeile stehen if($show_birth==1) echo "checked";
alternativ: if($show_birth==1){
echo "checked";
}
Wo kommen die Werte fuer $show_xxxx her?
zwei Moeglicheiten
1. aus der Datenbank
dann muss es so heissen:
$sql = 'Select...'; // der Inhalt der Abfrage
$ergebnis = mysql_query($sql..); //die eigentliche Abfrage, Ergebnis ist eine ResourceID, nicht etwa die Daten selbst
$daten = mysql_fetch_assoc($ergebnis); // die erste Zeile des Ergebnisses
Nehmen wir an , es gibt nur eine Zeile, dann kommt jetzt:
$show_birth = $daten['geburtstag']; // oder wie immer Deine Tabellenspalte heisst. Hat als Inhalt zb. 07.0.2003, also was in Deiner Datenbank steht.
.
.
2. aus dem PostArray
dann muss es heissen
$show_birth = $_POST['show_birth'];
.
.
Jetzt stehen Dir die Werte zur Verfuegung:
echo "<input type='checkbox' name='show_mail' value='1'";
if($show_mail)// wenn $show_mail nicht leer ist
echo "checked";
Was das Verstecken bestimmter Teile auf Knopfdruck angeht, dachte ich an JavaScript, nicht an PHP, das waere ohne weiteres moeglich.
Dieter
Hallo,
Muss ich wirklich nur GET durch POST ersetzen ??
Im Prinzip ja
Jetzt hats geklappt :-)
Vielen Dank !!
Was das Verstecken bestimmter Teile auf Knopfdruck angeht, dachte ich an JavaScript, nicht an PHP, das waere ohne weiteres moeglich.
Das hab ich leider immer noch nicjt kapiert.
Könntest Du mir einen Auszug aus dem JavaScript schreiben ?
Es muss ja irgendwie die Seite neu laden (mit entspr. Variablen)
Ich krieg das nicht hin :-/
Danke nochmal und liebe Grüße,
Nadine