Tableau php et ajax

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Tableau php et ajax

Re: Tableau php et ajax

par Jc71 » 17 oct. 2016, 21:32

Bonsoir,

Moi, ce qui m'interresserait de comprendre c'est le retour qu'attends ta requête ajax.
Soit elle attend un retour texte, soit elle attends un retour JSON.
Si elle attends un retour JSON, il te faut renvoyer au navigateur un tableau associatif encodé en JSON.
Ex:
Si en php ton retour de requête ajax "normal" c'est

Code : Tout sélectionner

array('a','b');
il te faudra renvoyer

Code : Tout sélectionner

json_encode(array('valeur1'=>'a','valeur2'=>'b'));
. Ton javascript recevra alors une chaîne JSON sérialisée qu'il faudra parser (par exemple avec jQuery en faisant :

Code : Tout sélectionner

var RTN=jQuery.parseJSON(xhr.responseText);
et tu récupérera tes valeurs dans RTN.valeur1 et RTN.valeur2

Dans l'autre sens en JSON tu sérialises ton objet JSON à envoyer à PHP et quand tu le décodes avec json_decode() tu obtiens une classe standard. (ex: $objet->valeur1 et $objet->valeur2).

En espérant avoir pu t'aider.

Bonne soirée.

Re: Tableau php et ajax

par Spols » 10 sept. 2016, 15:27

J'ai pas suivi tout ton flux, mais ton echo gettype n'est quand même pas présent pour ton appel ajax ?

sinon si tu retourne un tableau d'une fonction, tu peux récupèrer les variables avec list()
function arrayReturn () {
   return array("foo", "bar");
}
list("foo", "bar") = arrayReturn();
si ca peut aider ...

Re: Tableau php et ajax

par azzeryx » 10 sept. 2016, 12:49

Du coup vu que ça ne viens pas de l'ajax mais du php et que seul ma fonction "tronquer" dysfonctionne, quelqu'un aurait il une idée de la cause du problème ?

Re: Tableau php et ajax

par azzeryx » 07 sept. 2016, 15:59

Oui c'est sûr que je pourrais améliorer mon code !
J'ai une bonne nouvelle quand même : le problème viens apparement du code php puisqu'un remplacer ce que j'ai montrer par :

Code : Tout sélectionner

if(function_exists("tronquer")){echo "<h1>existe</h1>";}else{echo "<h1>existe pas</h1>";} $tronquer = tronquer($donnees_rep['commentaire'], 400, "$i;$i2"); echo gettype($tronquer); $MonTexte = $tronquer[0]; $MonTexte = texte($MonTexte, 'com', $tronquer[1], "$i;$i2");
et en ajoutant : include_once('tout/fonction_tronque.php');
J'obtient ce que je veux de la fonction tronquer.
Je n'obtient cependant pas de résultat probant pour ma fonction texte (les array uniquement).

Re: Tableau php et ajax

par moogli » 07 sept. 2016, 15:19

Je ne sais pas trop comment voir si il y a un bug grâce à la console (sur chrome)... En tout cas je ne vois rien de flagrant dans la console.
dans l'onglet network il y a quoi en retour de l'appel sur la page qui t’intéresse ? et surtout est ce que c'est conforme a tes attente ?

pour le reste


$MonTexte = tronquer($donnees_rep['commentaire'], 400, "$i;$i2");
La fonction tronquer retourne un tabeal (si elle retourne quelque chose)

$MonTexte = texte($donnees_rep['commentaire'], 'com', $MonTexte, "$i;$i2");
la fonction texte utilise son troisième paramètre une seule fois :
if ($non!='' && strstr($v2, $non)) {
strstr ne prend en paramètre que des chaine de caractère pas des tableau du coup ça fonctionne pas comme tu le souhaites

ton code est relativement complexe, dur a lire et globalement pas simple a utiliser.
je te conseil de refactorer ça pour réduire la taille des fonctions (en déportant du code dans des fonctions).
La tu a des noms de variable pas simple a comprendre de l'écrasement de variable dans les boucle ($var est écrasée systématiquement dans chaque foreach tu vue une sorte de récursion avec la ligne précédente ?)

bref tu as beaucoup a y gagner avecun bon refacoring tu t'y retrouveras plus simple et tu trouveras plus facilement de l'aide (parce que la bon 419 lignes de code ça rebute ;) )


