A voir également:
- PHP affichage sous condition
- Excel cellule couleur si condition texte - Guide
- Easy php - Télécharger - Divers Web & Internet
- Affichage double ecran - Guide
- Windows 11 affichage classique - Guide
- Comment agrandir l'affichage de l'écran - Guide
9 réponses
Bonjour
Je te conseille de nous montrer ce qu'il y a dans la fonction document(), il y a de grandes chances que le problème vienne de là. Et qu'y a -t-il dans $lireDoc ?
Je te conseille de nous montrer ce qu'il y a dans la fonction document(), il y a de grandes chances que le problème vienne de là. Et qu'y a -t-il dans $lireDoc ?
Utilisateur anonyme
24 mai 2009 à 18:42
24 mai 2009 à 18:42
$lireDoc est un tableau de la forme :
Quant à la fonction document :
Array ( 0 => Array ( timestamp => xxx cheminFichier => xxx nom => xxx identifiantUniq => xxx ) 1 => Array ( timestamp => xxx cheminFichier => xxx [...]
Quant à la fonction document :
function document($etape, $lireDoc) { while (list($cle, $val) = each($lireDoc)) { if ($val['id'] == $_POST['liste']) { $document = file_get_contents($val['cheminFichier']) or die($etape.' : Echec à la lecture'); $document = simplyChain($document); echo $document;pourquoi fonctionnerait-elle pour un condition donnée mais pas son contraire ?
Utilisateur anonyme
24 mai 2009 à 21:58
24 mai 2009 à 21:58
???
Il semblerait que la superglobale $_POST['liste'] ne passe pas à la condition suivante...
Pour l'instant, j'ai extrait la sous-condition pour la remettre dans le flux principal du script, et j'utilise des champs cachés pour transmettre les superglobales (bien que ça me paraisse retors comme méthode) :
Tout cela va certainement évoluer...
des suggestions ?
Il semblerait que la superglobale $_POST['liste'] ne passe pas à la condition suivante...
Pour l'instant, j'ai extrait la sous-condition pour la remettre dans le flux principal du script, et j'utilise des champs cachés pour transmettre les superglobales (bien que ça me paraisse retors comme méthode) :
<?php /* Visualisation d'un document */ if (isset($_POST['visul'])) { if ( ! empty($_POST['liste'])) { echo '<form name="Lecture" method="POST" action="'.$_SERVER['SCRIPT_NAME'].'">'."\n"; // ajout de champs cachés pour transmettre les superglobales pertinentes echo '<input type="hidden" name="list" value="'.$_POST['liste'].'">'; echo '<input type="hidden" name="visul" value="Visualisation">'; echo '<fieldset class="page">'."\n"; echo '<legend id="titre"> Billet </legend>'."\n"; echo '<fieldset class="texte">'."\n"; echo '<div id="document">'."\n"; document('Lecture', $lireDoc); echo "</div> \n"; echo '</fieldset> <fieldset class="commandes">'."\n"; echo ' <input id="commG" type="submit" name="modif" value="Modifier">'."\n"; echo ' <input id="commD" type="submit" name="fermer" value="Fermer">'."\n"; echo "</fieldset>\n</fieldset>\n</form> \n"; if (isset($_POST['fermer'])) unset($_POST['liste']); } } // /* Modification d'un document */ if (isset($_POST['visul']) && isset($_POST['modif'])) { if ( ! empty($_POST['list'])) { echo '<form name="Lecture" method="POST" action="'.$_SERVER['SCRIPT_NAME'].'">'."\n"; echo '<fieldset class="page">'."\n"; echo '<legend id="titre"> Billet </legend>'."\n"; echo '<fieldset class="texte">'."\n"; echo '<textarea name="post" cols="80" rows="31">'."\n"; document('Modification', $lireDoc); echo "</textarea> \n </fieldset> \n"; echo '<fieldset class="commandes">'."\n"; echo ' <input id="commG" type="submit" name="valider" value="Valider">'."\n"; echo ' <input id="commD" type="submit" name="fermer" value="Annuler">'."\n"; echo "</fieldset>\n</fieldset>\n</form> \n"; echo $_POST['list'].' - '.$_POST['liste']; } } // /* // Affichage de la liste // */ if (empty($_POST['liste']) && !isset($_POST['visul']) && !isset($_POST['modif']) /*&& empty($POST['list'])*/) { echo '<form action="'.$_SERVER['SCRIPT_NAME'].'" method="POST">'; echo '<fieldset class="page">'; echo '<legend id="titre"> Billets </legend>'; echo '<fieldset class="texte"> <select id="list" name="liste" size="29">'; echo '<option value="" selected>Sélectionne un billet</option>'; while (list($cle, $val) = each($lireDoc)) { echo '<option value="'.$val['id'].'"> <a class="elem" href="">⌐ '.$val['titre'].'<span>'.infobul($val['cheminFichier']).' [...] </span> </a>'."\n".'</option>'."\n"; } echo '</select> </fieldset> <fieldset class="commandes">'; echo '<input id="commG" type="submit" name="visul" value="Afficher">'; echo '<input id="commD" type="submit" name="nvDoc" value="Nouveau">'; echo '</fieldset> </fieldset></form>'; } ?>
Tout cela va certainement évoluer...
des suggestions ?
echo '<input type="hidden" name="list" value="'.$_POST['liste'].'">';
C'est pour brouiller les pistes que tu jongles avec les list sans e et les liste avec e ?
Sinon, pour passer les variables d'une page à l'autre, utilise les sessions, c'est nettement plus simple.
C'est pour brouiller les pistes que tu jongles avec les list sans e et les liste avec e ?
Sinon, pour passer les variables d'une page à l'autre, utilise les sessions, c'est nettement plus simple.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
25 mai 2009 à 13:41
25 mai 2009 à 13:41
Bonjour,
Avec des $_SESSION, ça fonctionne.
Voici "l'éclaté" :
Pourquoi cela ne fonctionnerait-il pas seulement avec les $_POST ?
Avec des $_SESSION, ça fonctionne.
Voici "l'éclaté" :
<?php include('fonctions_blog.php'); $repertoire = '.'; $Fichiers = triFichiers($repertoire); function document($etape, $Fichiers) { while (list($cle, $val) = each($Fichiers)) { if ( ! empty($_SESSION['document'])) { if ($val['id'] == $_SESSION['document']) { $document = file_get_contents($val['cheminFichier']) or die($etape.' : Echec à la lecture'); switch($_SESSION['etat']) { case "modification" : $document = simplyChain($document); $document = str_replace('<br />', '', $document); return $document; break; case "visualisation" : $document = simplyChain($document); echo $document; break; } } } else { echo "oops !"; } } } // /* Visualisation d'un document */ if (isset($_POST['visul'])) { $_SESSION['etat'] = "visualisation"; $_SESSION['document'] = $_POST['liste']; if ( ! empty($_POST['liste'])) { echo '<form style="background-color: grey; float: right;" name="Lecture" method="POST" action="'.$_SERVER['SCRIPT_NAME'].'">'."\n"; echo '<input type="hidden" name="liste" value="'.$_POST['liste'].'">'; echo '<div id="document" style="float: right; /*position: absolute;*/ background-color: black; color: red; top: 65px; left: 300px; width: 700px; max-height: 350px; overflow: auto; padding: 10px 20px; " >'."\n"; document('Lecture', $Fichiers); echo "</div> \n"; echo ' <input id="commG" type="submit" name="modif" value="Modifier">'."\n"; echo ' <input id="commD" type="submit" name="fermer" value="Fermer">'."\n"; echo "</form> \n"; } } // /* Modification d'un document */ if (isset($_POST['modif'])) { $_SESSION['etat'] = "modification"; $_SESSION['document'] = $_POST['liste']; if (isset($_SESSION['document'])) { $docAmodifier = document('liste', $Fichiers); $titre = selection("<h4><u>", "</u></h4>", $docAmodifier); $texteAmodifier = selection("<span>", "</span>", $docAmodifier); echo '<form style="float: right; background-color: lightgrey; " name="Lecture" method="POST" action="'.$_SERVER['SCRIPT_NAME'].'">'."\n"; echo '<input type="input" name="titreAmod" value="'.$titre.'" readonly> <br>'; echo '<textarea name="post" cols="80" rows="29">'."\n".$texteAmodifier."</textarea>\n</fieldset>\n"; echo ' <input id="commG" type="submit" name="valider" value="Valider">'."\n"; echo ' <input id="commD" type="submit" name="fermer" value="Annuler">'."\n"; echo "</form> \n"; } else { echo '- Modifier - N° document : '.$_POST['liste'].' - '.$_SESSION['document']; } } // /* Annulation */ if (isset($_POST['fermer'])) unset($_SESSION['etat'], $_SESSION['document']); // /* // Affichage de la liste // */ // if ( ! isset($SESSION['etat'])) { $_SESSION['etat'] = "liste"; if ( $_SESION['etat'] = "liste" ) { echo '<form id="accueil" style="background-color: dimgrey;" name="accueil" action="'.$_SERVER['SCRIPT_NAME'].'" method="POST">'."\n"; echo ' <select id="liste" name="liste" size="29">'."\n"; echo ' <option value="" selected>Sélectionne un billet</option>'."\n"; while (list($cle, $val) = each($Fichiers)) { echo ' <option title="'.infobul($val['cheminFichier']).'" value="'.$val['id'].'">'."\n"; echo ' ⌐ '.$val['titre']."\n"; echo ' </option>'."\n"; } echo ' <input class="commG" type="submit" name="visul" value="Afficher">'."\n"; echo ' <input class="commD" type="submit" name="fermer" value="Régénérer">'."\n"; echo "</form>\n"; } } ?>Mais ça ne me plait pas : je trouve ça lourd...
Pourquoi cela ne fonctionnerait-il pas seulement avec les $_POST ?
Je ne dis pas que ça ne peut pas fonctionner avec $_POST, je dis simplement pour pour passer des variables d'une page à une autres, il y a les sessions, elles sont faites pour ça, alors que $_POST est destiné à récupérer les variables d'un formulaire.Maintenant, tous les mécanismes sont détournables pour arriver à ses fins. Je n'ai pas essayé de comprendre l'ensemble de ton script.
Mais je suis étonné de ne pas voir de session_start() (il est peut-être dans fonctions_blog.php ?)
mais aussi de voir $_SESSION écrit parfois $SESSION ou $_SESION
mais aussi du test if ( $_SESION['etat'] = "liste" ) ( = au lieu de == )
Mais je suis étonné de ne pas voir de session_start() (il est peut-être dans fonctions_blog.php ?)
mais aussi de voir $_SESSION écrit parfois $SESSION ou $_SESION
mais aussi du test if ( $_SESION['etat'] = "liste" ) ( = au lieu de == )
Utilisateur anonyme
25 mai 2009 à 15:04
25 mai 2009 à 15:04
le père à écrit :
"pour passer des variables d'une page à une autres, il y a les sessions"
Mais je ne me posais pas la question de faire ça sur plusieurs pages...
j'imaginais plutôt un seul formulaire qui se modifie, selon que certaines conditions sont remplies, et est mis à jour, si des modifications ont eu lieu tant sur la liste des fichiers que dans le contenu des fichiers.
session_start() est passé à travers la copie, et merci de me signaler mes coquilles.
"pour passer des variables d'une page à une autres, il y a les sessions"
Mais je ne me posais pas la question de faire ça sur plusieurs pages...
j'imaginais plutôt un seul formulaire qui se modifie, selon que certaines conditions sont remplies, et est mis à jour, si des modifications ont eu lieu tant sur la liste des fichiers que dans le contenu des fichiers.
session_start() est passé à travers la copie, et merci de me signaler mes coquilles.
Quand je dis d'une page à une autre, ça s'applique tout aussi bien à plusieurs appels de la même page !
Mais employer les sessions, n'est nullement une obligation. Je te l'avais suggéré parce que c'est plus simple d'affecter une variable que de créer un champ de formulaire hidden, et que les sessions offrent plus de possibilités que les champs hidden, mais le résultat devrait être le même. Ta version initiale marchait peut-être sans cette coquille de 'liste' et 'list'.
Mais employer les sessions, n'est nullement une obligation. Je te l'avais suggéré parce que c'est plus simple d'affecter une variable que de créer un champ de formulaire hidden, et que les sessions offrent plus de possibilités que les champs hidden, mais le résultat devrait être le même. Ta version initiale marchait peut-être sans cette coquille de 'liste' et 'list'.
Utilisateur anonyme
27 mai 2009 à 19:22
27 mai 2009 à 19:22
J'ai fini par ne plus utiliser de `$_SESSION[]`, et au lieu d'avoir des `name=` différents pour chaque bouton de formulaires, il n'y en a plus qu'un : 'etat', qui prend des valeurs différentes.
Grosso modo :
C'est encore un peu brouillon, mais ça fonctionne !
Grosso modo :
if ($_POST['etat'] == "unEtat") { echo '<input name="etat" value="autreEtat"> echo '<input name="etat" value="encore1autreEtat"> } elseif ($_POST['etat'] == "autreEtat") { echo '<input name="etat" value="unEtat"> echo '<input name="etat" value="encore1autreEtat"> }
C'est encore un peu brouillon, mais ça fonctionne !