logo
12.03.2019 12:30
1
Ahoj lidi,

mám takový problém nezapisuje mi to do databáze:

Tohle je html:

Kód:
<form method="POST" id="add_name" >      
<div class="form-group">
<label class="control-label col-sm-2" for="repeater">Repeater</label>
<div class="col-sm-10 input_fields_container_part"> 
{foreach $_POST['repeater'] as $item}
<input type="text" class="form-control" name="repeater[]" id="repeater" placeholder="Zadejte položky" value="{$item}">
{/foreach}


<button class="btn btn-sm btn-primary add_more_button">Přidat další pole</button> </div>
<div id="odeslano"></div>

 	</div> 
				<div class="form-group">        
					<div class="col-sm-offset-2 col-sm-9">
						<input type="submit" class="btn btn-default" id="submit" name="submit" >
					</div>
		</div>	    
</form>

tohle je jquery a ajax:

Kód:
$(document).ready(function(){
var max_fields_limit      = 50; //set limit for maximum input fields
    var x = 1; //initialize counter for text box
    $('.add_more_button').click(function(e){ //click event on add more fields button having class add_more_button
        e.preventDefault();
        if(x < max_fields_limit){ //check conditions
            x++; //counter increment
            $('.input_fields_container_part').prepend('<div><input type="text" class="form-control" name="repeater[]"/><a href="#" class="remove_field" style="margin-left:10px;">Remove</a></div>'); //add input field
        }
    });  
    $('.input_fields_container_part').on("click",".remove_field", function(e){ //user click on remove text links
        e.preventDefault(); $(this).parent('div').remove(); x--;
    });
              
   $('#submit').click(function(){ 
   
    
var data = [];
$('input[name="repeater[]"]').each( function() {
data.push(this.value);
});
         
  
           $.ajax({
        type: "POST",
        url: "http://tvorbawebupraha.tode.cz/app/repeater.php",
        data:{ "formdata" : data },
        success: function( returnData ){
             $('#odeslano').text( returnData ); 
        }
    });    
           
           
           
           
      });   

    
    });
A tohle je php:

Kód:
 <?php 
  if(isset($_POST['submit'])){ 
    
     $select = $_POST["formdata"]["repeater"];
    foreach ((array)$select as $polozky) {
        $value .= $polozky ."<br />";
    }
 
 $number = count($_POST["formdata"]["repeater"]);  
 if($number > 0)  
 {  
      for($i=0; $i<$number; $i++)  
      {      
           if(trim($_POST["formdata"]["repeater"][$i] != ''))  
           {    
                $sql = dibi::query("INSERT INTO repeater(repeater) VALUES('".$_POST["formdata"]["repeater"][$i]."')");  
               
           }  
      }  
      echo "Data Inserted";  
 }  
 else  
 {  
      echo "Please Enter Name";  
 }
 
 
echo $value;
 
} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
   
 ?>
Neinsertuje to data do databáze nevíte někdo kde je problém ?

Co se právě děje na Webtrhu?

12.03.2019 13:17
2
!!! Dokumentace - https://dibiphp.com/en/documentation

WARNING, never concencate parameters to SQL, the vulnerability would arise SQL injection
Kód:
$database->query('SELECT * FROM users WHERE id = ' . $id); // BAD!!!
A ty tam prskneš:
Kód:
$sql = dibi::query("INSERT INTO repeater(repeater) VALUES('".$_POST["formdata"]["repeater"][$i]."')");
Proč nepoužíváš dle dokumentace "$database->query"? Máš tam "$sql = dibi::query", jako kdybys s výsledkem nějak pracoval = což se neděje.

Za další, vypisuje se správně "$_POST["formdata"]["repeater"][$i]"? Kontroloval si to?
12.03.2019 13:25
3
Když dám consoli tak mi to vypíše data v poli..přes ten javascript......s těmi pak pracuji v tom html pomocí foreach...., ale jak to správně zapsat, aby to uložilo ty pole do databáze ? $i je jen z cyklu for, aby je to tam rovnalo pod sebe id tam má autoincrement....

Když je registrace: v set_dibi.php tak mohu použít dibi::query to píšou v dokumentaci. jak tam správně zapsat ten post ?


