Problemfall Suche

Begonnen von NeMeSiSX2LC, 13 April 2004, 13:45:44

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

NeMeSiSX2LC

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]
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

Andi

Hi NeMeSiSX2LC :)

sorry, ich werde alt, nix kapier...

Beschreib mal etwas genauer, was du machen willst  ;)
schön´s Grüssle, Andi

NeMeSiSX2LC

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]
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

jubilee

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

NeMeSiSX2LC

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:
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

NeMeSiSX2LC

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:

 

Aber mit dem hier komme ich bei der Abfrage nicht klar:

 
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

NeMeSiSX2LC

Weis denn da wirklich keiner was!?! :o
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

jubilee

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



NeMeSiSX2LC

und wie müsste dann die namesgebung der checkboxen aussehen?
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

NeMeSiSX2LC

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]
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

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:-(
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

jubilee

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

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]

NeMeSiSX2LC

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??
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

jubilee

Hmmm ....
Wie hast Du denn die checkboxen genannt ?
alle mit Namen musik , richtig ?

[Editiert am 19/4/2004 von jubilee]

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

NeMeSiSX2LC

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??
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

jubilee

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

NeMeSiSX2LC

wuaha mir qualmt die birne :(
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

NeMeSiSX2LC

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?
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1