[ bobans72 @ 06.03.2017. 03:00 ] @
Potrebno mi je da iz delphija sa idhttp komponentom izvršim pretragu u ovoj php skripti ali mi ne vraća podatke ispravno
nego mi vrati kod iz skripte u Memo1, a kada pokrenem skriptu u localhostu u browseru i unesem (id) onda mi u labelu prikaže ime korisnika kako treba. Kako da prikažem rezultat pretrage to jest u ovom slučaju (Ime korisnika) šta nije u redu ?

Delphi Search.pas
Code:

procedure TForm1.Button1Click(Sender: TObject);
var
data: TIdMultiPartFormDataStream;
   begin
   data:= TIdMultiPartFormDataStream.Create;
   try
   data.AddFormField('id',Edit1.Text);
   data.AddFormField('search','Pronadji');
   IdHTTP1.HandleRedirects:=True;
   IdHTTP1.Request.ContentType:='application/x-www-form-urlencoded';
   Memo1.Lines.Text:= IdHTTP1.Post('http://localhost/search.php?id=', data);
   finally
   data.Free;
   end;
end;


PHP search.php
Code:

<?php
$dsn = 'mysql:host=localhost;dbname=test_db';
$username = 'root';
$password = '';

try{
    // Povezivanje sa MySQL bazom
    $con = new PDO($dsn,$username,$password);
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch (Exception $ex) {

    echo 'Nije povezan !'.$ex->getMessage();

}

$id = '';
$ime = '';
function getPosts()
{
    $posts = array();

    $posts[0] = $_POST['id'];
    $posts[1] = $_POST['ime'];
    return $posts;
}

//Traži i prikaži podatke

if(isset($_POST['search']))
{
    $data = getPosts();
    if(empty($data[0]))
    {
        echo 'Unesite (Id) korisnika za pretragu !';
    }  else {

        $searchStmt = $con->prepare('SELECT * FROM korisnici WHERE id = :id');
        $searchStmt->execute(array(
        ':id'=> $data[0]
        ));

        if($searchStmt)

            $user = $searchStmt->fetch();

            if(empty($user))
            {
              echo 'Nema podataka za ovaj (Id) !';
            }

            $id    = $user[0];
            $ime = $user[1];

        }

    }
?>
<!DOCTYPE html>
<html>
<head>
<title>Pretraga</title>
<style type="text/css">
</style>
</head>
<body>
<form action="search.php" method="POST"><br>
<input type="text" name="id" placeholder="Id" value="<?php echo $id;?>"><br><br>
Ime:<font color="green"><label for="fname"><?php echo $ime;?></label></font><br><br>
<input type="submit" style= "cursor:pointer" name="search" value="Pronadji">
</form>
</body>
</html>
[ savkic @ 06.03.2017. 03:21 ] @
> Potrebno mi je da iz delphija sa idhttp komponentom izvršim pretragu u ovoj php skripti ali mi ne vraća
> podatke ispravno
> nego mi vrati kod iz skripte u Memo1, a kada pokrenem skriptu u localhostu u browseru i unesem (id) onda mi u
> labelu prikaže ime korisnika kako treba. Kako da prikažem rezultat pretrage to jest u ovom slučaju (Ime korisnika) šta nije u redu ?

Instaliraj wireshark (ili nešto drugo slično) i uporedi kako izgleda header i body requesta koji šalje browser a kako izgleda kad šalje tvoj program. Verovatno to možeš dobiti i u PHPu ali ne znam kako.
[ captPicard @ 06.03.2017. 11:41 ] @
Za header:

Code:
<?
foreach (getallheaders() as $name => $value) {
echo "$name: $value\n";
}
?>
[ _deran_ @ 07.03.2017. 20:32 ] @
Citat:
...nego mi vrati kod iz skripte u Memo1

U memo ti vrati baš PHP kod ili HTML koji je generisan?

Kod 'http://localhost/search.php?id=' , deo "?id=" je višak mada ne bi trebalo da smeta.
[ bobans72 @ 10.03.2017. 06:59 ] @
Hvala na odgovorima ali i dalje pokušavam da nadjem rešenje i ništa.
Probao sam i bez onog id= ali mi isto vraća kompletan kod umesto samo traženi podatak.

Evo koji prikaz dobijam u memo:
Code:

<!DOCTYPE html>
<html>
<head>
<title>Pretraga</title>
<style type="text/css">
</style>
</head>
<body>
<form action="search.php" method="POST"><br>
<input type="text" name="id" placeholder="Unesite (Id)" value="13"><br><br>
Ime: <font color="#f44336"><label for="fname">boban</label></font><br><br><br>
<input type="submit" name="search" value="Pronadji"><br><br>

</form>
</body>
</html>

Nije prikazalo ceo kod na osnovu onog gornjeg kao sto je u skripti nego samo deo koda.
A ovo što je na kraju koda u labelu (boban) to je vratilo to mi i treba ali samo to a ne i ostali kod.
Sve sam pokušavao što sam se setio i nigde rešenja.
A sa ovim istim kodom u delphiju a skriptom ovom:
Code:

<?php
 echo "Pozdrav !!!";
?>

onda mi vrati samo 'Pozdrav !!!' kako bih i trebalo.
Ako neko ima još neko rešenje za ovo uvek dobrodošlo a ja ću u medjuvremenu i dalje isprobavati i guglati na netu.
A evo kako mi prikazuje u web browser-u:





[Ovu poruku je menjao bobans72 dana 10.03.2017. u 08:15 GMT+1]
[ captPicard @ 10.03.2017. 11:24 ] @
Jesi probao dodati parametar response?

npr.

Code (delphi):
procedure TForm1.Button1Click(Sender: TObject);
var
data: TIdMultiPartFormDataStream;
sResponse: TStringList;
   begin
   sResponse := TStringStream.Create;
   data:= TIdMultiPartFormDataStream.Create;
   try
   data.AddFormField('id',Edit1.Text);
   data.AddFormField('search','Pronadji');
   IdHTTP1.HandleRedirects:=True;
   IdHTTP1.Request.ContentType:='application/x-www-form-urlencoded';
   Memo1.Lines.Text:= IdHTTP1.Post('http://localhost/search.php?id=', data, sResponse);
   finally
   data.Free;
   end;
end;


i onda pogledaj šta dobiješ u response.
[ captPicard @ 10.03.2017. 11:26 ] @
I pogledaj ovo, liči mi na tvoj problem:

idhhtp post
[ bobans72 @ 10.03.2017. 13:25 ] @
Probao sam to juče a i sada ponovo tako da sada i ne vraca ono (boban) nego samo kod.
[ captPicard @ 10.03.2017. 13:53 ] @
A zasto uopce tako radis? Odvoji html dio od php. U php vrati rezultat i dobit ces u echo samo ime.
A zasto uopce imas html dio? Ta pretraga ti treba i na webu?
[ savkic @ 10.03.2017. 13:55 ] @
> Probao sam to juče a i sada ponovo tako da sada i ne vraca ono (boban) nego samo kod.

Ako sam ja dobro shvatio tebi radi iz browsera a ne radi iz tvog koda, ako je to tacno tebi ne treba odgovor iz tvoje php skripte vec sta je poslato php skripti.

Dakle, instaliraj WireShark:
1) startuj primer iz browsera i zabelezi sta je browser poslao
2) startuj primer iz tvog koda i zabelezi sta je tvoj program poslao
3) uporedi sacuvani sadrzaj iz 1) i 2), vidi sta su razlike i pogledaj sta u tvom kodu nedostaje.
[ bobans72 @ 10.03.2017. 15:16 ] @
Html deo mi nije potreban samo mi treba da iz delphija sa idhttp komponentom unosom (id) preko php skripte vrati podatke (Ime) iz baze.
html deo sam izbacivao ali mi nije ostali deo radio.
Šta bih trebao da ispravim u onom gore php-u ili on nije u upotrebi ?
Hvala ponovo na odgovorima.
A ono sa wiresharkom ću probati.
[ captPicard @ 10.03.2017. 15:29 ] @
Cim dodjem za komp ti posaljem primjer koji radi. Html dio ti uopce ne treba.
[ bobans72 @ 10.03.2017. 15:33 ] @
Hvala lepo čekam primer.
[ captPicard @ 10.03.2017. 16:17 ] @
Evo prvo šta sam izvukao iz svog koda i pojednostavio, mislim da če ti biti dovoljno za ono šta tebi treba. Ako se ne snađeš reci, pa pojasnim.

