Beste forumleden,

Ik zit met een complex probleem waar ik niet uit ga komen als ik het zelf blijf proberen, ik zal het zo duidelijk mogelijk beschrijven.

In het bestand: mijn-beoordelingen.php heb ik de volgende code staan:

 $('#results').load("../includes/autoloadscroller/autoload_process-mijn-beoordelingen.php", {'page':track_click}, function() {track_click++;}); //initial data to load

  //post page number and load returned data into result element
                $.post('../includes/autoloadscroller/autoload_process-mijn-beoordelingen.php',{'page': track_click}, function(data) 
                {
               
                    $(".load_more").show(); //bring back load more button
     
                    $("#results").append(data); //append data received from server




Dus hij haalt uit het bestand autoload_process-mijn-beoordelingen.php beoordelingen op. Nu ben ik bezig in dit bestand om te kunnen reageren op een beoordeling, dit doe ik via een formulier, maar er lijkt niets in te zitten of het wordt eenmalig geladen, ik weet het niet precies.

Dit is de gehele code:

<?php

$database = new database();

        $page_number = filter_var($_POST["page"], FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_STRIP_HIGH);

	        //get current starting point of records
	        $position = ($page_number * $items_per_page);
	        
	        //Limit our results within a specified range. 
	         $q = ("SELECT * FROM beoordelingen WHERE reviewer_id = ".$_SESSION['fbpuserid']." AND status = 1 ORDER BY id DESC LIMIT $position, $items_per_page");
	         $results = $database->query($q);
             $totaleBeoordeling = mysqli_num_rows($results);

	        if ($results) 
            { 
		        //output results from database
		       $beoordelingen = array();
               
		        
            while($rows = mysqli_fetch_assoc($results))
		    {
                
                
                
   
                
                
                $website = getCurrentDomeinNameById($rows['domein_id']);
                $beoordelingSterrenScore = $rows['score'];
                $beoordelingScore = $rows['score'] * 2;
                
                
                 if ($beoordelingScore == 10 || $beoordelingScore == 0)
                 {
                   $beoordelingScore = $beoordelingScore;
                 }
                 else
                 {
                     $beoordelingScore = number_format($beoordelingScore, 1);
                 }
                
                
       
                //switch voor de icoontjes:
               
               switch ($rows['score'])
               {
               
                   case 1:
                   $beoordelingIcon = 'fa fa-frown-o rood beoordelingen-comment'; 
                   break;
                   
                   case 2:
                   $beoordelingIcon = 'fa fa-frown-o rood beoordelingen-comment'; 
                   break;
                   
                   case 3:
                   $beoordelingIcon = 'fa fa-meh-o beoordelingen-comment oranje '; 
                   break;
                   
                   case 4:
                   $beoordelingIcon = 'fa fa-smile-o beoordelingen-comment'; 
                   break;
                   
                   case 5:
                   $beoordelingIcon = 'fa fa-smile-o beoordelingen-comment'; 
                   break;
 
               }
       
       
       echo '<div class="comment panel panel-primary"><a name="'.$rows['id'].'"></a>
                   <div class="panel-heading">
<h3 class="panel-title">'.$website.'</h3>
</div>
                    <div class="panel-body">
                    <span class="user-avatar">
                            <img class="img-responsive img-thumbnail" src="'.getReviewerLogoPath().'" alt="" style="border-radius:10px;" class="pull-left media-object">
                    </span>
                    <div class="media-body">
                    
                           <s class="rated ranking-star">
            <s class="">
            <s class="">
            <s class="">
            <s></s>
            </s>
            </s>
            </s>
            </s>
          
           
            <input id="input-1" name="score" class="rating" type="number" data-size="sm" step="1" max="5" min="1" data-show-clear="false" data-readonly="true" value="'.$beoordelingSterrenScore.'" data-show-caption="false" style="display: none;">
            <span style="float:right; clear:both; font-size:24px; padding-right:13px;"><i class="'.$beoordelingIcon.'" style="font-size:24px;"></i><b>Score: '.$beoordelingScore.' </b></span>               
                            
                              
                            <h4 class="media-heading bold">'.getReviewerVoornaamById($rows['reviewer_id']).' '.getReviewerAchternaamById($rows['reviewer_id']).'</h4>
                            <small class="block">Datum: '.datumVergelijkenMetVandaag($rows['datum']).'</small>
                            <h3>'.$rows['mening'].'</h3>
                            <p>'.$rows['beoordeling'].'</p>';
                            
                            // Haal reacties op.
                            
                            $q = 'SELECT * FROM berichten WHERE beoordeling_id = '.$rows['id'].' ORDER BY datum ASC, tijd ASC';
                            $result = $database->query($q);
                            
                            while ($reacties = mysqli_fetch_assoc($result))
                            {
                            
                            
                                if ($reacties['bericht_door'] == 1)
                                {
                                
                               echo '<div class="form-body"><div class="form-group">
                                <label>Antwoord Laserpenonline:</label>
                                </div><textarea readonly style="background-color: #F6F6F6 !important;" id="reactie" class="form-control"  placeholder="" name="reactie" >'.$reacties['bericht'].'</textarea></div> <br/>';
                                
                                }
                                elseif($reacties['bericht_door'] == 0)
                                {
                                 
                                 echo  '<div class="form-body"><div class="form-group">
                                <label>Antwoord '.getReviewerVoornaamById($rows['reviewer_id']).' '.getReviewerAchternaamById($rows['reviewer_id']).':</label>
                                </div><textarea readonly style="background-color: #E6FFE6 !important;" id="reactie" class="form-control"  placeholder="" name="reactie" >'.$reacties['bericht'].'</textarea></div> <br/>';
                                
                                }
                            
                           
                            }
                            
  // Check of reviewer is ingelogd, zo ja weergeef reageer formulier en button.
                    
    if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['bevestigReactie'.$rows['id'].'']))
    {

    
        $database = new database();
        // Define which values we are to accept from the form. If you add additional 
        // fields to the form, make sure to add the form name values here.
        $allowedFields = array
        (
            'reactie', 
            'beoordelingId',
            'reviewerId'
            
         
        );
        
        // Specify the required form fields. The key is the field name and the value 
        // is the error message to display.
        $requiredFields = array
        (
            'reactie' => 'U heeft geen reactie ingevuld.'   
             
        );
        
        /*
             * END CONFIG
        -----------------------------------------------------------------------------

         * BEGIN FORM VALIDATION
         */
        
        $errors = array();
        
        // We need to loop through the required variables to make sure they were posted with the form.
        
        foreach($requiredFields as $fieldname => $errorMsg)
        {
            if(empty($_POST[$fieldname]))
            {
                $errors[] = $errorMsg;    
            }
        }

        // Loop through the $_POST array, to create the PHP variables from our form.
        foreach($_POST AS $key => $value)
        {
            // Is this an allowed field? This is a security measure.
            if(in_array($key, $allowedFields))
            {
                ${$key} = $value;
            }
        }

          $reactie = check_input($_POST['reactie']);
          $reviewerId = check_input($_POST['reviewerId']);
          $beoordelingId = check_input($_POST['beoordelingId']);

            if(count($errors) == 0)
            {
        
                // extra checks
                
                if (strlen($reactie) < 15)
                {
                
                    $errors[] .= 'Uw reactie dient minimaal 15 karakters te bevatten.';
                }

         }

         /*
             * END FORM VALIDATION
             -----------------------------------------------------------------------------
         */
        
        
        // Were there any errors?
        if(count($errors) > 0)
        {
            $errorString .= '<ul>';
            foreach($errors as $error)
            {
                $errorString .= "<li>$error</li>";
            }
            $errorString .= '</ul>';
            
            $errors = showErrors($errorString);
           
          

        }
        else
        {
            // Alle data is gevalideerd en veilig.

            // Voer reactie in database.
            
            $q = 'INSERT INTO berichten (reviewer_id, domein_id, beoordeling_id, klant_id, bericht, bericht_door, datum, tijd, ip_adres) VALUES ('.$reviewerId.','.$domeinId.', '.$beoordelingId.', '.$_SESSION['fbpuserid'].', "'.$reactie.'",1, CURDATE(), CURTIME(), "'.$_SERVER['REMOTE_ADDR'].'" )';
            $database->query($q);
            
            $_POST = array();
            
            // Checken of is aangegeven dat klant ook mailtje krijgt...
            
            if ($emailNaarReviewer == 'on')
            {
            
                // Stuur mailtje naar reviewer dat er een reactie is op zijn beoordeling...
                
        $to = getReviewerEmailById($reviewerId);
        $subject = 'Nieuw reactie ontvangen van '.getCurrentDomeinNameById($domeinId).'';
     
        include './includes/mails/reactie-email-naar-reviewer.php';
        $message = $reactie_mailtje_Reviewer;

        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
        $headers .= 'From: Feedbackplatform <[email protected]>';
          
        mail($to, $subject, $message, $headers);
            
            
            }
            
            
            header ('location: http://feedbackplatform.nl/beoordelingen/laserpenonline.nl');
            
            
       
        }
    }
       
                

                            if ($_SESSION['fbpgebruiker'] == 1 && $_SESSION['fbpuserid'] != 0 && checkLaatsteBericht($rows['id']) == 0)
                            {
                             
                                // Gebruiker is ingelogd!
                                
                                
                              
                                    echo '<form id="myForm" class="form-light padding-15" method="POST" action="">  <span class="btn btn-three btn-xs" id="reageerAlsBedrijf'.$rows['id'].'">
                                                    <i class="fa fa-reply"></i>
                                                    Reageren
                                                    </span>
                                     
                                     <div class="row mijn-account-space" id="reageren'.$rows['id'].'">
                                            <div class="col-md-12">
                                            
                                            <div class="w-section inverse">                       
                            <div class="w-box sign-in-wr bg-5">
                                
                                <div class="form-header">
                                    <h2>Reactie formulier:</h2>
                                </div>
                                <div class="form-body">
                               ';
                               
                               echo $errors;
                               echo '
                                <input type="hidden" name="beoordelingId" value="'.$rows['id'].'">
                                <input type="hidden" name="reviewerId" value="'.$rows['reviewer_id'].'">

                                        <div class="form-group">
                                        <label>Uw reactie:</label>
                                        <textarea id="reactie" class="form-control" placeholder="" name="reactie" style="height:175px;"></textarea>
                                        </div>
                                        
                                        <input id="stuurReactieNaarKlant'.$rows['id'].'" class="css-checkbox" type="checkbox" name="stuurReactieNaarKlant'.$rows['id'].'" checked="checked">
                                        <label class="css-label-chk" for="stuurReactieNaarKlant'.$rows['id'].'">
                                        Stel '.$website.' op de hoogte van uw reactie.
                                        </label>
                          
                                        <div class="row">
                                            <div class="col-md-12">
                                                <button class="btn btn-two pull-right" name="bevestigReactie'.$rows['id'].'" type="submit">BEVESTIGEN</button>                      
                                            </div>
                                        </div>
                                    
                                    
                                </div>
                               
                            </div>
                        </div>
                                         
                                            
                                            </div></div></form>';
                                            
                                           
                                        if (!isset($_POST['bevestigReactie'.$rows['id'].'']))
                                        {

                                        echo '<script>

                                            $("#reageren'.$rows['id'].'").hide();

                                            $("#reageerAlsBedrijf'.$rows['id'].'").click(function() 
                                            {
                                             $("#reageren'.$rows['id'].'").toggle( "slow", function() 
                                            {

                                            });
                                            });

                                            </script>';

                                        }
                                        
                            } 
     
                            
                  echo '  </div>
                </div></div>';
 
 
       
		        }
	        
	        }
	        unset($rows);
	        
        