Kód:
if(strpos($_SERVER['HTTP_HOST'], 'localhost')!==false) {
	dibi::connect(array(
		'driver'	=> 'mysql',
		'host'		=> 'localhost',
		'username'	=> 'root',
		'password'	=> 'vertrigo',
		'database'	=> 'babinec',
		'charset'	=> 'utf8',
	));
}
else {
	dibi::connect(array(
		'driver'	=> 'mysql',
		'host'		=> '',
		'username'	=> '',
		'password'	=> '',
		'database'	=> '',
		'charset'	=> 'utf8',
	));
}
12.03.2019 15:58
4
Na webu máš napsaný Vytvářím webové stránky bez redakčních systémů nebo na redakčních systémech. Řekneš mi proč podnikáš v něčem, co vůbec neumíš? Ty pseudo programátore?
12.03.2019 16:04
5
Nemohu znát všechno....šablonu jsem nedělal.....co neznám to si zaplatím..máte v tom nějaký problém, buď se vzdělám nebo si to zaplatím.... nějak to dopadne..., a proč sem chodíte vy ? Abyste hledal chyby na jiných, ale ta základní je proč tu jste píšete mi tohle namísto toho, abyste buď poradil nebo držel hubu, protože jste obyčejnej čůrák co se tu do někoho naváží...a takový já nemám rád. Jste mega buran....

Proč by to nešlo ? Alespoň se posouvám... pořád se posouvat..to se naučte ...a nestěžujte si....jinak původně jsem kodér to programátorství....na mě nahrnul zadavatel já to vzal a jde to se posouvat jde to..zřejmě se neposouváte tak tomu nerozumíte.


Jinak za tento post vás již považuji za megačůráka, člověka neempatického a ubohého....vůbec, už nepište.
12.03.2019 17:53
6
problém bude podle mě v řádku if(trim($_POST["formdata"]["repeater"][$i] != '')) ta první závorka má končit jinde...možná tam těch problémů bude víc
12.03.2019 19:18
7
Ahoj a díky za tip, ale je tam tato chyba u thoto... zkouším to připojení k databázi.... je to napsané podle dibi dokumentace...chci jenom výpis, abych mohl pracovat s databází....includuji soubor a píše mi to tuto chybu: ten soubor , který inkluduji je tady o post výše, kde píši, akorát jsem tam promazal přísstupy...jinak je mám samozřejmě...

Fatal error: Class 'dibi' not found in /home/users/ajaxtodecz/tvorbawebupraha.tode.cz/web/app/repeater.php on line 18



Kód:

<?php 
  error_reporting(E_ALL);
ini_set('display_errors', '1');
  
 
 require_once(__DIR__ . '/set_dibi.php');

  

 


 $result = dibi::query('SELECT * FROM repeater');

foreach ($result as $n => $row) {
    print_r($row);
}
 
unset($result);
12.03.2019 19:28
8
Ty vobec nevies co robis :) podla tohto tu neovladas ani zaklady.
12.03.2019 19:36
9
Původně odeslal craZymans
Ty vobec nevies co robis :) podla tohto tu neovladas ani zaklady.

Tak mě pouč, já budu rád, aspoň se něco dozvím.....nebo taky jenom za prachy za 1 000 na hodinu ? Co tě sere, že napíšeš takový komentář ? Máš zřejmě problém sám se sebou ne ? :)

---------- Příspěvek doplněn 12.03.2019 v 19:39 ----------

Původně odeslal craZymans
Ty vobec nevies co robis :) podla tohto tu neovladas ani zaklady.
Existuje ve stejné adresářové struktůře set_dibi.php a repeater.php mělo by to chodit bez toho, ale nechodí.....a vypisuje to tu chybu co jsem posílal....tak zkouším jestli to bude chodit a ani s tím to nechodí..... co dál dej tip ? Nebo jenom za litr ?

---------- Příspěvek doplněn 12.03.2019 v 19:48 ----------

Původně odeslal craZymans
Ty vobec nevies co robis :) podla tohto tu neovladas ani zaklady.
Když jsem to zkoušel s tou proměnnou a vytvořením nové instance a uložení do $database taky nic...