Delphi:

Code (delphi):

  function PostData(id, name, surname, country, dob, phone, mail, pb, place, address, part, spol: string): string;
  var
    lHTTP: TIdHTTP;
    lParamList: TStringList;
  begin
    lParamList := TStringList.Create;
    lParamList.Add('id=' + id);
    lParamList.Add('name=' + UTF8Encode(name));
    lParamList.Add('surname=' + UTF8Encode(surname));
    lParamList.Add('country=' + country);
    lParamList.Add('dob=' + dob);
    lParamList.Add('phone=' + phone);
    lParamList.Add('mail=' + mail);
    lParamList.Add('pb=' + pb);
    lParamList.Add('place=' + place);
    lParamList.Add('address=' + address);
    lParamList.Add('part=' + part);
    lParamList.Add('spol=' + spol);

    lHTTP := TIdHTTP.Create(nil);
    try
      Result := lHTTP.Post('http://test.olis.hr/swim.php', lParamList);
    finally
      lHTTP.Free;
      lParamList.Free;
    end;
  end;

var
  status: TStatusWindowHandle;
  d, m, y: Word;
  tempDate, tempSpol: string;
begin
  status := CreateStatusWindow('Molim pričekajte...');

  try
    dmSwimm.trSwimm.Active := true;

    with dmSwimm.dsetSwimmers do
    begin

      close;
      selectSQL.Text := 'select * from swimmers where updated = ''0'' ';
      open;
      first;

      while not EOF do
      begin
        edit;

        try
          tempDate := FieldByName('godina').AsString + '-01-01';
        except
          tempDate := '1900-01-01';
        end;

        tempSpol := 'M';
        if FieldByName('SPOL').AsString = '2' then
          tempSpol := 'F';


        if PostData(FieldByName('id').AsString,
          FieldByName('name').AsString,
          FieldByName('surname').AsString,
          FieldByName('country').AsString,
          tempDate,
          FieldByName('phone').AsString,
          FieldByName('mail').AsString,
          FieldByName('pb').AsString,
          FieldByName('place').AsString,
          FieldByName('address').AsString,
          FieldByName('part').AsString,
          tempSpol) = 'TRUE' then
          dmSwimm.dsetSwimmers.FieldByName('UPDATED').AsString := '1';

        post;
        next;
      end;

    end;

    dmSwimm.trSwimm.Commit;
    dmSwimm.trSwimm.Active := true;

  finally
    RemoveStatusWindow(status);
  end;