?>

?>
Bas IJzelendoorn op 27/06/2014 15:38:53




Ik heb de titel aangepast maar ik kan niet alle code aanpassen want in principe is alle code relevant voor de oplossing van het probleem.
Nee, je kan gerust alle code weghalen. Het probleem zit namelijk al in de aanroep, dus helemaal niet in dat php bestand.

Je moet weten dat een ajax request gewoon een request naar de server is en dat de server dat request gewoon net zo afhandelt als een pagina request. Met andere woorden, het request moet naar een url gaan... En daar heb je je probleem al. Jij geeft in de jquery functies .load() en .post() helemaal geen url mee, maar een bestandslocatie op je eigen pc. Dat kan natuurlijk hemelaal niet, want die call wordt gemaakt van de client naar de server toe.
Erwin H op 27/06/2014 15:54:51

Nee, je kan gerust alle code weghalen. Het probleem zit namelijk al in de aanroep, dus helemaal niet in dat php bestand.

Je moet weten dat een ajax request gewoon een request naar de server is en dat de server dat request gewoon net zo afhandelt als een pagina request. Met andere woorden, het request moet naar een url gaan... En daar heb je je probleem al. Jij geeft in de jquery functies .load() en .post() helemaal geen url mee, maar een bestandslocatie op je eigen pc. Dat kan natuurlijk hemelaal niet, want die call wordt gemaakt van de client naar de server toe.


Dat gedeelte werkt prima hoor, doet precies wat het moet doen alleen in het bestand zelf lijkt het alsof je geen $_POST kan gebruiken of weergeven... Ik heb nu de $_POST afhandeling maar gedaan buiten het geinclude bestand om, dan heb ik wel toegang tot de $_POST gegevens alleen voor error weergave kan ik dit niet op de juiste plaats weergeven, hier moet ik nog iets op verzinnen..

$('#results').load("../includes/autoloadscroller/autoload_process-mijn-beoordelingen.php", {'page':track_click}, function() {track_click++;}); //initial data to load

//post page number and load returned data into result element
$.post('../includes/autoloadscroller/autoload_process-mijn-beoordelingen.php',{'page': track_click}, function(data)


Dat gedeelte kan inderdaad NOOIT werken omdat zoals Erwin je ook al probeert duidelijk te maken:
Je geeft een PAD op en géén URL.

Voorbeeld pad: C:\Documents\Furio\boodschappenlijst.txt
Voorbeeld url: http://www.google.nl/images/logo.png

Reageren