Dokumentace | dibi

Ještě jsem našel nějakou obdobnou chybu na google, kterou upravoval Grudl...ale proč teď ?

Nebo je třeba registrovat to php v set.php ? A proč... vysvětlit prosím jinak si opravdu budu myslet, že máte problém jenom sám se sebou a se svým egem.

---------- Příspěvek doplněn 12.03.2019 v 20:09 ----------

Původně odeslal craZymans
Ty vobec nevies co robis :) podla tohto tu neovladas ani zaklady.
Co když je tam třeba composer a sám se updatuje.....
12.03.2019 20:52
10
Class Dibi not found. Co to asi muze byt. Ano, ta trida tam proste neni :)

Patrej dal. Treba zlobi verze PHP, kontroloval jsi? Dibi ma nejakej zakladni load podivnou cestou.

Jsi na localu nebo serveru? Co __DIR__? Napis absolutni cestu bez konstant.
12.03.2019 21:13
11
Na serveru na hostingu.... dir je složka kde se to nachází neni možné, že je to na serveru dnesak mi opravovali ftp ? nešlo.

tady y to ukazuje, když odendám ten require tak se nic nezmění..

require_once(__DIR__ . '/set_dibi.php');

http://tvorbawebupraha.tode.cz/app/repeater.php


tam jsem to odkryl v htacces jinak to musí být znepřístupněný.....nechce to kvůli tomu někde nějakou registraci třeba v run .php... našel jsem tam frontend.php ten je ve stejném adresáři jako repeater.php ?

A tohle je run.php

Kód:
<?php
//echo 'Aktualizuji data...';die();
session_start();	//	PHP session používám na krátkodobé uchování stavů

//	načtení základních funkcí a tříd
require_once(APP_ROOT.'lib/dibi.min.php');
$casessDir=APP_ROOT.'autorun/';
$dir=scandir($casessDir);
foreach($dir as $item) if(preg_match("/\\.php$/i", $item)) require_once($casessDir.$item);

//	spuštění aplikace
$sChangeKey=0;
$sIgonre=0;
jfApp::Init(APP_ROOT.'data/', $eMode=1, $sChangeKey, $sIgonre);
//	pořešení případného přesměrování
$url=explode('?', $_SERVER['REQUEST_URI'], 2);
if($url[0]!='/'&&preg_match('/\/$/i', $url[0])) {
	$url[0]=substr($url[0],0,-1);
	jfApp::Close(implode('?', $url) );
}

//	načtení konfigurace
include_once(APP_ROOT.'set.php');

//	načtení pomocných funkcí
include_once(APP_ROOT.'fce.php');




$path=explode('/', $url[0]);
//	začátek šablony
require_once(APP_ROOT.'lib/latte/src/latte.php');
$tplData=array('contentTpl'=>'', 'title'=>'Stránka neexistuje', 'isHP'=>0, 'db_jednotky'=>$jednotky);
$template='main.latte';

$destinaceList=0;


$dt=date('Y-m-t H:i:s');




$tplData['mainDrobecky']=array(array('nazev'=>'DoSvého', 'url'=>'/'));
if($path[1]=='clanky'&&$url[0]!='/clanky') $tplData['mainDrobecky'][]=array('nazev'=>'Magazín', 'url'=>'/clanky');
if(count($path)==2&&$path[1]==''){	//	úvodka
	require_once(APP_ROOT.'frontend.php');
	$tplData['isHP']=1;
	$tplData['slider']=dibi::query('SELECT * FROM `slider` WHERE `published` <= %s AND `timeout` >= %s ORDER BY `priority` DESC LIMIT 50', $date, $date)->FetchAll();
	//jfApp::x($tplData['slider']);die();
}
else{
	$fn=APP_ROOT.'pages/'.$path[1].'/'.$path[1].'.php';
	if(file_exists($fn)) require_once($fn);	//	speciální stránky
	else{
		require_once(APP_ROOT.'frontend.php');//$tplData['vystup']=GetPG($url[0]);	//	běžné stránky
   ;

	}
}

$tplData['mainDrobecky'][count($tplData['mainDrobecky'])-1]['posledni']=1;