PHP:

Code (php):
<?
require "config.php";

$db = mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
mysql_select_db($db_name) or die(mysql_error());

$ID    = $_POST["id"];
$NAME  = $_POST["name"];
$SURNAME  = $_POST["surname"];
$COUNTRY  = $_POST["country"];
$DOB  = $_POST["dob"];
$PHONE  = $_POST["phone"];
$MAIL  = $_POST["mail"];
$PB  = $_POST["pb"];
$PLACE  = $_POST["place"];
$ADDRESS  = $_POST["address"];
$PART  = $_POST["part"];
$SPOL  = $_POST["spol"];

$strSQL = "REPLACE INTO swimmers (ID, NAME, SURNAME, COUNTRY, DOB, PHONE, MAIL, PB, PLACE, ADDRESS, PART, SPOL) VALUES ('" . $ID . "', '" . $NAME . "', '" . $SURNAME . "', ";
$strSQL = $strSQL . "'" . $COUNTRY . "', '" . $DOB . "', '" . $PHONE . "', ";
$strSQL = $strSQL . "'" . $MAIL . "', '" . $PB . "', '" . $PLACE . "', ";
$strSQL = $strSQL . "'" . $ADDRESS . "', '" . $PART . "', '" . $SPOL . "') ";

$objQuery = mysql_query($strSQL);

if ($objQuery) {
    echo "TRUE";
} else {
    echo "FALSE";
}
?>
[ bobans72 @ 10.03.2017. 17:32 ] @
Evo kako sam ovo prepravio ali ne radi prikazuje grešku u delphi-ju (HTTP/1.1 500 Internal Server Error.).
A kada pokrenem php skriptu u web browseru prikaže mi (Stranica hosta localhost ne funkcioniše Host localhost trenutno ne može da obradi ovaj zahtev. HTTPERROR 500).
Bazu koristim preko phpmyadmin a host je sada trenutno localhost a biće postavljena php skripta sa bazom na drugom serveru pa sam jedan deo tvog koda iz delphija
izostavio možda je tu greška.

Delpi code:

Code:

procedure TForm1.Button3Click(Sender: TObject);
 var
    lHTTP: TIdHTTP;
    lParamList: TStringList;
  begin
    lParamList := TStringList.Create;
    lParamList.Add('id=' + Edit1.Text);

    lHTTP := TIdHTTP.Create(nil);
    try
      Memo1.Lines.Text := lHTTP.Post('http://localhost/search.php', lParamList);
    finally
      lHTTP.Free;
      lParamList.Free;
    end;
end;


PHP code:

Code:

<?php
   $db_host = 'localhost';
   $db_user = 'root';
   $db_pass = '';
   $db_name = 'test_db';

$db = mysql_connect($db_host, $db_user, $db_pass) or die('Ne mogu se povezati: ' .mysql_error());
mysql_select_db($db_name) or die(mysql_error());

