2017-05-14 16 views
0

私は現在、プロジェクトのバックエンドスクリプトで作業しています。私のPHPスキルは大丈夫です。しかし、JS/AJAX/jQueryのすべては理解できませんでした。ポップアップをモーダルに置き換えてPHPスクリプトを実行

[OK]を、私の問題:

私はビデオや写真セットのサムネイルを持っており、それぞれのカバー写真を設定します。私は現時点でポップアップスクリプトを使用しています。 しかし、私は購買したadminテーマ(Bootstrapに基づいています)を使用しています。モーダルを使用し、ポップアップを使用しないと、もっと良く見えます。

ポップアップからスクリプトを取得するために多くのことを試していますが、私は常に失敗します。

私は

<a class="btn red btn-outline sbold" href="<?php echo $website; ?>/modals/photo_cover.php?photoid=<?php echo $row['id']; ?>" data-target="#ajax" data-toggle="modal"> Generiere Thumbnails </a> 

でモーダルを開くこれは私がまた私のページに追加することを、プリローダーのモーダルを開きます。私はこれを望んでいます、私は将来、親指の自動生成を追加したいからです。したがって、親指が生成される間にローダーを表示する必要があります。

<div class="modal fade bs-modal-lg" id="ajax" role="basic" aria-hidden="true"> 
    <div class="modal-dialog"> 
    <div class="modal-content"> 
     <div class="modal-body"> 
     <img src="<?php echo $website; ?>/assets/global/img/loading-spinner-grey.gif" alt="" class="loading" /> 
     <span> &nbsp;&nbsp;Generiere Thumbnails ...</span> 
     </div> 
    </div> 
    </div> 
</div> 

その後(外部)モーダルは私のスクリプトとのオープンとなります。

<?php 
include_once ('../classes/LS.php'); 
include_once ('../inc/config.php'); 
?> 
<style> 
label > input { visibility: hidden; position: absolute; } 
label > input + img { cursor:pointer; border:2px solid transparent; } 
label > input:checked + img { border:2px solid #f00; } 
</style> 
<div class="modal-header"> 
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button> 
    <h4 class="modal-title">Galerievorschau</h4> 
</div> 
<div class="modal-body"> 
    <div class="row"> 
    <div class="col-md-12"> 
<?php 
if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    $sql = "UPDATE content_pic_db SET pic_poster_file = :pic_poster_file WHERE id = :id"; 
    $stmt = $dbh1->prepare($sql); 
    $stmt->bindParam(':id',    $_GET['photoid']); 
    $stmt->bindParam(':pic_poster_file', $_POST['poster']); 
    $stmt->execute(); 
?> 
     <div class="portlet-body"> 
     <div class="note note-danger"><p>Klicke auf ein Bild um es als Vorschaubild f&uuml;r die Galerie festzulegen.</p></div> 
     <div class="row"> 
      <div class="col-sm-12 col-md-12">Das Vorschaubild wurde erfolgreich Deiner Galerie zugewiesen. Du kannst jetzt dieses Fenster schliessen.</div> 
     </div> 
     </div> 
<?php } else { ?> 
     <div class="portlet-body"> 
     <div class="note note-danger"><p>Klicke auf ein Bild um es als Galerievorschau festzulegen.</p></div> 
     <div class="row"> 
      <form id="preview" method="POST"> 
<?php 
if (!empty($_GET['photoid'])) { 
    $stmt = $dbh1->prepare('SELECT pic_count, pic_path FROM content_pic_db WHERE id = :id'); 
    $stmt->execute(array(':id' => $_GET['photoid'])); 
    $row = $stmt->fetch(PDO::FETCH_ASSOC); 
    $pfad = $row['pic_path'] . '/thumbs/'; 
    $scan = glob($pfad . "*.{jpg}",GLOB_BRACE); 
    for ($i = 0; $i<count($scan); $i++) { 
    if (strlen($scan[$i]) >= 3) { 
?> 
      <div class="col-sm-6 col-md-6"> 
       <label class="thumbnail"> 
       <input type="radio" name="poster" value="<?php echo substr($scan[$i], 50); ?>" /> 
       <img title="Klicke auf ein Bild um es als Vorschau auszuw&auml;hlen" src="<?php echo $website; ?>/stream_g.php?id=<?php echo $_GET['photoid']; ?>&file=<?php echo substr($scan[$i],50); ?>" /> 
       </label> 
      </div> 
<?php 
     } 
    } 
    } 
} 
?> 
      </form> 
     </div> 
     </div> 
    </div> 
    </div> 
