ksort
Vollpfosten
- php
0 lulu
hallo,
wie kriege ich das hier irgendwie hin, das ich die besten 5 ergebnisse mit ksort abhole:
<?php
$row = 1;
$fp = fopen ("filialen.csv","r");
$diff = 20000;
while ($data = fgetcsv($fp, 1000, ";")) {
//Nur bei einer bestimmten Vertriebslinie nachschauen
if (abs($data[2] - $PLZ) < $diff) {
$key=$diff;
$result[$key]=$data;
tips?
Huhu Vollpfosten
mmh, das kommt mir irgendwie bekannt vor ;-)
Vielleicht funktioniert es in etwa so:
$row = 1;
$fp = fopen ("filialen.csv","r");
$diff = 20000;
$stack_of_results=array();
while ($data = fgetcsv($fp, 1000, ";")) {
if (abs($data[2] - $PLZ) < $diff) {
$key=$diff;
$stack_of_results[$key][]=$data; # Achtung $diff ist nicht unique, daher hier als ArrayOfArrays speichern }
}
ksort($stack_of_results);
$output = array_slice ($stack_of_results, 0, 5);
$c=0;
foreach($output as $v){
$c++;
echo 'Ergebnis '.$c;
foreach($v as $one){
echo join(', ',$one).'<hr>';
}
}
Viele Grüße
lulu
diesmal keine ... :)
ich kriege die fehlermeldung in zeile 35, das bedeutet </table>, wieso, hier nochmal der ganze code:
#!/usr/local/bin/php
<table border="1">
<thead>
<tr>
<th>Filiale</th><th>Nr.</th><th>PLZ</th><th>Ort</th>
<th>Strasse</th><th>Marktleiter</th><th>Fleischabtltr.</th>
<th>Telefon</th><th>Telefax</th><th>Email</th>
</tr>
</thead>
<tbody>
<?php
$row = 1;
$fp = fopen ("filialen.csv","r");
$diff = 20000;
$stack_of_results=array();
while ($data = fgetcsv($fp, 1000, ";")) {
if (abs($data[2] - $PLZ) < $diff) {
$key=$diff;
$stack_of_results[$key][]=$data; # Achtung $diff ist nicht unique, daher hier als ArrayOfArrays speichern }
}
ksort($stack_of_results);
$output = array_slice ($stack_of_results, 0, 5);
$c=0;
foreach($output as $v){
$c++;
echo 'Ergebnis '.$c;
foreach($v as $one){
echo join(', ',$one).'<hr>';
}
}
?>
</tbody>
</table> // hier der fehler
Huhu Vollpfosten
mmh, das kommt mir irgendwie bekannt vor ;-)
Vielleicht funktioniert es in etwa so:
$row = 1;
$fp = fopen ("filialen.csv","r");
$diff = 20000;
$stack_of_results=array();
while ($data = fgetcsv($fp, 1000, ";")) {
if (abs($data[2] - $PLZ) < $diff) {
$key=$diff;
$stack_of_results[$key][]=$data; # Achtung $diff ist nicht unique, daher hier als ArrayOfArrays speichern }
}
ksort($stack_of_results);
$output = array_slice ($stack_of_results, 0, 5);
$c=0;
foreach($output as $v){
$c++;
echo 'Ergebnis '.$c;
foreach($v as $one){
echo join(', ',$one).'<hr>';
}
}
Viele Grüße
lulu
diesmal keine ... :)
ich kriege die fehlermeldung in zeile 35, das bedeutet </table>, wieso, hier nochmal der ganze code:
while ($data = fgetcsv($fp, 1000, ";")) {
if (abs($data[2] - $PLZ) < $diff) {
$key=$diff;
$stack_of_results[$key][]=$data; # Achtung $diff ist nicht unique, daher hier als ArrayOfArrays speichern }
}
ksort($stack_of_results);
$output = array_slice ($stack_of_results, 0, 5);
$c=0;
foreach($output as $v){
$c++;
echo 'Ergebnis '.$c;
foreach($v as $one){
echo join(', ',$one).'<hr>';
}
}
weil dir hier ein } fehlt, das } daß du _nach_ dem kommentar geschrieben hast bleibt kommentar
lg
Ludwig
Nun kriege ich aber alles angezeigt und nicht die 5 besten ergebnisse
unter www.vizacon.de/coop/php2.html
diesmal keine ... :)
ich kriege die fehlermeldung in zeile 35, das bedeutet </table>, wieso, hier nochmal der ganze code:
while ($data = fgetcsv($fp, 1000, ";")) {
if (abs($data[2] - $PLZ) < $diff) {
$key=$diff;
$stack_of_results[$key][]=$data; # Achtung $diff ist nicht unique, daher hier als ArrayOfArrays speichern }
}
ksort($stack_of_results);
$output = array_slice ($stack_of_results, 0, 5);
$c=0;
foreach($output as $v){
$c++;
echo 'Ergebnis '.$c;
foreach($v as $one){
echo join(', ',$one).'<hr>';
}
}
weil dir hier ein } fehlt, das } daß du _nach_ dem kommentar geschrieben hast bleibt kommentar
Achtung $diff ist nicht unique, daher hier als ArrayOfArrays speichern }
lg
Ludwig
so, habe ein problem gelöst, kriege die 5 besten ergebniss in einer tabelle angezeigt, nun habe ich aber das problem, das es nicht die 5 besten ergebnisse sind.
wenn ich zum beispiel 24105 angebe, dann muesste er ja die 5 besten in unmittelbarer nähe von 24105 angeben, driekt in der näche sind ungefähr 10 filialen
ich kriege aber 5 filialen angezeigt, die nicht in unmittelbarer nähe sind, aber in der differenz von $diff = 1000;
wenn ich also z.b. $diff = 10 eingebe und dann nach 24105 eingebe, dann bekomme ich alle in der unmittelbaren näche angezeigt, wie ich es haben mächte, erhöhe ich die differenz wird der wert wieder ungenauer, wenn ich dann mal ne plz eingebe, wo in der näche keine filiale ist, kriege ich auch nichts angezeigt, das ist irgendwie doof
gibt es da keine bessere lösung
gebt mal unter
www.vizacon.de/coop/php2.html
24105 ein und ihr kriegt filialen aus büddelsodrf, aus lübeck angezeigt und nicht nur aus kiel, obwohl kiel mehr als 10 filialen hat
Nun kriege ich aber alles angezeigt und nicht die 5 besten ergebnisse
unter www.vizacon.de/coop/php2.htmldiesmal keine ... :)
ich kriege die fehlermeldung in zeile 35, das bedeutet </table>, wieso, hier nochmal der ganze code:
while ($data = fgetcsv($fp, 1000, ";")) {
if (abs($data[2] - $PLZ) < $diff) {
$key=$diff;
$stack_of_results[$key][]=$data; # Achtung $diff ist nicht unique, daher hier als ArrayOfArrays speichern }
}
ksort($stack_of_results);
$output = array_slice ($stack_of_results, 0, 5);
$c=0;
foreach($output as $v){
$c++;
echo 'Ergebnis '.$c;
foreach($v as $one){
echo join(', ',$one).'<hr>';
}
}
weil dir hier ein } fehlt, das } daß du _nach_ dem kommentar geschrieben hast bleibt kommentar
Achtung $diff ist nicht unique, daher hier als ArrayOfArrays speichern }
lg
Ludwig
Huhu
ich kriege die fehlermeldung in zeile 35, das bedeutet </table>,
Der Fehler muss nicht zwangsläufig in der Zeile die in der Fehlermeldung angegeben wird stecken.
Da stimmt vermutlich etwas mit den Klammern nicht
$stack_of_results[$key][]=$data; # Achtung $diff ist nicht unique, daher hier als ArrayOfArrays speichern }
Da ist mir die }-Klammer in die Kommentarzeile gerutscht.
Also das } muss in die nächste Zeile.
Viele Grüße
lulu