Sortierung

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Du solltest schon die Feldinhalte der jeweiligen Auswahl als Schlüssel angeben. Damit wäre es einfacher, nach bestimmten Namen, Maschinentypen, etc. zu suchen.
Und daraus kommen ja dann erst die IDs für die Vergleichsliste.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Danke oxpus, das meinte ich ... also eher so:

Code: Alles auswählen

<form action="visa.php" method="post"> 
Tillverkare&nbsp; 
<select name="top5" size="3" multiple> 
<?php 
$result = mysql_query("SELECT DISTINCT tillverkare FROM maskinlista ORDER BY tillverkare ASC"); 
  while ($r = mysql_fetch_array($result)) 
  { 
    echo('<option value=' . $r['tillverkare'] . '>'); 
    echo($r['tillverkare']); 
    echo('</option>'); 
  } 
?> 
</select> 


Maskintyp&nbsp; 
<select name="top5" size="3" multiple> 
<?php 
$result = mysql_query("SELECT DISTINCT maskintyp FROM maskinlista ORDER BY maskintyp ASC"); 
  while ($r = mysql_fetch_array($result)) 
  { 
    echo('<option value=' . $r['maskintyp'] . '>'); 
    echo($r['maskintyp']); 
    echo('</option>'); 
  } 
?> 
</select> 


</form>
@Bootenks: es ist das erste Mal, dass ich "selber" programmiere. Ich kann das nicht! :wall:

EDIT: ich möchte das Ergebnis der Auswahl jetzt an start2.php weiterschicken. Ich habe in visa.php ja dieses eingebaut:

Code: Alles auswählen

$vergleich = (isset($HTTP_POST_VARS['vergleich'])) ? $HTTP_POST_VARS['vergleich'] : array(); 
$sql_where_ids = ''; 
if(sizeof($vergleich)) 
{ 
for ($i=0; $i<sizeof($vergleich); $i++) 
{ 
$sql_where_ids .= ($sql_where_ids != '') ? ', ' . $vergleich[$i] : $vergleich[$i]; 
} 
} 


if ($sql_where_ids) 
{ 
$sql_where_ids = ' WHERE id IN (' . $sql_where_ids . ') ';
}
kann ich was ähnliches wieder verwenden?
http://www.gremminger.se/service/compare/start1.php
http://www.gremminger.se/service/compare/start2.php
Zuletzt geändert von Holger am Di 05.Dez, 2006 10:51, insgesamt 1-mal geändert.
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

(aso da hab mich vertippselt... DISTINCT)
*LOL* Das passiert mir auch immer. ^2
Schön das ich da nicht der einzige bin. :D
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

@Holger
Die Auswahllisten (select) haben jetzt den gleichen Namen

Code: Alles auswählen

name="top5"
Das ist schlecht, da dieser Name als Parameter an das Script gesendet wird.
Daher beide Listen unterschiedlich benennen.
Und in script2.php kannst Du dann diesen Wert übernehmen:

Code: Alles auswählen

$top5 = (isset($HTTP_POST_VARS['top5'])) ? $HTTP_POST_VARS['top5'] : '';
(Als Beipsiel).
Und $top5 wäre dann als Bedingung in die Abfrage einzusetzen, so daß dieses hier in etwas rauskäme:

Code: Alles auswählen

$result = mysql_query("SELECT DISTINCT maskintyp FROM maskinlista WHERE feldname LIKE ('" . $top5 . "%') ORDER BY maskintyp ASC");
LIKE als Vergleich und das Prozent hinter dem Wert sind hier besser, damit bei nicht ausgewähltem Feld (Wert ist leer und es steht dann nur % da!) eben alle Daten gezogen werden. Was dann ja auch so sein sollte...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Hi! Das klappt sehr gut! Danke!
NUR: ich kann keine Mehrfachauswahl treffen ...
http://www.gremminger.se/service/compare/start1.php

EDIT: eine Idee was ich tun muss um Mehrfachauswahl zu ermöglichen?

Ausserdem:
Ich habe die Felder Gewicht (vikt und vikt2) in INT umgewandelt.
Gibt man nun in
http://www.gremminger.se/service/compare/start1.php
"15000" ein bekommt man schön zwei Maschinen angezeigt, die man dann auch vergleichen kann.
NUR: ich kann nicht mehr NUR Åkerman auswählen und alles andere unberührt lassen, dann wird nichts angezeigt.
Ich habe damit versucht:

