PHP správné napojení 2 kodu TXT souboru – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

PHP správné napojení 2 kodu TXT souboru – PHP – Fórum – Programujte.comPHP správné napojení 2 kodu TXT souboru – PHP – Fórum – Programujte.com

 
Hledat
Moderní platforma pro vytvoření vašeho nového webu – Wix.com.
Nyní už můžete mít web zdarma.
Vybavení pro Laser Game
Spuštěn Filmový magazín

Spuštěný nový filmový web Filmožrouti.cz — vše o Avengers, Pacific Rim, Thor, Star Wars…
arcam0
Newbie
7. 2. 2018   #1
-
0
-

Dobrý den, mám tu menší problém se spojením dvou funkcí php pro dvě věci do jednoho přes echo '', ""

Sceenshot jak by to asi mělo vizuálně vypadat: http://prntscr.com/ibapun

Připojen obrázek.

Tyto dva kody bych chtěl nějak rozumě spojit aby to vypadalo jako na obrázku plně funkční.

Už jsem to zkoušel tolikrát jak by to šlo že mě už žádné řešení snad ani nenapadá.

Kod výpisu:

<?php

/*
   Zpracovávaci php pro výpis > zobrazeni
   
*/


// vypíše data na stranku



$myfile = fopen("data.txt", "r") or die("soubor nenalezen!");

echo "<table>";
while(!feof($myfile)) {
 
  echo "<tr><td width='800' bgcolor='#00cc00'><label> DATUM:</label><label>         ČAS:</label><label>       ID: </label><label>                                             JMÉNO: </label>";
  echo "<tr><td width='800' bgcolor='#d6d6c2' style='color: blue'><br><hr><br>";
  echo fgets($myfile) . "<br><br>";
  echo '<input id="checkBox" type="checkbox"><br>';
  echo "<hr></td></tr>";
}

echo "</table>";
fclose($myfile);





// mazani

kod pro mazání:


<?php

if(isset($_POST['index']) && is_array($_POST['index'])) {

  $radky = file('data.txt');

  foreach($_POST['index'] as $klic => $hodnota) {

    $radky[$hodnota] = '';

  }

  $text = join('', $radky);

  file_put_contents('data.txt', $text);
  
  

  //nebo php 5 

  //$fp = fopen('soubor.txt', 'w');

  //fwrite($fp, $text);

  //fclose($fp);

}



$radky = file('data.txt');

?>
<form name="smaz" action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">

<?php

for($i = 0; $i != count($radky); ++$i) {

  echo '  '.$radky[$i].'><meta charset="UTF-8"><input type="checkbox" name="index[]" value="'.$i.'"><br>'."";

}

?>
	
<p align="right">
  <input type="submit" name="sub" value="Smazat vybraný řádek">
 </p>
  

</form>
Nahlásit jako SPAM
IP: 188.134.232.–
peter
~ Anonymní uživatel
3135 příspěvků
7. 2. 2018   #2
-
0
-

Zadani je nejasne.
Tvuj pokus chybi. Takze ti nemuzeme rici, co delas spatne.
Neni mi jasne, co se pokousis udelat.

Tipnul bych, ze se pokousis udelat tabulku s radky
[ ] | text | text
a dole to zaskrtnes a kliknes na smazat.
1) V tom pripade ale input musi obsahodat id radku z sql nebo textoveho souboru. Nebo neco, co ten radek jednoznacne identifikuje. S tim souborem je to prave nesikovne, protoze kdyz 2 uzivatele zobrazi stejnou stranku, udes tam mit id=5.radek. Jeden zaskrtne ten checkbox, klikne smazat. Druhy za chvili udela totez bez obnoveni stranky, tak se smaze pokazde jiny radek. Jednou 5., podruje 6.
2) Vypis echo bych udelal az po te, co to mas v promenne. Kvuli rychlejsimu zobrazeni. Nebo, az $str presahne urcitou velikost.
3) inputy je treba sloucit posle name jako pole, treba zaskrtni[]
4) inputy nesmi mit stejne id, pokud jsou na jedne strance vicekrat
$str .=  '<input id="checkBox" type="checkbox"><br>'; -- tvoje
$str .=  '<input id="checkBox" type="checkbox" name="zaskrtni[]"><br>'; -- uprava1
$str .=  '<input type="checkbox" name="zaskrtni[]"><br>'; -- uprava2
$str .=  '<input type="checkbox" name="zaskrtni[]" value="5"><br>'; -- uprava2, value pro radek 5
<?php if (isset($_POST['zaskrtni'])) var_dump($_POST['zaskrtni']); ?> -- ti vypise vsechno zaskrtnute