@+

Re: Tableau php et ajax

par azzeryx » 07 sept. 2016, 14:42

Je vais vous donner la page html rehcercher (qui contient l'utilisation des retunr) :

Code : Tout sélectionner

<?php include_once('tout/temps.php'); //on récu^père là ou on en était avec les commentaires if(empty($i) and isset($_GET['i'])){$i=(int) htmlspecialchars($_GET['i']);} $i2=0; //on charche dans la bdd les réponses $req_rep = $bdd->prepare("SELECT * FROM commentaire WHERE id_commentaire=? and type=1"); $req_rep->execute(array($donnees['id'])); while ($donnees_rep = $req_rep->fetch()) { $i2++; //on augmente le numéro de la réponse à chaque nbouvelle rèp //on prend la photo de profile $req_photo = $bdd->prepare('SELECT photo FROM membre WHERE pseudo = ?'); $req_photo->execute(array($donnees_rep['createur'])); $donnees_photo = $req_photo->fetch(); ?><section style='display: block; width: 90%; word-wrap: break-word; margin-bottom: 10px;'><?php //la photo echo "<img id='photo' src='../" . $donnees_photo['photo'] . "' alt='photo profile' style='width:50px;height:50px;'>"; //le commentaire ?><article id="comm">Commentaire de <a style='<?php if($donnees['createur']==$_SESSION['pseudo']){echo "color:green;";} if($donnees_rep['createur']==$donnees_pseudo['pseudo']){ echo "background-color:rgb(219,219,219);";} ?>' id='profile' target='_blank' href='site.php?section=autre_profile&personne=<?php echo $donnees_rep['createur']; ?>'><?php echo $donnees_rep['createur']; ?> </a><br /><?php $date = getRelativeTime($donnees_rep['date_creation']); echo "<span style='color: gray;'>Posté : " . $date . ", "; if($donnees_rep['date_modif'] == '0000-00-00 00:00:00'){ echo "jamais modifié </span>"; }else{ echo "modifié le : " . $donnees_rep['date_modif'] . "</span>";} //on gère l'affichage des réponses $MonTexte = tronquer($donnees_rep['commentaire'], 400, "$i;$i2"); $MonTexte = texte($donnees_rep['commentaire'], 'com', $MonTexte, "$i;$i2"); //on affiche la réponse echo "<div id='texte" .$i. "' style='font-size: 16px; margin-top:12px; margin-bottom:12px;'>" . $MonTexte . "</div>"; if($donnees_rep['createur']==$_SESSION['pseudo']){echo "<a id='supprimer' href='site.php?section=fun_element_commentaire&supprimer=" . $donnees_rep['id'] . "&id=" . $donnees_rep['id_element'] . "'>Supprimer</a> ";} if($donnees_rep['createur']==$_SESSION['pseudo']){ ?><a id='modifier' HREF='javascript: appear("mod<?php echo $i; ?>rep<?php echo $i2 ?>");IframeStruct("uploadFrame")'>Modifier</a> <?php } //fonctionnalité seulement si on est connectés if($connexion == true){ ?> <a HREF='javascript: appear("com<?php echo $i; ?>rep<?php echo $i2; ?>");IframeStruct("uploadFrame")' style='color: gray; text-decoration: none;'>Répondre</a> <input type=hidden id="signaleur<?php echo $i; ?>;<?php echo $i2; ?>" value="<?php echo $_SESSION['pseudo'];?>" /> <input type=hidden id="type<?php echo $i; ?>;<?php echo $i2; ?>" value="commentaire" /> <input type=hidden id="element<?php echo $i; ?>;<?php echo $i2; ?>" value="<?php echo $donnees_rep['id'];?>" /> <a HREF='javascript: appear("com<?php echo $i; ?>S<?php echo $i2 ?>");IframeStruct("uploadFrame")' style='color: gray; text-decoration: none; color:rgba(255, 148, 40, 0.75);'>Signalé</a> <div class="signaler" id="signaler<?php echo $i ?>;<?php echo $i2; ?>" style='display: inline;'></div> <?php //on cherche si on à déjà signaler cette réponse if(isset($_SESSION['pseudo'])) { $req_signale = $bdd->prepare("SELECT signaleur FROM signale WHERE signaleur = ? AND element = ?"); $req_signale->execute(array($_SESSION['pseudo'], $donnees_rep['id'])); $donnees_signale = $req_signale->fetch(); if(!empty($donnees_signale ['signaleur'])) { ?><span id="span_S_<?php echo $i; ?>;<?php echo $i2; ?>" style='color:blue;'>Signalé ! (<a HREF="javascript: submit_no_signale('<?php echo $i; ?>;<?php echo $i2; ?>');disappear('span_S_<?php echo $i; ?>;<?php echo $i2; ?>');" style='color:gray; text-decoration:none; font-size:10px;'>Annuler</a>)</span><?php } } ?> <input type=hidden id="likeur<?php echo $i; ?>;<?php echo $i2; ?>" value="<?php echo $_SESSION['pseudo'];?>" /> <?php $req_like = $bdd->prepare('SELECT likeur FROM like_commentaire WHERE likeur = ? and id_commentaire = ?'); $req_like->execute(array($_SESSION['pseudo'], $donnees_rep['id'])); $resultat_like = $req_like->fetch(); if(empty($resultat_like['likeur'])){ ?><input type=hidden id="image_coeur_src<?php echo $i; ?>;<?php echo $i2; ?>" value="../images/coeur_vide.png" /><?php } else{ ?><input type=hidden id="image_coeur_src<?php echo $i; ?>;<?php echo $i2; ?>" value="../images/coeur_plein.png" /><?php } ?> <a HREF="javascript: " onclick="changeimage('click','<?php echo $i; ?>;<?php echo $i2; ?>');submitlikeCom('<?php echo $i; ?>;<?php echo $i2; ?>');" onMouseOver="changeimage('go','<?php echo $i; ?>;<?php echo $i2; ?>')" onMouseOut="changeimage('back','<?php echo $i; ?>;<?php echo $i2; ?>')"> <?php if(empty($resultat_like['likeur'])){ ?><img id='image_coeur<?php echo $i; ?>;<?php echo $i2; ?>' src="../images/coeur_vide.png" alt="coeur" style="width:15px;height:15px;"/><?php } else{ ?><img id='image_coeur<?php echo $i; ?>;<?php echo $i2; ?>' src="../images/coeur_plein.png" alt="coeur" style="width:15px;height:15px;"/><?php } ?> </a> <?php $req_nb_like = $bdd->prepare('SELECT nb_like FROM commentaire WHERE id = ?'); $req_nb_like->execute(array($donnees_rep['id'])); $resultat_nb_like = $req_nb_like->fetch(); echo "<span id='nb_like".$i.";".$i2."' style='color: gray;'>".number_format($resultat_nb_like['nb_like'], 0, ',', ' ')."</span>"; ?> <br/> <form id="com<?php echo $i; ?>rep<?php echo $i2; ?>" enctype="multipart/form-data" style="display:none;" action="site.php?section=fun_element_commentaire&id=<?php echo $_GET['id']; ?>&type=1&id_commentaire=<?php echo $donnees_rep['id']; ?>" target="uploadFrame" method="post"> <textarea name="com" id="com" rows="4" cols="50">+@<?php echo $donnees_rep['createur']; ?></textarea><br /> <input type="submit" value="Répondre"/><a href='javascript: disappear("com<?php echo $i; ?>rep<?php echo $i2; ?>");IframeStruct("uploadFrame")' style="color:gray; text-decoration:none; font-size:10px;">Annuler</a><br /> </form><br /> <div id="com<?php echo $i; ?>S<?php echo $i2; ?>" style="display:none;" > <textarea name="S" id="textarea_signale<?php echo $i; ?>;<?php echo $i2; ?>" rows="4" cols="50">Cette réponse contient des parties pouvant choquer !!! </textarea><br /> <input type="submit" value="Signaler" onclick='submitsignale("<?php echo $i; ?>;<?php echo $i2; ?>");appear("span_S_<?php echo $i; ?>;<?php echo $i2; ?>");disappear("com<?php echo $i; ?>S<?php echo $i2; ?>");'/><a href='javascript: disappear("com<?php echo $i; ?>S<?php echo $i2; ?>");IframeStruct("uploadFrame")' style="color:gray; text-decoration:none; font-size:10px;">Annuler</a><br /> </div> <?php } if($donnees['createur']==$_SESSION['pseudo']){ ?> <form id="mod<?php echo $i; ?>rep<?php echo $i2; ?>" enctype="multipart/form-data" style="display:none;" action="site.php?section=fun_element_commentaire&modifier=<?php echo $donnees_rep['id']; ?>&id=<?php echo $donnees_rep['id_element']; ?>" target="uploadFrame" method="post"> <textarea name="mod" id="mod" rows="4" cols="50"><?php echo $donnees_rep['commentaire']; ?> </textarea><br /> <input type="submit" value="Modifier"/><a href='javascript: disappear("mod<?php echo $i; ?>rep<?php echo $i2; ?>");IframeStruct("uploadFrame")' style="color:gray; text-decoration:none; font-size:10px;">Annuler</a><br /> </form> <?php } ?> </article><?php } //Seulement si il y a plus d'une réponse if($i2>1){ ?><a id='moins_com<?php echo $i; ?>' HREF='javascript: disappear("rep<?php echo $i; ?>");appear("plus_com<?php echo $i; ?>");IframeStruct("uploadFrame");'>moins</a><?php } ?>
C'est ça :
//on gère l'affichage des réponses
$MonTexte = tronquer($donnees_rep['commentaire'], 400, "$i;$i2");
$MonTexte = texte($donnees_rep['commentaire'], 'com', $MonTexte, "$i;$i2");
qui fait intervenir les fonctions.

Je ne sais pas trop comment voir si il y a un bug grâce à la console (sur chrome)... En tout cas je ne vois rien de flagrant dans la console.

Re: Tableau php et ajax

par moogli » 07 sept. 2016, 13:10

+1 sans l'utilisation (le service coté serveur)on ne peux pas savoir exactement ce qui est fait.
as tu déboguer la chose autant un JS qu'en PHP ?
est ce que la console développeur du navigateur indiqueune erreur JS ?
Cette console indique aussi les flux réseau tu peux donc 'voir' ce qui est retourné par le serveur et doit être digéré par JS.

il est aussi possible de déboguer la partie php, par exemple avec xdebug et un ide.


@+

Re: Tableau php et ajax

par Spols » 07 sept. 2016, 11:49

Je vois bien tes return sous forme d'array, mais pas l'appel à la fonction en question. que fait tu avec ces retours ?

Il est possible que tu utilise mal ce retour et que lors de l'appel ajax ton code html est erroné et fait planter la requète alors qu'en directe, ton navigateur se débrouille mieux avec ce code erroné.

Re: Tableau php et ajax

par azzeryx » 06 sept. 2016, 17:54

Je peut effectivement donner les fonctions complètes (très longue) :

Code : Tout sélectionner

<?php function texte($var, $type='', $non='', $id='') { if(preg_match_all("/\+@[^\s[:punct:]]+/",$var,$match)) { foreach ($match as $v1) { foreach ($v1 as $c=>$v2) { $pseudo = str_replace("+@", "", $v2); $replacement = "<a target='_blank' href='site.php?section=autre_profile&personne=$pseudo'>".$v2."</a>"; $var = str_replace($v2, $replacement, $var); } } } $var = preg_replace('/\\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]/i', "<a target='_blank' href='$0'>$0</a>", $var); $var = str_replace("\n", "<br/>", $var); $var = str_replace("<a href="", "<a target='_blank' href='", $var); $var = str_replace("">", "'>", $var); $var = str_replace("</a>", "</a>", $var); if($type=='') { $var = str_replace("<titre>", "<h2 style='color: rgb(0,128,255); font-size: 25px; text-align: center;' >", $var); $var = str_replace("</titre>", "</h2>", $var); $var = str_replace("<sous-titre>", "<h3 style='color: rgb(0,128,255); font-size: 20px; text-align: center;' >", $var); $var = str_replace("</sous-titre>", "</h3>", $var); $var = str_replace("<attention>", "<img src='images/attention.jpg' alt='attention' height='20px' width='20px'/> <span style='background-color: rgb(255, 201, 14);' >", $var); $var = str_replace("</attention>", "</span>", $var); $var = str_replace("<liste>", "<ul>", $var); $var = str_replace("<liste_num>", "<ol>", $var); $var = str_replace("<puce>", "<li>", $var); $var = str_replace("</puce>", "</li>", $var); $var = str_replace("</liste>", "</ol>", $var); $var = str_replace("</liste>", "</ul>", $var); $var = str_replace("<tableau>", "<table>", $var); $var = str_replace("<tête>", "<thead>", $var); $var = str_replace("<corps>", "<tbody>", $var); $var = str_replace("<ligne>", "<tr>", $var); $var = str_replace("<cellule-tête>", "<th>", $var); $var = str_replace("</cellule-tête>", "</th>", $var); $var = str_replace("<cellule>", "<td>", $var); $var = str_replace("</cellule>", "</td>", $var); $var = str_replace("</ligne>", "</tr>", $var); $var = str_replace("</corps>", "</tbody>", $var); $var = str_replace("</tête>", "</thead>", $var); $var = str_replace("</tableau>", "</table>", $var); if(preg_match_all("/{\[def:(.*)\]\[id=(.*)\]\[(.*)\]}/", $var, $matches)) { $var = preg_replace("/{\[def:(.*)\]\[id=(.*)\]\[(.*)\]}/", "<dl style=\"width:80%; border:1px solid gray; padding:1px; font-family:swiss; border-top:3px solid rgb(63,72,204); background-color: rgba(148,182,239,0.75);\"><dt style=\"font-weight:bold;\">$1 :</dt><dd>$3</dd></dl>", $var); } } $var = preg_replace("/::<(.*)/>::/", "<strong style='font-weight: bold;' >$0</strong>", $var); //on gère les couleurs en hexa if(preg_match_all("/<couleur\[#[a-fA-F0-9]{6}\]>/",$var,$match)) { foreach ($match as $v1) { foreach ($v1 as $c=>$v2) { preg_match_all("/#[a-fA-F0-9]{6}/", $v2, $match2); $match2 = $match2[0][0]; $replacement = "<span style='color:$match2;'>"; $var = str_replace($v2, $replacement, $var); } } } $var = str_replace("</couleur>", "</span>", $var); //balise math if(preg_match_all("/\[\[:math:\[\[(.*)\]\]:math:\]\]/U",$var,$match)) { foreach ($match as $v1) { foreach ($v1 as $c=>$v2) { $r = "<br/><br/><span style='color:gray; font-size:12px;'>math :</span> "; $r .= "<a HREF='javascript: codeSelect(\"math".$c.'_'.$id."\");' style='color: blue; font-size:12px;'>Selectionner tout le texte</a><br/>"; $r = $r."<div class='math' id='math".$c.'_'.$id."' style='background-color:rgb(230,230,230); border:1px solid gray; max-width: 80%; font-size: 13px;'><ol><li style='float:left;'></li>"; $r2 = "</ol></div>"; $var = str_replace("[[:math:[[", $r, $var); $var = str_replace("]]:math:]]", $r2, $var); //$non compris dans la balise math if($non!='' && strstr($v2, $non)) { $non3=str_replace("\"", "'", $non); $non2="</ol>".$non3."<ol id=\"ol2\"><li style=\"float:left;\" ></li>"; //$var = str_replace($non, $non2, $var); //séparer en 2 $part[0] = strstr($v2, $non); $part[0] = str_replace($non, '', $part[0]); $part[1] = strstr($v2, $non, true); // Depuis PHP 5.3.0 $nombre_ligne_ol=substr_count($part[1], "<br/>")+2; $non2 = str_replace("<ol id=\"ol2\">", "<ol start=".$nombre_ligne_ol.">", $non2); $var = str_replace($non, $non2, $var); foreach ($part as $key => $value) { $math = math($part[$key]); $math = str_replace("<br/>", "<br/><li style='float:left;'></li>", $math); $var = str_replace($part[$key], $math, $var); } } else { $math = math($v2); $math = str_replace("<br/>", "<br/><li style='float:left;'></li>", $math); $var = str_replace($v2, $math, $var); } } } } $var = str_replace("""<", "<img src='images/guillemets.jpg' alt='guillemets' height='20px' width='20px'/> <span style='font-style: italic;' >", $var); $var = str_replace("/>""", "</span>", $var); $var = str_replace(":D", "<img src='../smiley/17473777-happy-smiley-emoticon.jpg' alt='smiley' height='20px' width='20px'/>", $var); $var = str_replace(":'(", "<img src='../smiley/33886503-smiley-triste-dessin-anim--motic-ne.jpg' alt='smiley' height='20px' width='20px'/>", $var); $var = str_replace("<diable/>", "<img src='../smiley/7513465-diable-motic-ne.jpg' alt='smiley' height='20px' width='30px'/>", $var); $var = str_replace("<réfléchit/>", "<img src='../smiley/16515888-emoticon-smiley-pens-e.jpg' alt='smiley' height='20px' width='20px'/>", $var); $var = str_replace("<dsl/>", "<img src='../smiley/9718593-d-sol--motic-ne.jpg' alt='smiley' height='30px' width='30px'/>", $var); $var = str_replace("<clap/>", "<img src='../smiley/13172924-applaudissements-emoticon.jpg' alt='smiley' height='30px' width='30px'/>", $var); $var = str_replace("$)", "<img src='../smiley/7327892-dollar-motic-ne.jpg' alt='smiley' height='20px' width='20px'/>", $var); $var = str_replace(":)", "<img src='../smiley/8711244-motic-ne.jpg' alt='smiley' height='20px' width='20px'/>", $var); $var = str_replace(":(", "<img src='../smiley/pas_contant.jpg' alt='smiley' height='20px' width='20px'/>", $var); $var = str_replace(";)", "<img src='../smiley/19287364-soup-onnant-motic-ne.jpg' alt='smiley pas contant' height='20px' width='20px'/>", $var); $var = str_replace("<3)", "<img src='../smiley/8598200-en-amour-motic-ne.jpg' alt='smiley' height='20px' width='20px'/>", $var); $var = str_replace("<3", "<img src='../smiley/coeur.jpg' alt='coeur' height='20px' width='20px'/>", $var); return $var; } function math($math) { if(preg_match_all("/\^\S+/",$math,$match_math)) { foreach ($match_math as $v1_math) { foreach ($v1_math as $c_math=>$v2_math) { $sup = str_replace('^', '', $v2_math); $replacement_math = "<SUP>".$sup."</SUP>"; $math = str_replace($v2_math, $replacement_math, $math); } } } if(preg_match_all("/_\S+/",$math,$match_math)) { foreach ($match_math as $v1_math) { foreach ($v1_math as $c_math=>$v2_math) { $sup = str_replace('_', '', $v2_math); $replacement_math = "<SUB>".$sup."</SUB>"; $math = str_replace($v2_math, $replacement_math, $math); } } } //$math = str_replace("/", "<font color='blue'>\/</font>", $math); $math = str_replace("=", "<font color='red'>=</font>", $math); $math = str_replace("~=", "<font color='red'>≈</font>", $math); $math = str_replace("<", "<font color='red'><</font>", $math); $math = str_replace(">", "<font color='red'>></font>", $math); $math = str_replace("≤", "<font color='red'>≤</font>", $math); $math = str_replace("≥", "<font color='red'>≥</font>", $math); $math = str_replace("+", "<font color='blue'>+</font>", $math); $math = str_replace("-", "<font color='blue'>-</font>", $math); $math = str_replace("*", "<font color='blue'>×</font>", $math); $math = str_replace("×", "<font color='blue'>×</font>", $math); $math = str_replace("[div]", "<font color='blue'>&divide;</font>", $math); $math = str_replace("&divide;", "<font color='blue'>&divide;</font>", $math); $math = str_replace("π", "<font color='orange'>π</font>", $math); $math = str_replace("PI", "<font color='orange'>π</font>", $math); $pattern = "/(?<![\\\\])(inf\.)/"; // pas précéder de \ (?<![\\\\]) $math = preg_replace($pattern, "<font color='orange'>&infin;</font>", $math); $math = str_replace("%", "<font color='purple'>%</font>", $math); $math = str_replace("inclu()","&sub;", $math); $math = str_replace("ninclu()","&nsub;", $math); $math = str_replace("E()","&isin;", $math); $math = str_replace("!&isin;","&notin;", $math); $math = str_replace("|N","ℕ", $math); $math = str_replace("|Z","ℤ", $math); $math = str_replace("|Q","ℚ", $math); $math = str_replace("|R","ℝ", $math); $math = str_replace("|C","ℂ", $math); $math = str_replace("integ()","&int;", $math); $math = str_replace("som()","<font color='maroon'>&sum;</font>", $math); $math = str_replace("∑","<font color='maroon'>&sum;</font>", $math); $math = str_replace("prod()","<font color='maroon'>&prod;</font>", $math); $math = str_replace("∏","<font color='maroon'>&prod;</font>", $math); $math = str_replace("perp()","&perp;", $math); $math = str_replace("O/","&empty;", $math); if(preg_match_all("/[0-9]*\.?[0-9]+/",$math,$match_math)) { foreach ($match_math as $v1_math) { foreach ($v1_math as $c_math=>$v2_math) { $replacement_math = "<font color='green'>".$v2_math."</font>"; $math = str_replace($v2_math, $replacement_math, $math); } } } $pattern = "/(?<![\\\\])([!eE])\./"; // pas précéder de \ (?<![\\\\]) $math = preg_replace($pattern, '<font color=\'purple\'>$1</font>', $math); if(preg_match_all("/\\\\(!|e|E|inf)\./",$math,$match_math)) { foreach ($match_math as $v1_math) { foreach ($v1_math as $c_math=>$v2_math) { $replacement_math = str_replace("\\", "", $v2_math); $math = str_replace($v2_math, $replacement_math, $math); } } } if(preg_match_all("/(log|ln)\((.*)\)/",$math,$match_math)) { foreach ($match_math as $v1_math) { foreach ($v1_math as $c_math=>$v2_math) { $replacement_math = "<font color='purple'>".$v2_math."</font>"; $math = str_replace($v2_math, $replacement_math, $math); } } } return $math; } //fonction utile function str_replace_occurence ($search, $replace, $subject, $occurence) { $occurence = array_flip((array)$occurence); $search = array_values((array)$search); $replace = array_values((array)$replace); if (empty($subject) || empty($search)) return $subject; if (($scount = count($search)) != count($replace)) return false; foreach ($search as $offset => $needle) { $pos = 0; $len = strlen($needle); $rep = $replace[$offset]; $occur = 0; while (($pos = strpos($subject, $needle, $pos)) !== false && ++$occur) { if (isset($occurence[$occur])) ($subject = substr($subject, 0, $pos) . $rep . substr($subject, $pos + $len)); $pos += $len; } } return $subject; } //fonction pour couper le texte function tronquer($origine, $longueurAGarder, $id) { $origine = str_replace("\n", "<br/>", $origine); $nombre_ligne_fichier=substr_count($origine, "<br/>"); $nombre_ligne_fichier=$nombre_ligne_fichier+1; if (strlen ($origine) <= $longueurAGarder && $nombre_ligne_fichier <= 5) { return array($origine, ''); } else { if(strlen ($origine) >= $longueurAGarder && $nombre_ligne_fichier <= 6) { //$string = "<span id='cacher".$id."' style='display: none;'>"; $string = "<span id=\"cacher".$id."\" style=\"display: none;\">"; //étape 1 $nombre_ligne_fichier=substr_count($origine, "<br/>"); $nombre_ligne_fichier=$nombre_ligne_fichier+1; $debut = substr($origine, 0, $longueurAGarder); $lire = $debut . $string; $finale = str_replace($debut, $lire, $origine); //étape 2 $fin = $finale . "</span> <a HREF='javascript: Apparait(".$id.");' id='plus".$id."' style='bcolor blue; text-decoration: none; font-size: 12px;' > lire la suite (".$nombre_ligne_fichier." l.)</a> <a HREF='javascript: Disparait(".$id.");' id='moins".$id."' style='bcolor blue; text-decoration: none; font-size: 12px; display: none;' >Moins (".$nombre_ligne_fichier." l.)</a>"; $finale = str_replace($finale, $fin, $finale); return array($finale, $string); //return $origine; } else if ($nombre_ligne_fichier > 6) { //étape 1 //$string = "<span id='cacher".$id."' style='display: none;'>"; $string = "<span id=\"cacher".$id."\" style=\"display: none;\">"; $origine = str_replace_occurence('<br/>', $string, $origine, 5); //étape 2 $fin = $origine . "</span> <a HREF='javascript: Apparait(".$id.");' id='plus".$id."' style='bcolor blue; text-decoration: none; font-size: 12px;' > lire la suite (".$nombre_ligne_fichier." l.)</a> <a HREF='javascript: Disparait(".$id.");' id='moins".$id."' style='bcolor blue; text-decoration: none; font-size: 12px; display: none;' >Moins (".$nombre_ligne_fichier." l.)</a>"; $finale = str_replace($origine, $fin, $origine); return array($finale, $string); } } } ?>
C'est simple toutes les partie de ces fonction qui utilisent des array (y compris des return) ne fonctionnent pas quand j'appel la page en ajax. En revanche quand j'appelle la page normalement ça marche.

