Προς το περιεχόμενο

Ajax και PHP


chrism4111

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας και πάλι έχω ένα θεματάκι με την ajax που δεν μπορω να το λυσω

 

Ο κωδικας της Ajax ειναι ο ιδιος με αυτον του W3Schools.com:

Και στελνει μετα απο κλικ σε ενα <a></a> html tag καποια δεδομενα σε ενα script της php ας πουμε το getuser.php

:::::

 

>
<script type="text/javascript"> /* ajax */
function popular(like)
{
if (like=="")
 {
 document.getElementById("txtHint").innerHTML="oups";
 return;
 } 
if (window.XMLHttpRequest)
 {// code for IE7+, Firefox, Chrome, Opera, Safari
 xmlhttp=new XMLHttpRequest();
 }
else
 {// code for IE6, IE5
 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
xmlhttp.onreadystatechange=function()
 {
 if (xmlhttp.readyState==4 && xmlhttp.status==200)
   {
   document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
   }
 }
xmlhttp.open("GET","getuser.php?like="+like,true);
xmlhttp.send();
</script>
<?php

/**
* @author Chrism
* @copyright 2011
*/
connect();
$query = "SELECT * FROM news ORDER BY NewID";
$results = mysql_query($query);
$num = mysql_num_rows($results);
if($num > 0)
{
   for($i=0;$i<$num;$i++)
   {
       session_start();
       $row = mysql_fetch_array($results);
       $imgquery = "SELECT * FROM images WHERE Image_Category='News' AND Value=".$row['NewID'];
       $imgresult = mysql_query($imgquery);
       $imgnum = mysql_num_rows($imgresult);
       echo '<div class="content-news">';
       if($imgnum>0)
       {
           $imgrow = mysql_fetch_array($imgresult);
           echo '<div class="img-news-content"><img src="'.$imgrow['Image_Link'].'" width="678" height="370"/></div>';
       }
       echo '<div class="news-header-cont"><h3>'.$row['Title'].'</h3></div>';
       echo '<div class="like-news">';
       echo $row['Create_Date'];
       echo '<span style="float:right;font-family:georgia;font-size:18pt;font-weight:bold;color:black">[u][b]<a class="minus" onclick="popular("minus")>-</a>[/b][/u] [u][i][b]<span id="txtHint">0</span>[/b][/i][/u] <span class="plus" >+</span></span>';
       echo '</div>';
       echo '<p>';
       echo '<div class="news-body-text-cont">'.get_between($row['Text'],'<p>','</p>').'</div>';
       echo '</p>';
       echo '<div style="color:black" class="news-footer">Πηγή :<a style="color:#6B0404;" href="'.$row['Source_Link'].'">'.$row['Source'].'</a></div>';
       echo '</div>';
      
   }
}
?>

 

 

 

 

Ασ πουμε οτι το script getuser.php ειναι το παρακατω

 

>
<?php
$q=$_GET["like"];     \\ενα πολυ απλο απλο πραγματακι 
echo $q;
?>

 

Με αυτην την διαταξη του κωδικα δεν θα επρεπε να μου εμφανιζει την λεξη minus στη θεση του 0 με το που κλικαρο το -???

Γιατι αραγε δεν μου δίνει το ζητουμενο αποτελεσμα???

Να σημειωσω οτι ο κωδικας που περιεχει το ajax script γινετε require_once απο την index.php (που μαλλον δεν χρειαζετε να παραθεσω)

Δημοσ.

><a class="minus" onclick="popular("minus")>-</a>

Δεν κλείνεις το onclick (λείπει ένα "). Θα πρέπει να είναι κάπως έτσι:

><a class="minus" onclick="popular("minus")">-</a>

Το οποίο πάλι δεν είναι σωστό καθώς έχεις πολλαπλά " μέσα στο onclick. Δοκίμασε το ακόλουθο:

><a class="minus" onclick="popular(\'minus\')">-</a>

Δημοσ.

Οντως μου ειχε ξεφυγει ενα κλεισιμο του onclick ... Αλλα και παλι δεν δουλευει (Δοκιμασα και τον δευτερο τροπο με τα με τα slice αλλα και παλι τιποτα)

 

Καμια αλλη ιδεα?

Δημοσ.

Εισαι θεος :) Πετυχε....Εκανε τοσο μπαμ και δεν το εβλεπα . τι να κανουμε

 

Τωρα ομως εχω αλλο προβλημα ....

 

Εαν γινει τωρα μια διπλη επαναληψη στην for το to minus μου εμφανιζετε παντα στο πρωτη εμφανισει οποιο πλην και να πατησω ..

 

Τι μπορω να κανω γι'αυτο???

Δημοσ.

Στην JS λες «βρες μου το πεδίο με id "txtHint" και γράψε τα τάδε κείμενο». Όμως στο for δημιουργείς πολλαπλά πεδία με όνομα "txtHint". Άρα αυτό πάει και σου αλλάζει το πρώτο πάντα.

Αυτό που θα μπορούσες να κάνεις είναι να αριθμήσεις τα πεδία, για παράδειγμα "txtHint_1", "txtHint_2" και πάει λέγοντας. Όταν καλείς την popular, εκτός από την μεταβλητή "like" θα δίνεις και την μεταβλητή $i. Έπειτα στην JS θα του λες «βρες μου το πεδίο με όνομα "txtHint_" + i και βάλε το τάδε κείμενο».

Στην PHP τώρα, όταν δημιουργείς τα πεδία θα πρέπει να προσθέσεις και το $i σε κάθε txtHint (πχ/ "txtHint_".$i).

 

Έχε υπ'όψιν σου ότι προσπαθώ να σου πω μια γενική ιδέα, οπότε αν κάνεις απλά paste τα παραπάνω στον κώδικά σου το πιο πιθανό είναι να μην παίξουν.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...