Zapis inputu, viz https://www.jakpsatweb.cz/…rmulare.html
 

Nahlásit jako SPAM
IP: 2001:718:2601:258:1c2c:84...–
arcam0
Newbie
12. 2. 2018   #3
-
0
-

Pokouším se udělat toto:

<body>
<div id="container">
<form name="smaz" action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
<div id="Layer2" style="position:absolute;overflow:auto;text-align:left;left:0px;top:333px;width:870px;height:581px;z-index:7;" title="importdatabox">
<!-- importdata cp -->
<div id="Html1" style="position:absolute;left:10px;top:17px;width:829px;height:421px;z-index:0">
<br>
<p align="right">
  <input type="submit" name="sub" value="Smazat vybraný řádek">
 </p>
 <br>
<?php

/*
	vypis seznamu členů přes tr td
*/

// data location:./../data.txt

$myfile = fopen("./../data.txt", "r") or die("soubor nenalezen!");
echo "<span style='color: green;'>*****************************************************************************************************************************************************************</span><br>";
echo "<table>";
while(!feof($myfile)) {
 
  echo "<tr><td width='800' bgcolor='#00cc00'><label> DATUM:</label><label>         ČAS:</label><label>       ID: </label><label>                                             JMÉNO: </label>";
  echo "<tr><td width='800' bgcolor='#d6d6c2' style='color: blue'><br><hr><br>";
  echo fgets($myfile) . "<br><br>";
  echo "<input id='checkBox' type='checkbox' name='' value=''><br>";
  // mazani check
  for($i = 0; $i != count($radky); ++$i) {
  
  echo '  '.$radky[$i].'><tr><td width="800" bgcolor="#00cc00"><meta charset="UTF-8"><input type="checkbox" name="index[]" value="'.$i.'"><br>'."";

}
  
  
  echo "<hr></td></tr>";
 
}

echo "</table>";
fclose($myfile);



// mazani
if(isset($_POST['index']) && is_array($_POST['index'])) {

  $radky = file('./../data.txt');

  foreach($_POST['index'] as $klic => $hodnota) {

    $radky[$hodnota] = '';

  }

  $text = join('', $radky);

  file_put_contents('./../data.txt', $text);

 

  //fwrite($fp, $text);

  //fclose($fp);

}



$radky = file('./../data.txt');



 echo "<span style='color: green;'>*****************************************************************************************************************************************************************</span><br>";



?>


<br>
</div>
</div>

A hlásí tu tuto chybu, při čemž ani nelze smazat vybraný řádek:

Připojen obrázek.

Nahlásit jako SPAM
IP: 188.134.232.–
peter
~ Anonymní uživatel
3135 příspěvků
12. 2. 2018   #4
-
0
-