Re: Tableau php et ajax

par moogli » 05 sept. 2016, 09:43

salut,
Je rencontre un gros problème lorsque j'appel une page php via ajax. En effet toute fonction qui comporte une manipulation d'array ne fonctionne pas quand elle est appelée grâce à ajax. J'ai vu que ce problème est connu
je ne vois pas pourquoi les tableaux php (ou des choses les utilisant) ne fonctionnerais pas sur un appel de nettoyage (ajax ...) qui n'est ni plus ni moins qu'une requête http comme les autres, simplement faite depuis du js et pas directement parce que tu as mis l'url dans le navigateur.

donc quel est le problème exactement ?
ton code est très beau mais n'explique pas grand chose, il nous faut du concret. Qu'est ce que tu obtient et qu'est ce que tu souhaites ?
Il y a certainement plus de code que les quelques lignes au dessus, peut tu le partager (et nous indiquer les données qui vont avec le script ;) ) ?

si tu veux récupérer quelque chose en JS il faut forcément que tu 'affiches' quelque chose en php.
La première a faire c'est de tester le script serveur en rentrant l'url dans le navigateur (directement) ou en utilisant une application qui permet de tester des web service (dans les extension chrome il y a par exemple boomerang, DHC, postman etc.).


@+

Tableau php et ajax

par azzeryx » 03 sept. 2016, 11:26

Bonjour,
Je rencontre un gros problème lorsque j'appel une page php via ajax. En effet toute fonction qui comporte une manipulation d'array ne fonctionne pas quand elle est appelée grâce à ajax. J'ai vu que ce problème est connu et j'ai trouvé beaucoup de topic parlant de json_encode... (que je ne comprend pas forcément très bien). Mon problème est qu'à la différence de ces topics, je ne cherche pas à récupérer le return d'une fonction qui renvoi un tableau (et donc récupéré un tableau), moi je cherche à récupérer une page html et UNIQUEMENT du html qui à été crée VIA des fonction php utilisant des array. Et des fonctions qui manipulent des array j'en ai un bon paquet du type :

Code : Tout sélectionner

if(preg_match_all("/\^\S+/",$math,$match_math)) { foreach ($match_math as $v1_math) { foreach ($v1_math as $c_math=>$v2_math) { $sup = str_replace('^', '', $v2_math); $replacement_math = "<SUP>".$sup."</SUP>"; $math = str_replace($v2_math, $replacement_math, $math); } } }
Existe-il un moyen de contourné se problème (peut-être même ne pas utiliser ajax pour charger dynamiquement ma page) ?