Code: Alles auswählen

$Tillverkare = (isset($HTTP_POST_VARS['Tillverkare'])) ? $HTTP_POST_VARS['Tillverkare'] : '';
$Maskintyp = (isset($HTTP_POST_VARS['Maskintyp'])) ? $HTTP_POST_VARS['Maskintyp'] : '';
$Vikt = (isset($HTTP_POST_VARS['Vikt'])) ? $HTTP_POST_VARS['Vikt'] : '';
und

Code: Alles auswählen

$result = mysql_query("SELECT DISTINCT * FROM maskinlista WHERE tillverkare LIKE ('" . $Tillverkare . "%') AND maskintyp LIKE ('" . $Maskintyp . "%') AND vikt < ('" . $Vikt . "%') AND vikt2 > ('" . $Vikt . "%') ORDER BY tillverkare ASC");
Ich vermute mal in dem Letzteren steckt ein Fehler?!?!?! Die ANDs sollen ja nur berücksichtigt werden, wenn in dem Feld Vikt etwas eingegeben wurde, wie bei den zwei anderen Feldern auch ...
Zuletzt geändert von Holger am Mi 06.Dez, 2006 14:51, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

1. Mehrfachauswahl wäre hier schlecht, denn die Auswahl landet ja komplett in der SQL-Abfrage.
Oder man müsste auch hier wieder alle Werte einzeln auslesen und in einen Bedingungsstring packen.
Man man man, wird ja richtig zur Arbeit hier...

2. Klammere die letzten beiden nochmal ein, damit diese erst ausgewertet werden und dann der Rest der Bedingungen. Und dazu musst Du das Prozentzeichen da rausnehmen, da $vict ja eine Zahl und ein String ist!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Meinst Du so?

Code: Alles auswählen

