Problème pour récupérer les données d'un formulaire

alvanoto
Invité n'ayant pas de compte PHPfrance

31 déc. 2009, 14:39

Bonjour,

Je dois créer une page PHP sur laquelle seront visualisées les données récupérées sur un formulaire.

Une des ces données est un texte de plus de 100 caractères mais elle doit être tronquer à seulement 40 caractères lors de la visualisation de la page de renvoi.

Ce texte doit apparaître dans une case d'un tableau.

voici le bout de code pour y arriver :

Code : Tout sélectionner

<?php $chaine = $_POST['contents'] ; $lg_max = 40; if (strlen($chaine) > $lg_max){ $chaine = substr($chaine, 0, $lg_max); } echo $chaine; ?>
voici le résultat, pas très joli...

Image

et sur WAMP, c'est pire:

Code : Tout sélectionner

Parse error: parse error in C:\wamp\www\tests\envoi.php on line 47


le problème, c’est que je ne sais pas où il faut l’insérer dans la page de renvoi PHP, au début (après le <body>…), ou juste avant le </head> par exemple…, au milieu (mais où?)

je galère, merci de m’aider :?

ViPHP
ViPHP | 3607 Messages

31 déc. 2009, 15:33

Bonjour,
aurais-tu le code complet?
Visiblement php est mal interprété...
D'où sort le screen que tu as fait? on dirait dreamweaver ou un logiciel semblable...

Invité
Invité n'ayant pas de compte PHPfrance

31 déc. 2009, 15:59

le screen provient de Kompozer
et oui, on a eu qu'un seul cours de PHP et pas encore de séance pratique, du coup, j'ai beaucoup de mal à faire cet exercice. Heureusement qu'il a des tutos d'aide sur la toile!!!

voici la page de renvoi:
<html>
<head>
<style type="text/css">
.tab_bg_red{background-color:red}
.tab_bg_orange{background-color:orange}
.tab_bg_yellow{background-color:yellow}
.tab_bg_blue{background-color:blue}
.tab_bg_green{background-color:green}
</style>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>envoi</title>
</head>
<body>
<span style="font-style: italic;">(Demande envoyée par l'adresse IP</span>&nbsp;<br>
<?php echo $_SERVER['REMOTE_ADDR']; ?>)<br>
<br>
<table style="text-align: left; width: 100px;" border="1"
cellpadding="2" cellspacing="2">
<tbody>
<tr>
<td style="vertical-align: top;"><span style="font-weight: bold;">Application</span><br>
</td>
<td style="vertical-align: top;"><span style="font-weight: bold;">Priorité</span><br>
</td>
<td style="vertical-align: top;"><span style="font-weight: bold;">Type</span><br>
</td>
<td style="vertical-align: top;"><span style="font-weight: bold;">Date</span><br>
</td>
<td style="vertical-align: top;"><span style="font-weight: bold;">Résumé</span><br>
</td>
<td style="vertical-align: top;"><span style="font-weight: bold;">Description</span><br>
</td>
</tr>
<tr>
<td>
<p>YAHD</p>
</td>
<td style="vertical-align: top;"><?php echo $_POST['priority']; ?><br>
</td>
<td style="vertical-align: top;"><?php echo $_POST['type']; ?><br>
</td>
<td style="vertical-align: top;">&nbsp;&nbsp; ?<br>
</td>
<td style="vertical-align: top;"><?php echo $_POST['oneLiner']; ?><br>
</td>
<td style="vertical-align: top;"><?php echo $_POST['contents']; ?><br>
</td>
</tr>
</tbody>
</table>
</body>
</html>
et la page HTML correspondante:
<html>
<head>
<script language="javascript">