$tplData['cokies_info']=1;
if(isset($_COOKIE['cookies_ok'])&&$_COOKIE['cookies_ok']==1) $tplData['cokies_info']=0;
//jfApp::x($path);

//	if(isset($_GET['shData'])) {jfApp::x($tplData);die();}

//	šablona
$tpl=new Latte\Engine;
$tpl->setTempDirectory(APP_ROOT.'/data/tpl');
$parameters=array('data'=>$tplData, 'post'=>$_POST, 'get'=>$_GET, 'cookie'=>$_COOKIE, 'session'=>$_SESSION, 'host'=>$_SERVER['HTTP_HOST'], 'url'=>$url, 'path'=>$path, 'path_count'=>count($path), 'js_font'=>'<script>try{Typekit.load({ async: true });}catch(e){}</script>');//	$_SESSION
$tpl->addFilter('CzechDate', function ($sqlFormat, $withSec=false, $withTime=true) {
    return jfApp::CzechDate($s, $withSec, $withTime);
});
$tpl->addFilter('CzechDate2', function ($sqlFormat, $withSec=false, $withTime=true) {
	return jfApp::CzechDate2($sqlFormat, $withSec, $withTime);
});
$tpl->addFilter('myBr', function ($str) {
	return nl2br(htmlspecialchars($str));
});
$tpl->addFilter('myTrim', function ($str) {
	return myTrim($str);
});
$tpl->addFilter('myImg', function ($str) {
	return myImg($str);
});
$tpl->addFilter('myNumber', function ($str) {
	return number_format($str, 0, ',', ' ');
});
$tpl->render(APP_ROOT.'templates/'.$template, $parameters);
// or $html = $tpl->renderToString('template.latte', $parameters);

//jfApp::x($tplData);

//jfApp::x($_SERVER);
jfApp::Close();






//jfApp::X($_SERVER);
jfApp::sSet($namespace='ns1', $name='n', $value=1123);
jfApp::sClear();


---------- Příspěvek doplněn 12.03.2019 v 21:37 ----------

Když jsem dal tohle tak není definována....

echo (defined('__DIR__') ? '__DIR__ is defined' : '__DIR__ is NOT defined' . PHP_EOL);
13.03.2019 08:21
12
Jak jsem psal:

Co __DIR__? Napis absolutni cestu bez konstant.

Vzdyt jen staci cist, co to pise za chyby a musis vedet.
13.03.2019 09:58
13
Původně odeslal musil.david
Jak jsem psal:

Co __DIR__? Napis absolutni cestu bez konstant.

Vzdyt jen staci cist, co to pise za chyby a musis vedet.
Tohle to vyhodilo s absolutní cestou: require_once('http://tvorbawebupraha.tode.cz/app/set_dibi.php');

Fatal error: require_once(): Failed opening required 'http://tvorbawebupraha.tode.cz/app/set_dibi.php' (include_path='.:/opt/remi/php56/root/usr/share/pear:/opt/remi/php56/root/usr/share/php:/usr/share/pear:/usr/share/php') in /home/users/ajaxtodecz/tvorbawebupraha.tode.cz/web/app/repeater.php on line 5

---------- Příspěvek doplněn 13.03.2019 v 10:58 ----------

nikde jsem tam nenašel toto:

File libs/Dibi.php | Dibi 2.3.5 API documentation
13.03.2019 10:59
14
Sorry, myslel jsem relativni samozrejme :)

Posli mi nejakej pristup. To me fakt zajima, co se tam deje.
13.03.2019 11:01
15
Původně odeslal musil.david
Sorry, myslel jsem relativni samozrejme :)

Posli mi nejakej pristup. To me fakt zajima, co se tam deje.
tak mi pošli prosím email a já ti pošlu přístup do ftp.

---------- Příspěvek doplněn 13.03.2019 v 11:13 ----------

Původně odeslal musil.david
Sorry, myslel jsem relativni samozrejme :)

Posli mi nejakej pristup. To me fakt zajima, co se tam deje.
máš to ve zprávě...

---------- Příspěvek doplněn 13.03.2019 v 12:05 ----------