webForumDet fria alternativet

Loopen gör inte som jag vill...

PHP

6 svar · 186 visningar · startad av Patrik81

Medlem sedan okt. 2001538 inlägg
Frågan#1

Hejsan, jag tänkte göra ett script där man kan lägga till inlägg, och sedan skall man kunna redigera sina egna inlägg, och jag tänkte göra något i stil med:

<?php
$name = "Patrik";

if ($fp = fopen("flatfile.txt", "r")){
	
	echo("<table>\n");
	
	while (!feof($fp)){
		
		$line = fgets($fp, 1024);
		$row = explode(";", $line);
		$row['id'] = $row[0];
		$row['request'] = $row[1];
		$row['name'] = $row[2];
		
		echo("\t<tr>\n\t\t<td>".$row['id']."</td>\n\t\t<td>".$row['request']."</td>\n\t\t<td>".$row['name']."</td>\n");
		if ($row['name'] == $name){
			echo("\t\t<td><a href=\"whatever\">edit</a></td>\n\t</tr>\n\n");
		} else {
			echo("\t\t<td>&nbsp;</td>\n\t</tr>\n\n");
		}
	}

echo("</table>");

} else {

                echo("Kunde inte öppna flatfile.txt");

}
?>

Det skall i slutet vara fixat o donat med mysql, men ville snabbt testa om det gick, därav all den bökiga koden med textfiler och array-hantering. Men iaf. om användarnamnet (som sedan skall plockas ur en sessions variabel, är detsamma som $row['name'] så vill jag att scriptet skriver ut en länk i cellen efter allt det andra.
Och det stämmer nästan, scriptet skriver ut en länk på den sista raden...

flatfile.txt

1;glass;Patrik
2;humla;Joakim
3;blomma;Erik
4;blablabla;Patrik

Det är bara rad fyra som får en länk, även om både rad 1 och 4 borde få det, eller rättare sagt, det är det jag vill skall hända, men uppenbarligen klarar ju inte koden jag har slängt ihop att utföra detta.
Nån som har lust att modifiera loopen lite så att den är med på noterna?

MVH Patrik

Medlem sedan okt. 20001 285 inlägg
#2

Jag brukar köra med pipes | som separator i textfilen

$name = "Patrik";
    $fd = fopen($flatfile, "r");
    while (!feof($fd)) {
        $content = fgets( $fd, 10000);
        $stuff = explode("\|",$content);
        if ($name == $stuff\[2\]) { 
        $class = "links1"; 
        } else { 
        $class = "links2"; 
        }

echo "<span class=\"$class\">$stuff[2]</span>";

Medlem sedan okt. 2001538 inlägg
#3

Verkar dock inte göra alltför mycket för att lösa mitt problem :(

MVH Patrik

Medlem sedan okt. 20001 285 inlägg
#4

Gahhh.. ger upp för ett tag

<?php
$name = "Patrik";
$theFile = "flatfile.txt";
if (file_exists($theFile)) {
	echo "<table>\n";
	$fd = fopen($theFile, "r");
    while (!feof($fd)){
        $lines = fgets( $fd, 10000);
        $row = explode("|",$lines);
        if ($name == $row[2]){
            $extra = "<a href=\"whatever\">edit</a>";
        } else {
            $extra = "&nbsp;X&nbsp;";
        }
        echo "\t<tr>\n\t\t<td>".$row[0]."</td>\n\t\t<td>".$row[1]."</td>\n\t\t<td>".$row[2]."</td>\n\t\t<td>$extra</td>\n\t</tr>\n\n";
    }
    echo "</table>";
} else {
    echo "Kunde inte öppna filen";
}
?>
Medlem sedan okt. 2001538 inlägg
#5

Hummms, det verkar som om scriptet bara tar och kör if-satsen på sista raden, dvs bara kollar om den sista (innan feof) har ett namn som stämmer överrens, för om jag sätter $name till något annat, typ Erik (rad 3) så hittar scriptet inget alls som den sätter länk på... :(

MVH Patrik

Medlem sedan okt. 2001538 inlägg
#6

Ingen som är bra på while-slingor kombinerat med if-satser?

Har inte lyckats lösa det själv än, och sitter typ helt fast.

MVH Patrik

Medlem sedan okt. 2001538 inlägg
#7

Hehe, nu känner jag mig bra dum...
Jag skrev denna snabb-kod för att testa om det gick att göra, men fick då använda mig utav en while loop för att få det att funka med textfilen... i databas loopen använder jag mig utav en for-loop, och där fungerade det utmärkt... *doh*

Tack ändå för visat intresse

MVH Patrik

265 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)