$result = mysql_query("SELECT DISTINCT * FROM maskinlista WHERE tillverkare LIKE ('" . $Tillverkare . "%') AND maskintyp LIKE ('" . $Maskintyp . "%') AND (vikt < ('" . $Vikt . "') AND vikt2 > ('" . $Vikt . "')) ORDER BY tillverkare ASC");
Ist das richtig geklammert so?
Zuletzt geändert von Holger am Do 07.Dez, 2006 13:11, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Yepp, so meinte ich das.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Klappt trotzdem nicht. :-(
Ohne Gewicht (Vikt) bekomme ich nichts angezeigt ...
Zuletzt geändert von Holger am Do 07.Dez, 2006 13:56, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Versuchs mal so:

Code: Alles auswählen

$Vikt = (!$Vikt) ? '' : ' AND vikt < ('" . $Vikt . "') AND vikt2 > ('" . $Vikt . "') ';
$result = mysql_query("SELECT DISTINCT * FROM maskinlista WHERE tillverkare LIKE ('" . $Tillverkare . "%') AND maskintyp LIKE ('" . $Maskintyp . "%') " . $Vikt . " ORDER BY tillverkare ASC");
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Weisse Seite :-(
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Code: Alles auswählen

$Vikt_sql = (!$Vikt) ? '' : "AND vikt < $Vikt AND vikt2 > $Vikt"; 
$result = mysql_query("SELECT DISTINCT * FROM maskinlista WHERE tillverkare LIKE ('$Tillverkare%') AND maskintyp LIKE ('$Maskintyp%') $Vikt_sql ORDER BY tillverkare ASC");
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Jaaaaaaaaaaaaaaaaaaa!!! :hurra:
Wenn ich jetzt noch Mehrfachauswahl bekommen könnte ...
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Dafür wäre wirklich eine Menge mehr zu machen...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Es geht weiter ^a
Ich habe nun ein paar verschiedene Typen: Bagger und Radlader.
Manche Zeilen sollen nur für Radlader angezeigt werden, manche nur für Bagger.
Ich habe das so gelöst:

Code: Alles auswählen

<?php
$vergleich = (isset($HTTP_POST_VARS['vergleich'])) ? $HTTP_POST_VARS['vergleich'] : array(); 
$sql_where_ids = ''; 
if(sizeof($vergleich)) 
{ 
for ($i=0; $i<sizeof($vergleich); $i++) 
{ 
$sql_where_ids .= ($sql_where_ids != '') ? ', ' . $vergleich[$i] : $vergleich[$i]; 
} 
} 


if ($sql_where_ids) 
{ 
$sql_where_ids = ' WHERE id IN (' . $sql_where_ids . ') ';
}
$result = mysql_query("SELECT * FROM maskinlista $sql_where_ids ORDER BY id ASC");
  while ($r = mysql_fetch_array($result)) 
  {
    if ($r['maskintyp'] != 'Hjullastare') 
    {
    echo('<tr><td class="tdborder">Räckvidd</td>');
    }
  } 
?>

<?php
$vergleich = (isset($HTTP_POST_VARS['vergleich'])) ? $HTTP_POST_VARS['vergleich'] : array(); 
$sql_where_ids = ''; 
if(sizeof($vergleich)) 
{ 
for ($i=0; $i<sizeof($vergleich); $i++) 
{ 
$sql_where_ids .= ($sql_where_ids != '') ? ', ' . $vergleich[$i] : $vergleich[$i]; 
} 
} 

if ($sql_where_ids) 
{ 
$sql_where_ids = ' WHERE id IN (' . $sql_where_ids . ') ';
}
$result = mysql_query("SELECT * FROM maskinlista $sql_where_ids ORDER BY id ASC");
  while ($r = mysql_fetch_array($result)) 
  { 
    if ($r['maskintyp'] != 'Hjullastare') 
    { 
    echo('<td class="tdborder">'); 
    echo($r['raeckvidd']);
    echo('m</td>');
    } 
    else 
    { 
       echo(''); 
    } 
  } 
?> 
</tr>


<?php
$vergleich = (isset($HTTP_POST_VARS['vergleich'])) ? $HTTP_POST_VARS['vergleich'] : array(); 
$sql_where_ids = ''; 
if(sizeof($vergleich)) 
{ 
for ($i=0; $i<sizeof($vergleich); $i++) 
{ 
$sql_where_ids .= ($sql_where_ids != '') ? ', ' . $vergleich[$i] : $vergleich[$i]; 
} 
} 


if ($sql_where_ids) 
{ 
$sql_where_ids = ' WHERE id IN (' . $sql_where_ids . ') ';
}
$result = mysql_query("SELECT * FROM maskinlista $sql_where_ids ORDER BY id ASC");
  while ($r = mysql_fetch_array($result)) 
  {
    if ($r['maskintyp'] == 'Hjullastare') 
    {
    echo('<tr><td class="tdborder">Tipplast rak/svängd</td>');
    }
  } 
?>

<?php
$vergleich = (isset($HTTP_POST_VARS['vergleich'])) ? $HTTP_POST_VARS['vergleich'] : array(); 
$sql_where_ids = ''; 
if(sizeof($vergleich)) 
{ 
for ($i=0; $i<sizeof($vergleich); $i++) 
{ 
$sql_where_ids .= ($sql_where_ids != '') ? ', ' . $vergleich[$i] : $vergleich[$i]; 
} 
} 

if ($sql_where_ids) 
{ 
$sql_where_ids = ' WHERE id IN (' . $sql_where_ids . ') ';
}
$result = mysql_query("SELECT * FROM maskinlista $sql_where_ids ORDER BY id ASC");
  while ($r = mysql_fetch_array($result)) 
  { 
    if ($r['maskintyp'] == 'Hjullastare') 
    { 
    echo('<td class="tdborder">'); 
    echo($r['tipplastrak']);
    echo(' - ');
    echo($r['tipplastsvaengd']);
    echo('kg</td>');
    } 
    else 
    { 
       echo(''); 
    } 
  } 
?> 
</tr>
Das ist natürlich weit entfernt von gut!
Wenn ich nämlich zwei Maschinen vergleiche, wird der Titel der Zeile zweimal angezeigt! Wenn ich drei vergleiche, wird der Titel dreimal angezeigt usw ...

Wie kann ich das beheben?

/Holger
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Mal eine Basis-Frage:
Warum fragst Du laufend die Angaben mehrfach mit eigenen Abfragen ab?
Ist mehr als unnötig und erschwert dazu auch die Korrektur.
Ich hatte das ja bereits mal erstellt.
Das solltest Du auch erst einmal umsetzen, damit es hier besser vorangeht...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Huch?
Das habe ich mich auch schon öfters gefragt.
Es kann ja nicht sein, dass ich immer wieder abfragen muss. Ich hatte mal ein Version, da wurde nur der erste Satz dann angezeigt. Da bin ich wieder zu dieser Version zurück gegangen.
Ich schaue mir das nochmal an.

/H
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Antworten