</div> 
<div class="modal-footer"><button type="button" class="btn red" data-dismiss="modal">Fenster schliessen</button></div> 
<script>$('input[name=poster]').change(function() { $("#preview").submit(); });</script> 

そしてここでは私の問題を始めています。

モーダルは開いていますが、画像を選択すると(ラジオボタンを画像で置き換える)、カバーとしてモーダルは閉じられ、データベースに何も書き込まれません。 ポップアップとしてすべてが機能していますが、モーダルではありません。

私はJS/AJAX/jQueryを使用してデータベースに書き込む必要があると思います。しかし、私はどのように...私はすでに多くのtutのを読むが、私はそれがどのように動作するのか分からない。

は、誰かが、私はこの作業を取得する方法をステップバイステップで私を説明することができれば...いい

そして、私はそれが終了した場合、スクリプトを実行し、情報を取得する方法を知っておく必要があります。私が前に言ったように、私は親指を生成するオプションを追加したい。だから私はプリローダーのモーダルを開き、親指を生成したいと思います。終了したら、カバーを選択するための2番目のモーダルを表示する必要があります。

答えて

0

JS(jQueryまたはAjax)を使用してデータベースに書き込むことはできません。 node.js(サーバー指向のjs)のようなフレームワークを使用することだけが可能ですが、このように行動する必要はありません。

ネイティブJavascriptが

見て、あなたは、データベースと対話するためにPHPを使用する必要があり、バックエンドの言語ではありません。 Javascriptはこのレベルでフロントエンド言語です(node.jsは使用しないことを考慮してください、これは別のものです:p)。ですから、あなたは次のようにWeb開発を考慮することができます:

FRONT END(クライアント側)|バックエンド(サーバー側)

[HTML + CSS] [JS] < - > [AJAX] < - > [PHP] [SQL]

あなたのページには、物事を作りたい場合動的に、あなたは別の方法ですべてを構築しなければなりません。

私はあなたが働いて

のこのようconsidereすることをお勧め[HTML] - > [インポートのjQueryをとAjaxリクエストを書く] - index.htmlを(スクリプトのみ)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script type="application/javascript"> 
 
    $.ajax({ 
 
      type: 'post', 
 
      dataType: 'json', 
 
      url: 'request.php', 
 
      success: function(data){ //Building an array using database datas directly in the body 
 
       var content = "<table><tr><th>Lastname</th><th>Firstname</th><th>Email</th></tr>"; 
 
       for(i = 0; i < data.length; i++) { 
 
        content += "<tr><td>" + data[i].lastname + "</td><td>" + data[i].firstname + "</td><td>" + data[i].email + "</td></tr>"; 
 
       } 
 
       content += "</table>"; 
 
       document.body.innerHTML += content; 
 
      } 
 
    }); 
 
</script>

[PHP - >データベースをリクエストしてデータを返す] - request.php

<?php 
 

 
$dbname = "YOUR DATABASE NAME HERE"; 
 
$host = "DATABASE HOST ADDRESS HERE"; 
 
$user = "LOGIN USERNAME HERE"; 
 
$pass = "LOGIN PASSWORD HERE"; 
 

 
try { 
 
    $bdd = new PDO('mysql:host='.$host.';dbname='.$dbname.';charset=utf8', $user, $pass); 
 
} 
 
catch (Exception $e) { 
 
    die('Erreur : ' . $e->getMessage()); 
 
} 
 
$table = "TABLE NAME HERE"; 
 
$colonnes = "*"; //COLUMNS TO SELECT HERE, * FOR ALL 
 
$request = $bdd->query('SELECT ' . $colonnes . ' FROM ' . $table); //SQL QUERY 
 

 

 
/* 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 
% BUILDING THE TABLE TO RETURN     % 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 

 
TABLE STRUCTURE EXAMPLE : 
 

 
------------------------------------ 
 
| id | lastname | firstname | email | 
 
------------------------------------ 
 
*Line 1* 
 
*Line 2* 
 
*Etc...* 
 
*/ 
 

 
$i = 0; 
 
foreach($request as $req) { 
 
    $table[$i]['lastname'] = $req['lastname']; 
 
    $table[$i]['firstname'] = $req['firstname']; 
 
    $table[$i]['email'] = $req['email']; 
 
    $i++; 
 
} 
 

 
echo json_encode($table); //echo will show datas when executing this script, the ajax request will take every showed data in its success method 
 

 
exit(); 
 

 
?>

明らかに、この作業の方法論を使用すると、あなたのウェブサイトの各ページがHTMLファイルであることになります。 PHPスクリプトのみが.php拡張子を使用しています。これは、私のために働くよりセクシーな方法です^^

関連する問題