Na radku 96 mas hadam toto:
for($i = 0; $i != count($radky); ++$i) {
'Undefined variable: radky' - obvykle znamena, ze $ radky neexistuje.

$radky ziskas asi o 10 radku niz (a nebo o dalsich asi 15 niz) pres
$radky = file('./../data.txt');

Obavam se, ze ti unikaji souvislosti. Zkus vzdycky mrknout na online dokumentaci k funkci a nejake priklady tam Napr php.net/f_open

function zpracujRadek($i,$row)
  {
  return '<tr><td>'.implode('</td><td>',explode('|',$row)).'</td></tr>';
  }

$str = '<table>';

$path = "./../data.txt"
$fp   = fopen($path, "r") or die("soubor nenalezen!");
$i    = 0;
while(!feof($fp))
  {
  $row  = fgets($myfile);
  $str .= zpracujRadek($i,$row);
  $i++;
  }

$str .= '</table>';
echo $str;

To $i potom potrebujes prave pro ten input, ktery pridas do funkce zpracujRadek, plus ty dalsi veci, co tam delas. Ty totiz potrebujes pro ten checkbox jednoznacny identifikator. Ty mas ted na strance, v html, treba 50 checkboxu, ktere se jmenuji id=checkBox nebo take name=''. A jak poznas, ktery znich je zaskrtnuty? Proto tam id nesmis mit. Name=checkBoxy[]. Value, tam prijde to $i. Kdyz to pak odesles pres post, tak to vyrobi php pole
$_POST['checkBoxy'] = array(3,7); // vypises si treba takto: var_dump($_POST['checkBoxy'])
A s tim pak muzes v php pracovat.


 

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:38...–
peter
~ Anonymní uživatel
3135 příspěvků
12. 2. 2018   #5
-
0
-

Co kdyby ses vykaslal na php a nejdriv si ten formular udelal v html? A kdyz pak klikne odeslat a var_dump($_POST); zobrazi spravne data, tak ma smysl to propojovat na soubory.

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:38...–
Kit+13
Guru
12. 2. 2018   #6
-
0
-

#3 arcam
Hned za komentář "data location" dej tohle: 

$radky = file('./../data.txt');
Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
arcam0
Newbie
14. 2. 2018   #7
-
0
-

Tak jsem to upravil takto, zdá se že to funfuje více méně jak má, akorát při načtení php souboru s kodem mám problém s tím že to maže záznamy..


<?php

if(isset($_POST['index']) && is_array($_POST['index'])) {

  $radky = file('data.txt');

  foreach($_POST['index'] as $klic => $hodnota) {

    $radky[$hodnota] = '';

  }

  $text = join('', $radky);

  file_put_contents('data.txt', $text);
  
  // pro  php5
  // $fp = fopen('soubor.txt', 'w');

  // fwrite($fp, $text);

  // fclose($fp);

}



$radky = file('data.txt');

?>
<form name="smaz" action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">

<?php


for($i = 0; $i != count($radky); ++$i) {
echo "<table>";
   echo "<tr><td width='800' bgcolor='#00cc00'><label> DATUM:</label><label>         ČAS:</label><label>       ID: </label><label>                                             JMÉNO: </label>";  
   echo "<tr><td width='800' bgcolor='#d6d6c2' style='color: blue'><br><hr><br>";
   echo '  '.$radky[$i].'><tr><td width="800" bgcolor="#d6d6c2"><meta charset="UTF-8"><input type="checkbox" name="index[]" value="'.$i.'"><label>Vyber pro smazání záznamu</label><br>'."";
   
   echo "<hr></td></tr>";
   echo "</table>";
}

?>
	
<p align="right">
  <input type="submit" name="sub" value="Smazat vybraný řádek">
 </p>
  

</form>

Připojen obrázek.

Nahlásit jako SPAM
IP: 188.134.232.–
peter
~ Anonymní uživatel
3135 příspěvků
14. 2. 2018   #8
-
0
-

Pekny. Kdyz tam mas ten label, tak se to da zapsat jeste takto:

<input type="checkbox" name="index[]" value="'.$i.'"><label>Vyber pro smazání záznamu</label>
<label><input type="checkbox" name="index[]" value="'.$i.'">Vyber pro smazání záznamu</label>


Rozdil je v tom, ze na druhem radku se da kliknout na text a zaskrtne ti i ten checkbox. V prvnim pripade se musis trefovat do maleho ctverecku checkboxu.

A to meta tam mas uplne zbytecne, to patri nahoru do tagu head. Priklad struktury html stranky:

https://www.jakpsatweb.cz/html/html5-strukturni.html
https://www.tvorba-webu.cz/…truktura.php
http://owebu.org/…l_ukazky.php - tady si klikni na HTML5 /  '[+] Ukázka kódu html5'
http://www.jakdelatweby.cz/…truktura.php - tady je to taky celkem pekne, az na to neodsazovani! :)

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:38...–
arcam0
Newbie
14. 2. 2018   #9
-
0
-

Jo ale mám problém že když načtu tuto stránku tak při každém načtení aniž bych klikl na button smazat řádek, tak to smaže jeden řádek..

<?php

if(isset($_POST['index']) && is_array($_POST['index'])) {

  $radky = file('data.txt');

  foreach($_POST['index'] as $klic => $hodnota) {

    $radky[$hodnota] = '';

  }

  $text = join('', $radky);

  file_put_contents('data.txt', $text);
  
  // pro  php5
  // $fp = fopen('data.txt', 'w');

  // fwrite($fp, $text);

  // fclose($fp);

}



$radky = file('data.txt');

?>
<form name="smaz" action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">

<?php
echo "<span style='color: green;'>************************************************************************************************</span><br>";

for($i = 0; $i != count($radky); ++$i) {
echo "<table>";
   echo "<meta charset='UTF-8'><tr><td width='800' bgcolor='#00cc00'><label> DATUM:</label><label>         ČAS:</label><label>       ID: </label><label>                                             JMÉNO: </label>";  
   echo "<tr><td width='800' bgcolor='#d6d6c2' style='color: blue'><br><hr><br>";
	echo '  '.$radky[$i].'><label><br><input type="checkbox" name="index[]" value="'.$i.'">Vyber pro smazání záznamu</label><br><'.'';
   
   echo "<hr></td></tr>";
   echo "</table>";
}
echo "<span style='color: green;'>************************************************************************************************</span><br>";
?>

<p align="right">
  <input type="submit" name="sub" value="Smazat vybraný řádek">
 </p>
Nahlásit jako SPAM
IP: 188.134.232.–
gna
~ Anonymní uživatel
515 příspěvků
14. 2. 2018   #10
-
+2
-
Zajímavé
Kit +

S obsahem souboru manipuluješ jen pokud máš v postu očekávaná data. Pokud na tu stránku přistoupíš normálně (klepni v adresním řádku na enter), tak tam post nebude. Pokud použiješ funkci pro znovunačtení stránky, tak se může opakovat i původní post.

Dá se to vyřešit přesměrováním na další (stejnou) stránku, které proběhne getem.

if (post) {
    smazat

    header('Location: ' . $_SERVER['REQUEST_URI']);
    exit;
}
Nahlásit jako SPAM
IP: 213.211.51.–
peter
~ Anonymní uživatel
3135 příspěvků
15. 2. 2018   #11
-
+1
-
Zajímavé

Nezminil jsem, ze to budes muset spravne osetrit? Ze to neni uplne nej reseni? Nemas unikatni identifikator radku. To presmerovani, viz gna, to muze resit. Ale je to jen takove zalepovani diry.
Lepsi by bylo, kdybys to rovnou resil pres db. Tam by mohl mit kazdy radek vlastni autoincrement id. Takze, pri zopakovani odeslani formulare by nemohl smazat neco, co uz neexistuje.

Jeste by slo odesilat velikost souboru nebo hash, mozna jen pocet radku. A pri mazani si porovnat, zda se rovna hash souboru a kdyz ne, tak akci ignorovat a pripadne upozornit uzivatele, ze neni neco v poradku, zmena se neulozila.

Nahlásit jako SPAM
IP: 2001:718:2601:258:9cc1:2f...–
peter
~ Anonymní uživatel
3135 příspěvků
15. 2. 2018   #12
-
+1
-
Zajímavé

Jo, navic neresis pripad se zamykanim souboru, flock. Kdyz ten program spusti 2 lide soucasne, muze to ten soubor poskodit.
A take muze nastat situace, kdy 2 lide daji smazat stejny radek 0. Coz je zase problem toho unikatniho id radku. reseni od gna to resi jen situaci pro jednoho clovek, kdyz se pokusi zopakovat odeslani strany, request, pres F5, treba. Ale uz ne 2 ruzni lide ze 2 ruznych pc.

Nahlásit jako SPAM
IP: 2001:718:2601:258:9cc1:2f...–
arcam0
Newbie
15. 2. 2018   #13
-
0
-

Ještě bych se rád zeptal, jak udělám správně abych mohl editovat určitý řádek když kliknu na button Editovat Záznam u záznamu u php (u každého zvlášť řádků)?

Nahlásit jako SPAM
IP: 188.134.232.–
peter
~ Anonymní uživatel
3135 příspěvků
15. 2. 2018   #14
-
0
-

Jestli se ptas stale na to same, co jsem psal, tak tam musi mit kazdy radek unikatni identifikator.
V sql bys pridal sloupec INT/AUTOINCREMENT. Ale u tveho souboru to asi nejde. Ty tam mas treba 5 radku a nemas urceno, ktery je ktery.

Sel by mozna pouzit cas, ale na obrazku v ukazce mas cas pro 2 radky stejny.

Slo by vytvaret kopii souboru. V prvnim souboru by jsi ocisloval radky a ve druhem odmazal podle cisla radku. Nebo si ukladej pomocny soubor se seznamem smazanych radku. Nactes prvni soubor a pri zobrazovani vynechas radky oznacene jako smazane. Muze to vypadat treba nejak takhle:
___ soubor1 ___
dataA
dataB
dataC
___ soubor2 ___
0,2
uzivateli zobrazis pak jen
soubor1, radek0, (nic, protoze je v seznamu smazanych)
soubor1, radek1, dataB
soubor1, radek2, (nic)
A nebo by slo vytvaret jen mapu
___ soubor2 ___
010 (0 nezobrazuj, 1 zobrazuj)
 

Nahlásit jako SPAM
IP: 2001:718:2601:258:a5f0:fb...–
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 38 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032018 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý