2016-03-23 32 views
0

auffüllen Ich habe 2 View-Tabellen, die erste ist Länder, die zweite Staaten. Individuell funktionieren beide gut. Die Tabelle listet alle Länder auf und die Tabelle states listet ALLE Staaten auf.Tabelle von Wert aus einer anderen Tabelle

In der Tabelle Länder habe ich eine Verbindung zu Staaten, die die country_id an die Tabelle Staaten übergibt, da ich nur Staaten für das ausgewählte Land und nicht alle Staaten auflisten möchte.

Ich habe viele Lösungen von anderen versucht, aber immer noch kann es nicht funktionieren. Ich würde Ihre Hilfe für etwas einfaches schätzen.

states.php (das ist, was ich bisher, aber es funktioniert nicht, ist der Fehler in der Auswahlleitung.)

<?php 
$per_page = 25; 
$result = mysql_query("SELECT * FROM states' SET states.country_id = countries.id FROM countries INNER JOIN countries ON states = countries WHERE states.country_id = country_id ORDER BY states.name ASC;"); 
$total_results = mysql_num_rows($result); 
$total_pages = ceil($total_results/$per_page); 

if (isset($_GET['page']) && is_numeric($_GET['page'])) 
{ 
    $show_page = $_GET['page']; 

    // make sure the $show_page value is valid 
    if ($show_page > 0 && $show_page <= $total_pages) 
    { 
     $start = ($show_page -1) * $per_page; 
     $end = $start + $per_page; 
    } 
    else 
    { 
     // error - show first set of results 
     $start = 0; 
     $end = $per_page; 
    }  
} 
else 
{ 
    // if page isn't set, show first set of results 
    $start = 0; 
    $end = $per_page; 
} 

echo "<p><a href='state.php'>View All</a> | <b>View Page:</b> "; 
for ($i = 1; $i <= $total_pages; $i++) 
{ 
    echo "<a href='state.php?page=$i'>$i</a> "; 
} 
echo "</p>"; 

echo "<table border='1'>"; 
echo "<tr> <th>State:</th></tr>"; 

for ($i = $start; $i < $end; $i++) 
{ 
    if ($i == $total_results) { break; } 

    echo "<tr>"; 
    echo '<td>' . mysql_result($result, $i, 'name') . '</td>'; 
    echo "</tr>"; 
} 
echo "</table> "; 

?> 
+0

Was „funktioniert nicht“ ist? Läuft es? Einen Fehler werfen? Läuft, hat aber falsche Ergebnisse? Was sind die gewünschten Ergebnisse? –

+0

nach Auswahl * aus den Staaten ein einziges Zitat, warum ist es hier? –

+0

@ cal_b - Ich bekomme "Warnung: mysql_num_rows() erwartet Parameter 1 als Ressource, Boolean gegeben in/var/www/vhosts/... am Anfang der Zeile ... ($ total_results = mysql_num_rows ($ result);) – sumwonlost

Antwort

0

Sie haben keine Variable das Land von Land ausgewählt ist, die .php wurde an states.php übergeben, also müssen Sie das zuerst herausfinden.

Dies ist ein sehr einfaches Beispiel für die Abfrage, die Sie benötigen, um die Status basierend auf dem Land "ausgewählt" zu ziehen. Aber Sie brauchen irgendwo die Variable $ country, die Sie nicht in Ihrem Code haben.

SELECT a.* FROM states a 
WHERE a.country_id = '".$country_id."' 
ORDER BY a.name ASC 

Wenn Sie nicht PDO verwenden (was Sie nicht sind), dann müssen Sie die $ country Variable stellen Sie sicher, sicher ist und vorzugsweise zumindest es auch entkommen.

+0

Zu diesem Zweck ist hier eine einfache Weitergabe von Variablen, die ich oben in meiner states.php hinzugefügt habe. sumwonlost

+0

Es gibt die Variable, aber ich bekomme "Warnung: mysql_num_rows() erwartet Parameter 1 zu sein, Ressource, boolean gegeben in/var/www/vhosts/... am Anfang der Zeile ... ($ total_results = mysql_num_rows ($ Ergebnis);) – sumwonlost

+0

Wo ist Ihre eigentliche Verbindung zur Datenbank? – DaveK

0

ich in der Lage gewesen, um es arbeiten, wie ich die erfordern unter Verwendung folgender:

SELECT * FROM states 
WHERE country_id='.$_GET['country_id'].' 
ORDER BY name ASC' 
Verwandte Themen