Moin wie mach ich es das mehrere Sachen aus einen Tabelle feld ausgelesen werden??
Weil hab da nämlich 12 checkboxen in der Suche und da sollte man dann auch mehrere sachen auswählen können
[Editiert am 13/4/2004 von NeMeSiSX2LC]
Hi NeMeSiSX2LC :)
sorry, ich werde alt, nix kapier...
Beschreib mal etwas genauer, was du machen willst ;)
Ich hab ne auswahl von 12 Sachen:
[]text1
[]text2
[]text3
So diese checkboxen haben dann die value von 1 bis 12.
Hm*selberüberlegenmuss*
Wenn jetzt ein User auf die suche geht und kreuzt text1 an (value=1) dann kann ich ja das mit "intressen LIKE '%$variable%' " abfragen. So nun kreuzt der User aber mehre Sachen an. Wie muss das dan mit dem LIKE aussehen?
Hört sich s c h e i s s e an aber vielleicht peilt man es jetzt :wall:
[Editiert am 14/4/2004 von NeMeSiSX2LC]
Ahhh .....
Du machst ein multiselect-feld.
Mach vor der eigentlichen Abfrage eine kleinbe Auswertung die Anhand
der Auswahlen den query-String zusammenbaut.
Du kannst die einzelnen Like-Statements mit AND oder mit OR
(jenachdem ob eine von den Auswahlen oder ob alle zutreffen sollen)
verknüpfen.
MfG
jubilee
Ah :o Kannst mir das mal mit einem code beispiel näher bringen :quest So ganz hab ich das nämlich jetzt nicht gepeilt :redhead:
Also da ich immer noch nicht wirklich weiter gekommen bin und auch irgendwie es nicht richtig erklären kann zeig ich mal en bild vielleicht versteht man es dann.
Das hier bekomme ich noch so einigermassen hin:
(https://forum.pragmamx.org/proxy.php?request=http%3A%2F%2Fvkpmx.no-ip.info%2Fsuche1.png&hash=219a384d3f90dd63cba4fb8f0cc64067c6869b73)
Aber mit dem hier komme ich bei der Abfrage nicht klar:
(https://forum.pragmamx.org/proxy.php?request=http%3A%2F%2Fvkpmx.no-ip.info%2Fsuche2.png&hash=9a04263602ee76f547c007f692dfd7a15e10d167)
Weis denn da wirklich keiner was!?! :o
Hallo !
Du bekommst ja über das Multiselect-Feld ein Packen von
Informationen. Diese wertest Du jetzt in einer Reihe von
Schleifen aus.
Beispiel:
$querystring ="SELECT * FROM TABELLE WHERE DATENBANKFELD LIKE "
$count=0;
while (list ($key, $val) = each ($SELECTNAME));
{
If ($val==1)
{
If count=0
{
$querystring="".$querystring."%".$key."% ";
}
else
{
$querystring="".$querystring."AND LIKE %".$key."% ";
}
$count++;
}
}
Soweit ein kleines beisiel.
Wichtig ist, das das egebnis aus den Form in einem array vorliegt.
in den Querys muss AND on OR eingesetzt werden jenachdem ob eine (OR) oder alle (AND) Bedingungen zutreffen müssen.
MfG
jubilee
und wie müsste dann die namesgebung der checkboxen aussehen?
Also der Array ist da aber irgendwie bekomme ich das trotzdem nicht hin
Irgendwie weis ich nicht was mit dem $key und $val anfangen soll
[Editiert am 18/4/2004 von NeMeSiSX2LC]
$count=0;
$buff ='';
while (list($val) = each ($musik)) {
If ($count==0)
{
$buff .= " user_musik =".$val." ";
}
else
{
$buff .= " OR user_musik =".$val." ";
}
$count++;
}
if ( $count > 0 ) {
$str2= $str2." AND (".$buff .")";
} else {
print "Auswahl treffen!";
}
so sieht es im mom aus hilft mir aber leider immer noch nicht:-(
Hallo !
Ein zweidimensionales Array beherbergt immer einen Schlüssel und einen Wert zu dem Schlüssel.
$test=array('Schlüssel1'=>'Wert1', 'Schlüssel2'=>'Wert2');
ergo :
echo $test1['Schlüssel1'];
ergibt Wert1
somit wäre bei while(list($key,$val) each $test;
$key==Schlüssel1
$val==Wert1
beim nächsten durchlauf
$key==Schlüssel2
$val==Wert2
usw usf.
Der mit ....list($key,$val) war nur zum Verständnis. Die variablen-Namen bei list kannst Du angeben wie Du willst.
List mappt die gefundenen variablen in einem array in die angegebenen
Parameter (Variablen in der Klammer von List) und zwar in der reihenfolge wie sie in dem array stehen.
Sorry ... ich bin nicht allzugut in dem Erklären von Funktionen.
Mfg
jubilee
Ich nochmal !
Auf Dein Beispiel gemünzt.
$count=0;
$buff ='';
while (list($key, $val) = each ($musik)) { //List mappt in der Reihenfolge
//der Variablen im array. Wenn
//$val vorne steht, steht da der
//Key drin !!
if ($val==1){ // Nur wenn ein Wert gesetzt ist
//bei checkbox ist Wert 0 oder 1
If ($count==0)
{
$buff .= " user_musik =%".$key."% ";
}
else
{
$buff .= " OR user_musik =%".$key."% ";
}
$count++;
}
}
if ( $count > 0 ) {
$str2= $str2." AND (".$buff .")";
} else {
print "Auswahl treffen!";
}
Der Schlüssel im array (oder der Index wie auch immer) muss so genannt werden, wie später die Suchbedingungen in der Datenbank sein sollen.
Beispiel Haarfarbe
checkbox name = Haarfarbe['braun']
checkbox name = Haarfarbe['schwarz']
checkbox name = Haarfarbe['rot']
checkbox name = Haarfarbe['blond']
array = haarfarbe
key0 = braun, key1=schwarz, key2=rot, key3=blond
und val ist für alle bis auf die ausgewählte checkbox 0, die ausgewählte checkbox hat den value 1.
Ich hoffe das hilft Dir ein wenig
MfG
jubilee
P.S. Das % dient im SQL als Platzhalter für beliebige Zeichen.
Wenn Du das nicht mit verwendest findest Du den Suchbegriff nur wenn KEIN Text davor steht. MySQL vor Version 4 bietet KEINE Volltextsuche
[Editiert am 19/4/2004 von jubilee]
[Editiert am 19/4/2004 von jubilee]
bei mir geht aber das value von 1 bis 25 bei der musik und beim Name hab ich nur musik[] stehen wie sieht das dann da aus??
Hmmm ....
Wie hast Du denn die checkboxen genannt ?
alle mit Namen musik , richtig ?
[Editiert am 19/4/2004 von jubilee]
Nenn die einzelnen checkboxen bitte folgendermaßen :
musik[Pop], musik[Charts], musik[Hiphop] usw. usf.
Dann bekommst Du ein array
mit Namen $musik und mit den $key (bzw. indexes) Pop, Charts, Hiphop.
Und dort sind die angeklicksten dann mit dem $val (Wert) 1 und die anderen mit dem $val 0.
MfG
jubilee
zb.: <input typ=\"ckeckbox\" name=\"musik[]\" value=\"1\">Pop
Weil ich das auch über einen array in der DB stehen hab. Also da steht nicht in der Tabelle Pop,Rock usw sondern halt 1,2,3,4 usw deshalb muss das doch so bleiben oder nicht??
Hallo !
ZitatWeil ich das auch über einen array in der DB stehen hab. Also da steht nicht in der Tabelle Pop,Rock usw sondern halt 1,2,3,4 usw deshalb muss das doch so bleiben oder nicht??
Richtig, dann kannst Du die normale indizierung beibehalten und brauchst
keinen Index angeben.
Der Rest bleibt allerdings so, weil ja 1 ....25 die Key's (indexe) sind.
MfG
jubilee
wuaha mir qualmt die birne :(
So ok soweit so gut das läuft ja nun mittlerweile.
Jetzt Hab ich aber ein anderes prob.(ja hab erst jetzt wieder dran weiter gemacht ;D)
Also Die ergebniss werden mir gelistet auf Seite eins so nun wird aber bei mehr wie XX treffer ein vor bzw zurück button angezeigt.
Nun ist die frage wie übergeb ich denn array un in den link?? so das er auf Seite 2 auch noch da ist?
Hab ich mich schon wieder so blöde ausgedrückt? :'(
Hallo !
Das array muss serialisiert werden, damit es über einen normalen link (get) übertragen werden kann.
Ich würde an den Link für die nächste Seite einmal das array anhängen und einmal eine Variable für den Link
Vorher das array mit serialize und urldecode bearbeiten = urlencode(serialize($array))
(Umkehrfunktion unserialize(urldecode($array)) ). Den link brauchst Du nur urlen/decodieren.
Wenn es nicht gehen (etwas fehlen) sollte, ist zuviel drinne im Array. Es kann nicht unbegrenzt via link übertragen werden. Dann muss man sich noch etwas anderes überlegen.
MfG
jubilee
Jubi das hört sich immer sogut an bei dir :D
Kannste das mal auf das hier beziehen?
$count=0;
$buff ='';
while (list($key, $val) = each ($musik)) { //List mappt in der Reihenfolge
//der Variablen im array. Wenn
//$val vorne steht, steht da der
//Key drin !!
if ($val==1){ // Nur wenn ein Wert gesetzt ist
//bei checkbox ist Wert 0 oder 1
If ($count==0)
{
$buff .= " user_musik =%".$key."% ";
}
else
{
$buff .= " OR user_musik =%".$key."% ";
}
$count++;
}
}
if ( $count > 0 ) {
$str2= $str2." AND (".$buff .")";
} else {
print "Auswahl treffen!";
}
Mal höfflich anfrag ;)
*schieb*
Warum machst du das nicht über ein LIMIT in deiner SQL Abfrage? Oder hab ich dich jetzt falsch verstanden?
Nene würde nur gerne mal ein kleines beispiel zu Jubi´s Text hier sehen:
Vorher das array mit serialize und urldecode bearbeiten = urlencode(serialize($array))
(Umkehrfunktion unserialize(urldecode($array)) ). Den link brauchst Du nur urlen/decodieren.
Wenn es nicht gehen (etwas fehlen) sollte, ist zuviel drinne im Array. Es kann nicht unbegrenzt via link übertragen werden. Dann muss man sich noch etwas anderes überlegen
Ich verstehs doch nicht immer wenn er so schön schreibt ;)
Moin,
Auf den Beitrag hier bezogen:
http://www.pragmamx.org/modules.php?name=Forum&topic=9440.0
Könnte mir da jemand einen tip geben. Mit einem kleinen Beispiel wie ich einen Array per Url an eine Seite weitergeben kann.
Versuche es jetzt schon ewig bekomme es aber einfach nicht hin. Mir wird nur auf der Ersten Treffer seite alles angezeigt. Sonst nirgends :(
Moin.
habe den alten Thread wieder geöffnet und zusammengeführt...
Schau mal da, denke das ist es was du suchst:
http://www.devmag.net/webprog/php_formulare_auswerten.htm
http://tut.php-q.net/formulare.html
http://www.php-faq.de/q/q-formular-checkbox.html
http://www.akademie.de/programmierung-administration/php/kurse/php-einfuehrung/formulare/auswerten.html
Supi Thx das liest sich doch schon sehr interessant :D Vielleicht klappt es jetzt endlich mal das teil zum funzen zu bewegen.
Hm das sit es nicht ganz da ist nur zulesen wie ich den Array aufbau über das Formular. Aber leider nicht wie ich ihn dann weiter übergeben kann :(
ZitatAber leider nicht wie ich ihn dann weiter übergeben kann
Beim googeln gefunden: http://www.wer-weiss-was.de/theme163/article550233.html (http://www.wer-weiss-was.de/theme163/article550233.html) ;)
THX!! Mensch kann man irgendwo einen "googeln" Kurs belegt.... Find sowas nie...
Schande auf mein haupt... Ich blick das irgendwie mit den Array nicht *heul*
Hi,
er hat doch schon alles gesagt!
Wenn du ein Array per Link (GET?) übergeben willst, könnte der Link z.B so aussehen:
<?php
$link = 'modules.php?name=DeinModul&file=DeineDatei&limit=$limit&wat='.urlencode(serialize($musik)).'';
echo '<a href="$link" target=""...>';
?>
David
Jupps soweit hab ich es ja verstanden. Aber wenn die Daten jetzt vom Formular jetzt als POST daten kommen und dann per GET an die 2te Ergebniss seite weitergeben werden. wo wandel ich das dann wieder um sodas es das es auf der ersten Seite auch noch geht, wegen dem Post.
Hab da auch was von Session gelesen. Aber erstmal schauen ob die link länge reicht.
Ok ich häng die index.php mal an.. Vielleicht sieht jemand den Fehler.
ACHTUNG @all: Wie hier zulesen ist läuft das teil noch nicht Rund. Also bitte nur einsetzen wenn ihr auch die Lösung wisst.
Sollte es irgend jemand hinbekommewäre ich an einer Funktionierend File natürlich auch interessiert
Ach und so ganz nebenbei... In der File sieht es aus als ob eine Bombe eingeschlagen hätte.
Aber es geht um die Funktion "Multi" die Streigt.
[gelöscht durch Administrator]
Gibts nicht im MX irgendwo ein ähnliches Vorgehen, das ich mir das da mal verdeutlichen kann?
P.S.: Warum kann ich hier eigentlich meine Beiträge nur kurz editieren?
Zitat von: NeMeSiSX2LC am 24 März 2006, 23:30:02
P.S.: Warum kann ich hier eigentlich meine Beiträge nur kurz editieren?
Ist meiner Meinung nach erst seit kurzem das man seine Beiträge nur eine bestimmte Zeit editieren kann
Ist aber nicht in jedem Forum hier.....
das weiß ich jetzt garnicht.... weiß aber jetzt auch garnicht ob man das auf Foren einstellen kann.. ich denke das man das nur für das komplette SMF einstellen kann wie lange man das editieren kann.
Hm egal back to Topic ;)
Hm hab ich echt einen ganz schön bock mist gemacht was?
ZitatGibts nicht im MX irgendwo ein ähnliches Vorgehen, das ich mir das da mal verdeutlichen kann?
- in den PM's, die Löschfunktion in der Liste.
- im Umfragenmodul, die Auswertung der Stimme
- im SMF, etliche Adminfunktionen, wo Kontrollkästchen in einer Liste erscheinen
- usw...
Aber ich denke dir fehlt Grundwissen über Arrays
http://www.php.net/manual/de/language.types.array.php
http://www.php.net/manual/de/ref.array.php
Was da über $_POST, $_GET oder $_REQUEST vom Formular oder über den URL kommt ist ein ganz normales Array, wie jedes andere auch. Die Struktur des Arrays mit den Werten siehst du, wenn der Debugmodus an ist.
Ruf Deine Seite einfach mal auf, mit folgender url:
/index.php?tut=hup&check[1]=1&check[2]=pl%F6p&check[3]=blabla&check[3]=55
Hm das mit dem übergeben vom Formular zur ersten Treffer Seite ($_POST) klappt ja auch. Aber dann muss ich ja per GET weiter und da hackt es irgendwie. Hab auch gestern gelesen das es "unschön" ist die Sache per URL weiter zugeben. Die Reden da alle von SESSIONS. Was meinste geht das mit der mxSessionSetVar() und mxSessionGetVar()?
ZitatWas meinste geht das mit der mxSessionSetVar() und mxSessionGetVar()?
Auch das geht.
Wenn die Daten aus dem Post schon in einem Array stehen (was sie bei korekter kontruktion des Formulares ja sein sollte), kannst du das dann auch mit dem angegebenen serialize urlencode bearbeiten und an den Link hängen, wie bereits weiter oben beschrieben.
Was Du jetzt genau verwendest, musst Du dir selber überlegen.
MfG
jubilee
Ja in dem einen Forum meinten die das es ja eine URL max länge gibt. Deshalb seien die SESSIONS die Bessere lösung.
Nur das jetzt das richtig verstehe. Kann den Array ohne vorverarbeitung in die Session schreiben?
Man Man glaub das eben total an meine PHP grenze komme... Und das wegen einer suche!
ZitatJa in dem einen Forum meinten die das es ja eine URL max länge gibt. Deshalb seien die SESSIONS die Bessere lösung.
Ja, hatte ich ganz am Anfang mal geschrieben, das nacher etwas fehlt, wenn zuviel drinnesteht.
Du kannsrt das alles aber nach serialize und urlencode auch noch zippen, dann passt ziemlich viel hinein.
urlencode(gzcompress(serialize($array))) = einpacken
unserialize(gzuncompress(urldecode($array))) = auspacken
Ansonsten kannst du auch ein komplettes Array an die Session geben.
MfG
jubilee
Hm mit
urlencode(serialize($array))
unserialize(urldecode($array))
Hatte ich es nicht wirklich hinbekommen. Also mal sehen obs mit der Session hin haut. Werd doch diese blöde suche weiter wie auf Seite 1 bewegen können....
Warum machst nicht einfach mit einem Formular weiter und schreibst die Daten in hidden-Felder rein?
Öhm ja keine Ahnung weils zu einfach wäre *kopfgreif* Auf alles gekommen aber auf das nicht. Sowie ich mich kenne bekomme ich das auch nicht hin....na mal sehen
Fang jetzt erstmal mit den Session an wenn das nicht hinhaut die hidden Fields...
Denk dran, die Sessions im pragmaMx funzen nur, wenn Cookies aktiviert sind.
if (!mxSessionGetVar("musik")) {
mxSessionSetVar("musik", $musik);
}else{
$musik = (is_array(mxSessionGetVar("musik"))) ? mxSessionGetVar("musik") : array();
}
So hab das jetzt rein geschrieben. Sprich wenn wenn Session da verarbeite weiter so auf der ersten Seite funzt das auch aber sowie ich auf "vor" klicke bleibt $musik wieder leer
Ok ich gebs auf bin. Nicht mal in der lage das per Formular weiter zugeben...
So also ich übergeb das jetzt so per Link:
musik[]=".implode(",",$musik)."
Debug sagt mir dann das:
[musik] => Array
(
- => Trance,Techno
)
was muss jetzt tun um das wieder so aussehen zulassen:
[musik] => Array
(
- => Trance
[1] => Techno
)
Hab es mal so probiert:
if (isset($argv[0])) {
$musik = explode(",",$argv[0]);
}
funzt aber nicht
Habs hinbekommen mit einem Formular.... hat bloss bissel gedauert bis der Geistesblitz kam.
-CLOSED-