Łączenie rekordów z jednej tabeli i wyświetlanie ich poprzez pole typu select.

0

Witajcie,

Mam takie oto zapytanie w PHP:

$miasta=mysql_query("SELECT `miasta` FROM `mapy` WHERE `panstwo`='Niemcy'&&`mapa`='Podstawa,DLC:EG'||`panstwo`='Niemcy' && `mapa`= 'Pro Mods' ")
    or die ("Nie pobrano listy miast!");
    
$miasta=mysql_fetch_row($miasta);
$miasta=explode(",","$miasta[0]");
sort($miasta);

$i=0;
while($i<=count($miasta)-1){
echo '<option>'."$miasta[$i]".'</option>';
$i++;
}

Cała reszta oczywiście jest. Problem jest taki, że fajnie działa jeżeli ktoś ma tylko na przykład mapa='podstawa', a pozostałe puste. Jeżeli jednak pojawia się sytuacja, że ktoś ma dwie mapy to już rekordy dwa się z bazy pobierają, tak jak tu:

6oft6Nal.jpg

W polach option zwraca tylko pierwszy rekord, a drugiego nie. Skrin:

AYn0lTYl.png

Jestem początkujący, więc zrozumiem jeżeli będzie to głupi mój błąd.

dodanie obrazków do załączników i treści posta - @furious programming

0

Nie pisze w php, ale wydaje mi ise, ze problem jest tutaj:

$miasta=explode(",","$miasta[0]");

Jako drugi parametr do splitowania podajesz tylko pierwszy element tablicy, potem nim podmieniasz cala tablice (uzuwasz jej zawartosc i napiszujesz tym jednym elementem).

0

A co masz w zmiennej

$miasta

po wykonaniu tego:

$miasta=mysql_query("SELECT `miasta` FROM `mapy` WHERE `panstwo`='Niemcy'&&`mapa`='Podstawa,DLC:EG'||`panstwo`='Niemcy' && `mapa`= 'Pro Mods' ")
    or die ("Nie pobrano listy miast!");
 
$miasta=mysql_fetch_row($miasta);

?

0

Więc tak - sprawę rozwiązałem w sposób rozdzielenia tego na 3 osobne selecty.

 $miasta=mysql_query("SELECT `miasta` FROM `mapy` WHERE `panstwo`='$kraj'&&`mapa`='$podstawa'")
    or die("Nie pobrałem miast");
 $miasta=mysql_fetch_array($miasta);
 $miasta=explode(",","$miasta[0]");
 if($mapa[2]!=''){
    $miasta1=mysql_query("SELECT `miasta` FROM `mapy` WHERE `panstwo` = '$kraj'&&`mapa`= '$mapa[2]'")
    or die("Nie pobrałem miast");
     $miasta1=mysql_fetch_array($miasta1);
     $miasta1=explode(",","$miasta1[0]");
     $miasta=array_merge($miasta,$miasta1);  
 }
 if($mapa[3]!=''){
    $miasta2=mysql_query("SELECT `miasta` FROM `mapy` WHERE `panstwo` = '$kraj'&&`mapa`= '$mapa[3]'")
    or die("Nie pobrałem miast");
     $miasta2=mysql_fetch_array($miasta2);
     $miasta2=explode(",","$miasta2[0]");
     $miasta=array_merge($miasta,$miasta2);  
 }
 sort($miasta);
 
 $checked=mysql_query("SELECT `start0` FROM `rozpiski` WHERE `kod`='$numer'")
      or die("Nie pobrałem miasta checked.");
    $checked=mysql_fetch_row($checked);
 
$i=0;
while($i<=count($miasta)-1){
if($miasta[$i]==$checked[0]){
    echo '<option selected="selected">'."$miasta[$i]".'</option>';
}
else{
if($miasta[$i]!=''){
echo '<option>'."$miasta[$i]".'</option>';
}
}
$i++;
}?> 

Powyżej rozwiązanie skuteczne :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1