Script optimieren

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

  • Script optimieren

    Hallo zusammen,

    ich habe diverse Produktmaße in einer DB (L/B/H). Ein Interessent gibt die Angaben in ein Formular ein und es werden passende Produkte gesucht.

    Ich möchte mich gern weiterentwickeln - habe es abher mit array_filter o.ä. nicht hinbekommen und daher wieder auf einfachste Weise realisiert!

    Kann mir jemand helfen die Sache etwas professioneller zu programmieren?
    Vielen Dank schonmal.

    Hier die funktionierende Version:

    PHP-Code:
    <?php

    $dbase 
    "xxx";
    $db = @mysql_connect("xxx""xxx""xxx");
    mysql_select_db($dbase$db);

    if(isset(
    $_POST['submit'])){
    $produkte = Array();


    $sql "select id, laenge, breite, hoehe from sortiment";
    $result mysql_query($sql$db);
    $num mysql_affected_rows();
    if (
    $num >= 1) {
    while(
    $ergebnis mysql_fetch_array($result)){
    $produkte[]=Array($ergebnis['id'], $ergebnis['laenge'], $ergebnis['breite'], $ergebnis['hoehe']);
    }
    }
    // Array Filtern
     
    $ausgabe = Array();

    for(
    $i=0$i<=count($produkte)-1$i++){
    if(
    $_POST['laenge'] == $produkte[$i][1] and $_POST['breite'] == $produkte[$i][2] and $_POST['hoehe'] == $produkte[$i][3]){
    echo
    "Wir haben genau das passende Produkt für Sie!<br>";
    print(
    $produkte[$i][1]." x ".$produkte[$i][2]." x ".$produkte[$i][3]);
    }elseif((
    $_POST['laenge'] +$_POST['toleranz']) >= $produkte[$i][1] and ($_POST['laenge']-$_POST['toleranz']) <= $produkte[$i][1]
    and (
    $_POST['breite']+$_POST['toleranz']) >= $produkte[$i][2] and ($_POST['breite']-$_POST['toleranz']) <= $produkte[$i][2]
    and (
    $_POST['hoehe']+$_POST['toleranz']) >= $produkte[$i][3] and ($_POST['hoehe']-$_POST['toleranz']) <= $produkte[$i][3]){
    $ausgabe[] = Array($produkte[$i][1],$produkte[$i][2],$produkte[$i][3]);
    }
    }

    if(isset(
    $ausgabe[0][1])){
    echo
    "<br><br><strong>Angebote im Toleranzbereich</strong><br>
    "
    ;
    for(
    $i=0$i<count($ausgabe); $i++){
    print(
    $ausgabe[$i][0]." x ".$ausgabe[$i][1]." x ".$ausgabe[$i][2]."<br>");
    }
    }
    }
    Zuletzt geändert von philomat; 02.01.2006, 16:51.

  • #2
    erst lesen und post editieren!
    http://www.php-resource.de/forum/sho...threadid=50454

    schau dir danach die funktion abs() an (bei der toleranz-abfrage).

    Kommentar


    • #3
      1. Regeln: http://www.php-resource.de/forum/sho...threadid=50454
      2. ff - Falsches Forum. *move*

      Kommentar


      • #4
        Warum baust du die Usereingaben nicht in deine Query mit ein ? Ich nehme an das Feld Toleranz soll eine Prozentzahl sein ?
        PHP-Code:
        //am Beispiel der Länge

        $laenge mysql_real_escape_string(strip_tags($_POST['laenge']));
        $max_laenge $laenge 1.2 //entspricht den 20 % aus Toleranz
        $min_laenge $laenge 0.8 //dito

        $sql "Select id from table where laenge <= '$max_laenge' && laenge >= '$min_laenge'"
        Irgendwie wo würde ich das probieren. Nur so als Ansatz

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Danke für die schnelle Reaktion.

          1. Die Toleranz ist eine fixe Zahl in mm (wird vom User beim Formular ausgewählt)
          2. Am wichtigsten ist mir die Suche nach dem absolut passenden Produkt - sollte keines vorhanden sein müssen die nächst besten Produkte innerhalb des Toleranzbereiches angezeigt werden.

          Kommentar

          Lädt...
          X