Verbesserungsvorschläge...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Verbesserungsvorschläge...

    Hallo ,
    erst einmal dieses Forum ist klasse ! Bis dato habe ich mit eurer Hilfe immer eine Lösung
    für meine Probleme gefunden.
    Bin noch absoluter PHP-Neuling und habe jetzt mal eine Frage. I
    ch habe mir eine Suchmaske + Auswertung (für eine Suche nach Downloads) zusammengebastelt,
    es klappt auch alles wie ich es mir vorgestellt habe, aber vielleicht habt ihr ja noch
    Verbesserungsvorschläge.... also meine Suchmaske ist wie folgt aufgebaut :
    1. User wählt eine Kategorie (Formular mit 4 Radiobuttons)
    2.Wählt er Spezifikationen bzw. Typen nach denen gesucht wird ( ca.30 Checkboxen )

    Hier der Code meiner auswertung.php:

    PHP-Code:
    <?php 
    ob_start
    ();
        
    $sname=" - ".$lang_main['TITELSUCHE'];
        
    /* Überprüfen der Kategorie-Auswahl und setzen der 
    $kat1 und $kat2 für die Weiterverarbeitung in der Abfragequery*/

    print_r($_POST);

    if (
    $_POST['kategorie']=="instrumente") {
       
    $kat1=90;
       
    $kat2=91;
      echo 
    "instrumente ausgewählt $kat1 und $kat2";
    } elseif (
    $_POST['kategorie']=="effekte") {
        
    $kat1=30;
        
    $kat2=36;
       echo 
    "effekte ausgwählt $kat1 und $kat2";
    } elseif (
    $_POST['kategorie']=="drum") {
        
    $kat1=93;
        
    $kat2=94;
       echo 
    "drum ausgewählt $kat1 und $kat2 ";

       elseif (
    $_POST['kategorie']=="hosts"){
           
    $kat1=98;
        
    $kat2=99;
       echo 
    "host ausgewählt $kat1 und $kat2 ";
    }
    else { echo 
    "Keine Kategorie ausgewählt!";}


    /* die Spezifikationen baue ich direkt in die Abfragequery ein */

        
    $query="select * from " $sql_prefix "_downloads WHERE (kat=$kat1 
    or kat=
    $kat2) AND (spezifikation='$spezi[0]
    or spezifikation= '
    $spezi[1]' or spezifikation= '$spezi[2]
    or spezifikation= '
    $spezi[3]' or spezifikation= '$spezi[4]') 
    order by name"
    ;
    echo 
    $query ;
    $result=mysql_query($query);
    $number=mysql_numrows($result);
        
        
    if(
    $number!="0"){
    for(
    $r=0$r<$number$r++){
    $row=mysql_fetch_array($result);

    $ntest.='<a class="small" href="index.php?templateid=download&file='.$row[id].'">
    '
    .$row[name].'</a><br>';
                }
    Hier wird das Template zur Ausgabe erstellt
                        
        
    }

    ?>
    So das klappt auch alles . Per PHP-Admin habe ich geprüft was passiert, wenn ich nur 3 Spezifikationen
    wähle und somit 2 Arrays leer bleiben, es erfolgt die Abfrage ohne Fehlerrmeldung oder ähnliches .
    Jetzt frage ich mich ob , die Zeit der Abfrage der Datenbank durch die leeren Arrays beeiträchtigt werden kann.
    Oder ob es eine andere Möglichkeit gibt....die Abfrage-query aufzubauen...was fürn Kauderwelsch,
    hoffe ihr versteht was ich meine.

  • #2
    Re: Verbesserungsvorschläge...

    Dein Umweg bei der Kategorie erscheint mir etwas unnötig.

    weiterhin:
    Original geschrieben von jessplug

    PHP-Code:
    /* die Spezifikationen baue ich direkt in die Abfragequery ein */

        
    $query="select * from " $sql_prefix "_downloads WHERE (kat=$kat1 
    or kat=
    $kat2) AND (spezifikation='$spezi[0]
    or spezifikation= '
    $spezi[1]' or spezifikation= '$spezi[2]
    or spezifikation= '
    $spezi[3]' or spezifikation= '$spezi[4]') 
    order by name"

    Du hast gesagt, du hast ca. 30 Checkboxen - hast du die Query hier fürs Forum gekürzt und alle Elemente von $spezi manuell in die Query gesetzt? Du könntest mit einer foreach-Schleife die Query nur mit den ausgewählten Checkboxen zusammenstellen lassen.

    Gruss
    Quetschi
    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

    Kommentar


    • #3
      ....

      hmm , weil ich das mit dem foreach net hinbekomme habe ich halt in der query nur 5 spezifikationen stehen. Habe ja auch schon an foreach gedacht , aber irgendwie fehlt mir da der richtige denkansatz..

      Kommentar


      • #4
        wie sehen denn deine Checkboxen im Html-code aus? Poste mal 2 Beispiele.
        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Kommentar


        • #5
          Das checkboxen- Formular sieht so aus :

          <form action="index.php?templateid=auswertung" method="post" >

          <td width="33%" >
          <span class="Stil59"><input type="checkbox" name="spezi[]" value="Brass" >
          Brass</span></td>
          <td width="33%" >
          <span class="Stil59"><input type="checkbox" name="spezi[]" value="Step Sequencer" >
          Step Sequencer </span></td>
          <td width="33%" >
          <span class="Stil59"><input type="checkbox" name="spezi[]" value="Synth -Modular-" >
          Synth -Modular- </span></td>


          ist das okay so ?

          Kommentar


          • #6
            Ist doch Ideal für eine foreach-Schleife:

            PHP-Code:
            foreach($_POST['spezi'] as $val)
            {
                
            $ar_query[] = "spezifikation='".$val."'";
            }

            $query_spezi implode(' OR ',$ar_query); 
            $query_spezi setzt du dann einfach in deine Klammer nach dem AND.
            Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
            Schön - etwas Geschichte kann ja nicht schaden.
            Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

            Kommentar


            • #7
              juchhu....

              Danke...hmm so ähnlich habe ich mir das vorgestellt, hatte aber irgendwie nen Brett vorm Kopf...dann mache ich mich auch gleich nochmal an die Kategorien...bist heute mein Held des Abends ;-)

              Kommentar


              • #8
                wenn du nicht auf injections achten willst/kannst/musst, reicht
                PHP-Code:
                $query 'BLA BLA ... spezifikation="'.implode('" OR spezifikation="',$_POST['spezi']).'"'
                ohne schleife
                Kissolino.com

                Kommentar

                Lädt...
                X