function checkForm() {
var input = document.editTicketForm.oneLiner;
if ( input.value.length == 0 )
{
alert("Vous n'avez pas saisi de résumé");
input.focus();
return false;
}
var selectApp = document.editTicketForm.application;
input = document.editTicketForm.applicationOther;
if ( selectApp.value == -1 && input.value.length == 0 )
{
alert("Vous devez saisir le nom de l'application si vous n'en choisissez pas une dans la liste");
input.focus();
return false;
}
return true;
}

</script>
<link rel="stylesheet" href="../styles/styles.css" type="text/css"
media="screen">
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>saisieTicket</title>
</head>
<body>
<br>
<form method="post" action="envoi.php" onsubmit="return checkForm();"
name="editTicketForm">
<div style="text-align: center;"> </div>
<table style="text-align: left; width: 100px;" border="1"
cellpadding="2" cellspacing="2">
<tbody>
<tr class="tab_bg_1">
<th style="vertical-align: top; text-align: center;" colspan="2">Veuillez
décrire votre demande d'intervention:<br>
</th>
</tr>
<tr class="tab_bg_1">
<td style="vertical-align: top;">Application:<br>
</td>
<td style="vertical-align: top;">
<select name="application">
<option value="-1"> Autres</option>
<option value="0"></option>
</select>
&nbsp;<input size="50" name="applicationOther"><br>
</td>
</tr>
<tr class="tab_bg_1">
<td style="vertical-align: top;">Priorité:<br>
</td>
<td style="vertical-align: top;">&nbsp;&nbsp;
<select name="priority">
<option>Très Urgente</option>
<option>Urgente</option>
<option>Moyenne</option>
<option>Faible</option>
<option>Très Faible</option>
</select>
<br>
</td>
</tr>
<tr class="tab_bg_1">
<td style="vertical-align: top;">Type:<br>
</td>
<td style="vertical-align: top;"><input checked="checked"
name="type" value="anomalie" type="radio">Anomalie <input name="type"
value="evolution" type="radio">Demande d'évolution<br>
</td>
</tr>
<tr class="tab_bg_1">
<td style="vertical-align: top;">Résumé:<br>
</td>
<td style="vertical-align: top;"><input size="70"
name="oneLiner"><br>
</td>
</tr>
<tr class="tab_bg_1">
<td style="vertical-align: top;" colspan="2">Description
détaillée:<br>
</td>
</tr>
<tr class="tab_bg_1">
<td style="vertical-align: top;" colspan="2"><textarea cols="60"
rows="14" name="contents">J'ai saisi plusieurs demandes d'intervention
avec cet outil.
Aucune n'a été sauvegardée.
Chaque fois que je me connecte, votre outil me dit qu'il n'existe
aucune demande de ma part!</textarea><br>
</td>
</tr>
<tr class="tab_bg_1">
<td style="vertical-align: top;">Pièce-jointe:<br>
</td>
<td style="vertical-align: top;"><input name="ch"><input
value="Parcourir..." type="submit"><br>
</td>
</tr>
<tr class="tab_bg_1">
<td style="vertical-align: top; text-align: right;" colspan="2"><input
value="Envoyer" type="submit"><br>
</td>
</tr>
</tbody>
</table>
<br>
</form>
</body>
</html>
jusque là, tout va bien mais ça se corse en voulant y intégrer le petit code que j'ai soumis dans mon premier post :mrgreen:

ViPHP
ViPHP | 3607 Messages

31 déc. 2009, 16:04

Il suffit à priori de remplacer
<td style="vertical-align: top;"><?php echo $_POST['contents']; ?><br>
</td>
par
<td style="vertical-align: top;">
<?php 
$chaine = $_POST['contents'] ; 
$lg_max = 40; 
if (strlen($chaine) > $lg_max){ 
$chaine = substr($chaine, 0, $lg_max); 
} 
echo $chaine; 
?><br>
</td>

Invité
Invité n'ayant pas de compte PHPfrance

31 déc. 2009, 16:17

et bien écoute, c'est ce que j'ai fait, le résultat est visible sur l'image.

