Jag vill göra fler SELECT där del av resultatet i den första skall vara argumentet i nästa osv Jag kommer bara ett steg. Jag lagrar undan den del i första SELECTen som skall användas inästa men inget händer!!!?? Såhär ser koden ut Du kör Nu har jag gjort ändring så att jag vet att $row innehåller förväntat värde liksom $next men jag får ändå inte ut resten av angivet Familjenr (1883) och jag får inte ut resten av familj 1883 och ej heller nästa familj utifrpn värdet i $next som jag vet är rätt. Så här ser koden ut just nu med inlagd utskrift av värden. Du har aldrig funderat över vad som händer om samma variabel används både i en yttre och inre slinga? Nu ska du inte vara sån mot en gammal man!!Upprepad SELECT
<?php
$db="kall300db";
$link = mysql_connect("localhost","root","");
if (! $link)
die("Couldn't connect to MySQL");
mysql_select_db($db , $link)
or die("Couldn't open $db: ".mysql_error());
// $search = 'Familjenr' skall kunna hämtas från indataformulär sedan;28
$result = mysql_query("SELECT * FROM kall WHERE Familjenr = '1883' AND Fställning = '0'");
// !! Skriv ut info för Fadern !! K1=Familjenr,K2=Fställning,K3=Helnamn,K4=Ufamiljenr,K5=Ufställning
while($row = mysql_fetch_array($result))
{
echo $row['Familjenr'] . " " . $row['Fställning'] . " " . $row['Helnamn'] . " " . $row['Ufamiljenr'] .
" " . $row['Ufställning'];
echo "<br />";
}
// !! Spara Faderns K4 värde (Ufamiljenr)
$next=$row['Ufamiljenr'];
// !! Sen använder jag Faderns K1 Familjenr (1883) och skriver ut resten av hans familj om
// det finns fler !! 44
$result = mysql_query("SELECT '$row[Familjenr]' FROM 'kall' WHERE Fställning NE '0' ");
while($row = mysql_fetch_array($result))
{
echo $row['Familjenr'] . " " . $row['Fställning'] . " " . $row['Helnamn'] . " " . $row['Ufamiljenr'] .
" " . $row['Ufställning'];
echo "<br />";
}
// !! Sen kollar vi om det finns fler familjer relaterade till Fadern och skriver
// ut dessa!!
$result = mysql_query("SELECT $next FROM kall WHERE Familjenr = '$next AND Fställning = '0'");
while($row = mysql_fetch_array($result))
{
echo $row['Familjenr'] . " " . $row['Fställning'] . " " . $row['Helnamn'] . " " . $row['Ufamiljenr'] .
" " . $row['Ufställning'];
echo "<br />";
}
?>
//Detta skall fortsätta så länge som Fadern har ett Ufamiljenr
</body>
</html>
Vari ligger mitt fel?
Sv: Upprepad SELECT
$result = mysql_query("SELECT * FROM kall WHERE Familjenr = '1883' AND Fställning = '0'");
// !! Skriv ut info för Fadern !! K1=Familjenr,K2=Fställning,K3=Helnamn,K4=Ufamiljenr,K5=Ufställning
while($row = mysql_fetch_array($result))
{
echo $row['Familjenr'] . " " . $row['Fställning'] . " " . $row['Helnamn'] . " " . $row['Ufamiljenr'] .
" " . $row['Ufställning'];
echo "<br />";
}
Men efter denna kod har whileslingan avslutats och då har $row värdet false.
Sedan kör du
// !! Spara Faderns K4 värde (Ufamiljenr)
$next=$row['Ufamiljenr'];
Eftersom $row är false funkar inte raden ordentligt utan $next får värdet null.
// !! Sen använder jag Faderns K1 Familjenr (1883) och skriver ut resten av hans familj om
// det finns fler !! 44
$result = mysql_query("SELECT '$row[Familjenr]' FROM 'kall' WHERE Fställning NE '0' ");
Och här får SQL-satsen utseendet
SELECT '' FROM 'kall' WHERE Fställning NE '0'
eller möjligen
SELECT '[Familjenr]' FROM 'kall' WHERE Fställning NE '0'
Sv:Upprepad SELECT
<code>
<?php
$db="kall300db";
$link = mysql_connect("localhost","root","");
if (! $link)
die("Couldn't connect to MySQL");
mysql_select_db($db , $link)
or die("Couldn't open $db: ".mysql_error());
// $search = 'Familjenr' skall kunna hämtas från indataformulär;28
$result = mysql_query("SELECT * FROM kall WHERE Familjenr = '1883' AND Fställning = '0'");
// !! Skriv ut info för Fadern !! K1=Familjenr,K2=Fställning,K3=Helnamn,K4=Ufamiljenr,K5=Ufställning
while($row = mysql_fetch_array($result))
{
echo $row['Familjenr'] . " " . $row['Fställning'] . " " . $row['Helnamn'] . " " . $row['Ufamiljenr'] .
" " . $row['Ufställning'];
echo "<br />";
$next=$row['Ufamiljenr'];
echo '<pre>'; print_r($next); echo '</pre>';
echo '<pre>'; print_r($row); echo '</pre>';
// !! Spara Faderns K4 värde (Ufamiljenr)
// !! Sen använder du Faderns K1 (1883) och skriver ut resten av hans familj om
// det finns fler !! 44
$result = mysql_query("SELECT '$row[Familjenr]' FROM kall");
while($row = mysql_fetch_array($result))
{
echo $row['Familjenr'] . " " . $row['Fställning'] . " " . $row['Helnamn'] . " " . $row['Ufamiljenr'] .
" " . $row['Ufställning'];
echo "<br />";
}
}
// !! Sen kollar vi om det finns fler familjer relaterade till Fadern och skriver
// ut dessa!!
$result = mysql_query("SELECT $next FROM kall WHERE Familjenr = '$next' AND Fställning = '0'");
while($row = mysql_fetch_array($result))
{
echo $row['Familjenr'] . " " . $row['Fställning'] . " " . $row['Helnamn'] . " " . $row['Ufamiljenr'] .
" " . $row['Ufställning'];
echo "<br />";
}
?>
//Detta skall fortsätta så länge som Fadernhar ett Ufamiljenr
</body>
</html>
</code>
Ser du nu var felet mitt ligger?Sv: Upprepad SELECT
Här är ett utdrag ur din kod:
$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result))
{
...
$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result))
{
...
}
...
}
Sv:Upprepad SELECT
Detta handlar om en databas med en mängd människor bland vilka man ska kunna leta sig tillbaka i så många generationer som det finns uppgifter om.
Kör jag koden på detta sätt får jag två generationer och jag skulle kunna skriva ytterligare SELECT-satser tills jag är säker på att jag täcker in den längsta tänkbara kedjan. Jag tycker det är för simpelt men tyvärr klarar inte jag att hitta den loop eller vad det ska kallas som ska klara detta. Någon som klarar att visa hur det skulle se ut.
Efter varje delsteg har jag lagt in så jag skall kunna se vilka värden som finns i variablerna. Dom ligger kvar så länge.
<code>
<?php
$db="kall300db";
$link = mysql_connect("localhost","root","");
if (! $link)
die("Couldn't connect to MySQL");
mysql_select_db($db , $link)
or die("Couldn't open $db: ".mysql_error());
// $search = 'Familjenr' skall kunna hämtas från indataformulär när jag vet att allt fungerar
$result = mysql_query("SELECT * FROM kall WHERE Familjenr = '1883' AND Fställning = '0'");
// !! Skriv ut info för Fadern !! K1=Familjenr,K2=Fställning,K3=Helnamn,K4=Ufamiljenr,K5=Ufställning
while($row = mysql_fetch_array($result))
{
echo $row['Familjenr'] . " " . $row['Fställning'] . " " . $row['Helnamn'] . " " . $row['Ufamiljenr'] .
" " . $row['Ufställning'];
echo "<br />";
// !! Spara Faderns K4 värde (Ufamiljenr) ( Fam 1 Far)
// !! Spara Faderns K1 värde (Familjenr)
$next=$row['Ufamiljenr'];
$next1=$row['Familjenr'];
echo '<pre>'; print_r($next); echo '</pre>';
echo '<pre>'; print_r($next1); echo '</pre>';
}
// !! Sen använder du Faderns K1 (1883) och skriver ut resten av hans familj om (Fam 1 Mor och barn)
// det finns fler !!
$result = mysql_query("SELECT * FROM kall WHERE Familjenr = '$next1' AND Fställning <> '0'");
while($row = mysql_fetch_array($result))
{
echo $row['Familjenr'] . " " . $row['Fställning'] . " " . $row['Helnamn'] . " " . $row['Ufamiljenr'] .
" " . $row['Ufställning'];
echo "<br />";
echo '<pre>'; print_r($next1); echo '</pre>';
echo '<pre>'; print_r($next); echo '</pre>';
}
// !! Sen kollar vi om det finns fler familjer relaterade till Fadern och skriver (Fam 2 Far)
// ut dessa!!
$result = mysql_query("SELECT * FROM kall WHERE Familjenr = '$next' AND Fställning = '0'");
while($row = mysql_fetch_array($result))
{
echo $row['Familjenr'] . " " . $row['Fställning'] . " " . $row['Helnamn'] . " " . $row['Ufamiljenr'] .
" " . $row['Ufställning'];
echo "<br />";
$next=$row['Ufamiljenr'];
$next1=$row['Familjenr'];
echo '<pre>'; print_r($next); echo '</pre>';
echo '<pre>'; print_r($next1); echo '</pre>';
}
// Sen använder du Faderns K1 ($next1) och skriver ut resten av hans familj om (Fam 2 Mor och barn)
// det finns fler !!
$result = mysql_query("SELECT * FROM kall WHERE Familjenr = '$next1' AND Fställning <> '0'");
while($row = mysql_fetch_array($result))
{
echo $row['Familjenr'] . " " . $row['Fställning'] . " " . $row['Helnamn'] . " " . $row['Ufamiljenr'] .
" " . $row['Ufställning'];
echo "<br />";
echo '<pre>'; print_r($next1); echo '</pre>';
echo '<pre>'; print_r($next); echo '</pre>';
}
?>
// Detta skall fortsätta så länge som Fadern har ett Ufamiljenr större än 0
</body>
</html>
</code>