$ID    = $_POST["id"];
$NAME  = $_POST["fname"];


$strSQL = "REPLACE INTO korisnici (ID, NAME) VALUES ('" . $ID . "', '" . $NAME ."') ";

$objQuery = mysql_query($strSQL);

if ($objQuery) {
    echo "TRUE";
} else {
    echo "FALSE";
}
?>



[Ovu poruku je menjao bobans72 dana 10.03.2017. u 18:45 GMT+1]
[ captPicard @ 10.03.2017. 17:47 ] @
Vrlo vjerojatno neka caka sa sigurnosti oko localhosta. Ovo šta vidim bi moralo radiit. Ako hočeš pošaljem ti na privatnu poruku pristup do mojeg hosta sa test bazom pa da možeš isprobati?
[ bobans72 @ 10.03.2017. 18:15 ] @
Može svaka pomoć dobrodošla.

A unosom u editu u delphiju ovaj broj (12345) mi vraća u memo broj 12345 kako bih ovaj kod mogao da primenim sa bazom da vuče uneti (id) koji se nalazi u bazi
a da mi vrati (ime) to mi treba a mislim da bih to mogao samo neki search u php kodu a bez onog inputa za unos u html-u to ne znam kako bih moglo da se napiše.

Code:

<?php
if ($_POST['id']== 12345)
{
   echo "Vraćeni broj {$_POST['id']} je ispravan !";
}
else
{
   echo "Nije dozvoljeno !!!";
}
?>
[ captPicard @ 10.03.2017. 20:16 ] @
Napravit ču ti account i test bazu kod sebe i poslati ti podatke za pristup. 20ak minuta.

Napraviš select ime from tablename where id = :id i staviš ime u varijablu $ime kako sam dolje dao primjer, i onda echo $ime

Code (php):
<?php
   require 'config.php';
   
   $db = mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
   mysql_select_db($db_name) or die(mysql_error());
   
   $query = "SELECT res.*, CONCAT(sw.NAME, ' ', sw.SURNAME, ' (', sw.COUNTRY, ')') as FULLNAME FROM results res LEFT JOIN swimmers sw ON ";
   $query = $query . "res.ID = sw.ID WHERE ";
   $query = $query . "res.TYPE <> 'c' AND res.IDACTIVE = '1' ORDER BY res.PASSTIME DESC";
   $result = mysql_query($query);
   
   function klasa($point_value) {
        if ($point_value == '0') return 'START';
        if ($point_value == '1') return '1500';
        if ($point_value == '2') return '3000';
        if ($point_value == '3') return '5000';
   }
   
   print "
     <thead>
          <tr>
               <th class='text-center'>ID</th>
               <th class='text-left'>Name</th>
          <th class='text-center'>Point</th>
          <th class='text-center'>Time</th>
          <th class='text-center'>Race time</th>
          </tr>
   </thead>
   <tbody class='table-hover'>"
;
   
          while($row = mysql_fetch_array($result))
          {
               echo "<tr><td class='text-center'>" . $row['ID'] . "</td>";
          echo "<td class='text-left'>" . $row['FULLNAME'] . "</td>";
          echo "<td class='text-center'>" . klasa($row['POINT']) . "</td>";
          echo "<td class='text-center'>" . $row['VRIJEME'] . "</td>";
          echo "<td class='text-center'>" . $row['ID'] . "</td></tr>";
          }
   mysql_close();
   print " </tbody>";
   ?>
[ captPicard @ 10.03.2017. 20:23 ] @
Ustvari, pošalji mi svoj php file, ja ču ti sve postaviti i reči ti koji url da postaviš. Možeš i na PM
[ captPicard @ 10.03.2017. 20:31 ] @
Evo ti:

Code:
http://www.olis.hr/bobans/upit.php?id=1


Imaš unutra 2 unosa,

1 boban
123 ivan
[ captPicard @ 10.03.2017. 20:55 ] @
Evo, ovo radi:

Code (delphi):
 var
    lHTTP: TIdHTTP;
    lParamList: TStringList;
  begin
    lParamList := TStringList.Create;
    lParamList.Add('id=' + Edit1.Text);

    lHTTP := TIdHTTP.Create(nil);
    try
      Memo1.Lines.Text := lHTTP.Post('http://www.olis.hr/bobans/upit.php', lParamList);
    finally
      lHTTP.Free;
      lParamList.Free;
    end;
[ bobans72 @ 11.03.2017. 06:49 ] @
To je ono što mi je trebalo.
Bravo care !
Ako hoćete da mi pošaljete skriptu poslao sam vam privatnu poruku sa mailom.
[ captPicard @ 11.03.2017. 12:11 ] @
Poslao :)