effacer ça:
<?php echo $_POST['contents']; ?>
et y mettre ça à la place:
<?php $chaine = $_POST['contents'] ;
$lg_max = 40;
if (strlen($chaine)?>
$lg_max){ $chaine = substr($chaine, 0, $lg_max); } echo $chaine; ?>
Alors je me suis dit qu'il fallait surement le mettre ailleurs mais tu vienS de m'apporter la confirmation que non.
C'est tout de même bizarre, je ne vois vraiment pas où réside l'erreur #-o

Eléphant du PHP | 299 Messages

31 déc. 2009, 16:46

Comme je te l' ai dit sur CCM, je pense que tu es en mode "graphique" au lieu de "coding", faudrait qu' un habitué de compozer vienne donner son avis, je dois partir moi :)

Eléphant du PHP | 299 Messages

31 déc. 2009, 16:48

attend, question bete mais....donne nous le nom exacte de tes deux pages. renvoi.htm?

Invité
Invité n'ayant pas de compte PHPfrance

31 déc. 2009, 16:49

salut graffx :mrgreen:

mais je suis en mode "codage", la capture d'écran provient de la page génerer par WAMP.

Invité
Invité n'ayant pas de compte PHPfrance

31 déc. 2009, 16:51

attend, question bete mais....donne nous le nom exacte de tes deux pages. renvoi.htm?
la première se nomme saisiTicket.html

et la seconde se nomme envoi.php

ViPHP
ViPHP | 3607 Messages

31 déc. 2009, 16:53

Si tu as vraiment saisie ce ci:
<?php $chaine = $_POST['contents'] ;
$lg_max = 40;
if (strlen($chaine)?>
$lg_max){ $chaine = substr($chaine, 0, $lg_max); } echo $chaine; ?>
Il est tout à fait normal que ça plante... :-°
On se relit on se relit!!

Invité
Invité n'ayant pas de compte PHPfrance

31 déc. 2009, 17:19

<?php 
//je récupère le texte du formulaire dans une variale nommée "chaîne"
$chaine = $_POST['contents'] ; 
//je définie une variable nommée lg_max qui aura pour valeur 40
$lg_max = 40;
//si le nombre de caractères de ma chaîne dépasse les 40, j'écrase ma chaîne avec cette même chaîne mais tronquée à 40.
if (strlen($chaine)?>$lg_max){ 
$chaine = substr($chaine, 0, $lg_max); 
} 
echo $chaine;

 ?>
franchement, je ne vois pas d'erreur 8-| mais je sens que tu en as décelé une :D

Invité
Invité n'ayant pas de compte PHPfrance

31 déc. 2009, 18:22

ah oui, tu fais allusion au point d'interogation....figure toi que je n'en suis pas la responsable, en effet:

je viens de comprendre d'ou vient ce ?

à l'écriture du code dans la partie source de Kompozer, il y a ça:

Code : Tout sélectionner

<?php $chaine = $_POST['contents'] ; $lg_max = 40; if (strlen($chain[b]e[/b]>$lg_max){ $chaine = substr($chaine, 0, $lg_max); } echo $chaine;[b]? >[/b]
et dès que je fais un crtl-s pour sauvegarder, ça se transforme pour je ne sais quelle obscure raison en ça:

Code : Tout sélectionner

<?php $chaine = $_POST['contents'] ; $lg_max = 40; if (strlen($chain[b]?[/b]>$lg_max){ $chaine = substr($chaine, 0, $lg_max); } echo $chaine; [b]?>[/b]
le E de "chaine" disparaît pour laisser place à un ?

et le ?> pour signifier le fin du code PHP devient un ?>

j'en peux plus de ce foutu TP, ça fait 48h que je bosse dessus :(

Mammouth du PHP | 991 Messages

01 janv. 2010, 19:17

Vive le notepad , sinon passe dans un IDE , et oublie pas de nommer ta page avec un beau .php (par habitude je les nomes toutes ainsi)
DevOps, Symfony4, Hoa