Nu de rest laten zien na de array.

Status
Niet open voor verdere reacties.

Atwist

Terugkerende gebruiker
Lid geworden
24 jan 2006
Berichten
1.055
Besturingssysteem
Wndows 10
Office versie
2016
Ik probeer van deze regel

Code:
int timer1 = 10;	// dit is de eerste timer

bepaalde delen op mijn site te laten zien dat is mij ten dele gelukt met dit script.


PHP:
<?php
   function splitData($data)
   {
      $result = array();
     
      foreach ($data as $line)
      {
         $line = trim($line);
         $line = str_replace("int ", "", $line);
         $line = str_replace("= ", "", $line);
         $line = str_replace(";", "", $line);
         $line = explode(" ", $line);
         $result[$line[0]] = $line[1];
      }
     
      return $result;
   }
   
   if (isset($_POST['field']))
   {
       $data = array();
       foreach ($_POST['field'] as $key => $value)
           $data[] = "int $key = $value;";
           
       file_put_contents("config.txt", implode("\n", $data));
   }
   else
      $data = file("config.txt", FILE_SKIP_EMPTY_LINES);
   
   $data = splitData($data);
?>
 
<html>
<body>
  <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
<?php
 
   foreach ($data as $key => $value)
       echo "$key: <input typ='text' name='field[$key]' value='$value'><br>\n";
?>
   <input type="submit" name="submit" Value="opslaan">
</form>
</body>
</html>

Schermafdruk van 2016-01-14 10:56:51.png

Maar nu wil ik graag achter de textbox de rest van de regel laten zien en wel na // .
Heb helaas geen idee hoe ik dit moet aanpakken.

Graag jullie hulp.
 
Laatst bewerkt:
Bij mijn weten is // een comment functie.

Dus dan zal je php pagina dat stukje tekst nooit kunnen oproepen.

Denk dat je dan het beste een loop kunt maken aan de hand van je input velden en daar dat extra stukje tekst achter moet laten zetten

Code:
echo "$key: <input typ='text' name='field[$key]' value='$value'><br>\n dit is de '$timer_count' timer";

zoiets en dan voor $timer_count moet je een loop gaan maken die je hier weergeeft

Gr,
Patrick
 
Bij mijn weten is // een comment functie.

Klopt Patrick,

Maar de tekstregel staat in config.txt bestand.
 
Oké dat had ik niet door.
Ik zie wel dat je een implode doet op \n, aangezien je twee dingen in je array wilt hebben.
Heb je al geprobeerd om een implode te doen op \\?
 
Heeft iemand nog een andere tip en/of methode?? :eek:
 
Waarom gebruik je hiervoor een tekstbestand ipv een database?

tip:
Code:
<?php echo $_SERVER['SCRIPT_NAME']; ?>

Kun je ook, korter, schrijven als:
Code:
<?=$_SERVER['SCRIPT_NAME'];?>
 
Waarom gebruik je hiervoor een tekstbestand ipv een database?

De website moet op een SD kaart staan van een microcontroller (Arduino), dus heb ik weinig keus.
En het text bestand word ook niet steeds in gelezen alleen bij herprogrammeren o f bij een reset.
PHP:
 $line = trim($line);
         $line = str_replace("int ", "", $line);
         $line = str_replace("= ", "", $line);
         $line = str_replace(";", "", $line);
         $line = str_replace("//", "", $line);   <=============
	 $line = explode(" ", $line);
         $result[$line[0]] = $line[1];

Had het met deze regel geprobeerd, krijg de text wel maar deze komt dan in de textbox te staan ipv achter de textbox.
 
Ah, in dat geval zou ik een regular expression proberen om de tekst achter de // te achterhalen, zo bijvoorbeeld.
PHP:
<?php
$line = trim($line);
preg_match('/\/\/(.*)/' , $line, $description ); //regex om alle karakters achter // op te halen, de preg_match functie gooit het resultaat in de $description variabele. 
$lineDescription = isset($description[1]) ? $description[1] : '';		  
$line = str_replace(array("int ", "=", ";", "//"), "", $line); // alle te vervangen strings staan nu in een array, scheelt weer een paar regels
$line = array_values(array_filter(explode(" ", $line)));	//array_filter om lege resultaten uit de array te halen, array_values om de teller van de array te resetten	  
$result[$line[0]]['value'] = $line[1];
$result[$line[0]]['description'] = $lineDescription;
?>

Aan de outputkant krijg je dan dit;
PHP:
<?php
echo "$key: <input typ='text' name='field[$key]' value='".$value['value']."'>".$value['description']."<br>\n";
?>
 
Hallo Naarling,

Inderdaad dit werkt perfect, ga jou methode uitknobbelen hoe deze werkt dan heb ik weer wat geleerd.

Mijn dank is erg groot :thumb: :thumb: :thumb:

Dank voor je tijd en moeite.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan