A propos des tableaux dynamiques

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 : A propos des tableaux dynamiques

par sadeq » 28 sept. 2005, 17:12

Sadeq m'a écrit:
La fonction trim($variable) elimine les espaces inutiles (dans le cas où $variable ne contient que des espaces trim() retourne vide "") elle est utilisée ici pour s'assurer que les chaines contenant des espaces par mégarde sont conciérées vides (car un espace n'est pas du vide)
C'est pour cela que j'étais surprise que la partie "null" soit supprimée.

Merci pour vos réponses. Je me mets en résolu.
Le null n'est ni du vide ni un espace :shock:
Et moi j'ai parlé des espaces que le trim() élimine et j'ai jamais dit que l'espace est un nul.

L'espace est un caractère blanc comme les autres (a,b,c,...)
Le vide concerne les chaines de caractères ne contenant aucun caractère
Et le null veut dire qu'une variable n'a jamais été affectée par une valeur dès sa création.

Cyrano a confirmé : utiliser empty() est équivalent à trim($x) si $x = espace(s)
Mais empty() n'est jamais équivalente à null

par Elisa » 28 sept. 2005, 15:55

Sadeq m'a écrit:
La fonction trim($variable) elimine les espaces inutiles (dans le cas où $variable ne contient que des espaces trim() retourne vide "") elle est utilisée ici pour s'assurer que les chaines contenant des espaces par mégarde sont conciérées vides (car un espace n'est pas du vide)
C'est pour cela que j'étais surprise que la partie "null" soit supprimée.

Merci pour vos réponses. Je me mets en résolu.

par Cyrano » 28 sept. 2005, 15:24

[-X
Attention, NULL != vide et la première formulation était juste.
Elle autrait pu être écrite différemment en mettant:
if(isset($presentation) && !empty($presentation))
{
    //... etc...

par Tho » 28 sept. 2005, 15:19

En fait, null est la même chose que "". Pour t'en convaincre, esaie ça :
<?php
  echo null == "";
?>
ça t'écrira 1 si c'est égal.

Ta condition revient à écrire :
<?php  
if ($Presentation !="" && trim($Presentation)!="")
?>


Et que $Presentation vaille "" ou " ", trim sera toujours vrai. Il est donc suffisant pour tester.
Voilà.

par Elisa » 28 sept. 2005, 15:00

Pourquoi faire simple, quand on peut faire compliqué? :P Ca fonctionne sans problème. Je te remercie.

En revanche, je ne comprends pas pourquoi
if ($Presentation !=null && trim($Presentation)!="") 
devient
if (trim($Presentation) != "") 

par Tho » 28 sept. 2005, 14:46

Je te propose une présentation de ce type :
<?php
if (trim($Presentation) != "")
{ 
?>
<tr>
  <td style="text-align: justify; vertical-align: top; font-size: 11pt; font-weight: bold; font-family: Arial,sans-serif; color: ff9900;">
    Présentation :
  </td>
  <td style="text-align: justify;">
    <span style="font-size: 10pt; font-family: Arial,sans-serif;">
      <?php echo nl2br($Presentation); ?>
    </span>
  </td>
</tr>
<?php
}
?>

par Elisa » 28 sept. 2005, 14:36

Bonjour,

Je me suis finalement orientée vers la proposition de Sadeq, qui correspondait le mieux au résultat que je recherchais. En revanche, j'ai un souci: mon code HTML s'articule mal avec le PHP.
Par exemple, lorsque je fais ceci:
<?php 
if ($Presentation !=null && trim($Presentation)!="")
{
echo "<tr>
	<td style=text-align: justify; vertical-align: top; font-size: 11pt; font-weight: bold; font-family: Arial,sans-serif; color: ff9900;>
	Présentation :
	</td>
	<td style=text-align: justify;>
		<span style=font-size: 10pt; font-family: Arial,sans-serif;>
			".nl2br ($Presentation)."
		</span>
	</td>
</tr>";
}
?>
Dans ce cas, il n'y a pas de " " après le HTML (ex. td style="...") mais il n'interprète pas les indications html. Si, en revanche je les remets, il m'affiche ceci:
Parse error: parse error, expecting `','' or `';'' in c:\program files\easyphp1-8\www\sinbad\user\aff_groupes.php on line 72
Est-ce que vous auriez déjà rencontré un problème similaire ou bien auriez-vous une explication à la cause de ce phénomène? :-k

par Elisa » 23 sept. 2005, 16:45

Merci je vais tester tout ça... :)

par Tho » 23 sept. 2005, 16:43

Oui et comme ce sont des variables, tu peux te passer des guillemets :
... "titre"=>$titre, ...

par Elisa » 23 sept. 2005, 16:26

Oups désolée, mais en relisant le post j'ai vu que Sadeq a répondu à ma question. :oops: [La fatigue...]

En revanche lorsqu'il définit "array", est-ce que je peux remplacer
array ("titre"=>"E.T.", "réalisateur"=>"S.Spielberg" , "année"=>""), 
par
array ("titre"=>"$titre", "réalisateur"=>"$realisateur" , "année"=>"$annee")

par Elisa » 23 sept. 2005, 11:37

Alors n'affichons que les données existantes et une cellule vide là où les données sont abentes:
<?php
$sql = "SELECT titre, realisateur, synopsis, annee FROM t_cinema";
$requete = mysql_query($sql);
?>
<table>
  <tr>
    <th>Titre</th>
    <th>Réalisateur</th>
    <th>Synopsis</th>
    <th>Année</th>
  </tr>
<?php
while($ligne = mysql_fetch_assoc($requete))
{
?>
  <tr>
    <td><?php echo(!empty($ligne['titre']) ? $ligne['titre'] : "&nbsp;"); ?></td>
    <td><?php echo(!empty($ligne['realisateur']) ? $ligne['realisateur'] : "&nbsp;"); ?></td>
    <td><?php echo(!empty($ligne['synopsis']) ? $ligne['synopsis'] : "&nbsp;"); ?></td>
    <td><?php echo(!empty($ligne['annee']) ? $ligne['annee'] : "&nbsp;"); ?></td>
  </tr>
<?php       
}
?>
</table>
Si je comprends bien ton exemple, je garde la partie html en dur (les titres). Comment faire si je ne veux pas de la ligne si elle se présente ainsi :
<tr>
<th>Titre<th>
<td>ET l'extraterrestre</td>
<tr>

par Cyrano » 20 sept. 2005, 18:02

La première formule:
<?php echo(!empty($ligne['titre']) ? $ligne['titre'] : "&nbsp;"); ?>
Est strictement la même chose que:
<?php if(!empty($ligne['titre']){echo($ligne['titre']) } else { echo("&nbsp;") } ?>
"&nbsp;" = Non Breakable SPace = Espace insécable .

Ensuite, $ligne est définie dans le while et c'est un tableau associatif puisque j'utilise mysql_fetch_assoc, il aurait été indexé si j'avais utilisé mysql_fetch_row et l'un ou l'autre au choix si j'avais utilisé mysql_fetch_array.

par Elisa » 20 sept. 2005, 16:52

<?php echo(!empty($ligne['titre']) ? $ligne['titre'] : "&nbsp;"); ?>
Qu'est-ce que c'est?
"&nbsp;"
Comment définis-tu la variable $ligne?
Avec ce code la partie html disparaît-elle si la condition n'est pas remplie?

par Cyrano » 20 sept. 2005, 16:44

Alors n'affichons que les données existantes et une cellule vide là où les données sont abentes:
<?php
$sql = "SELECT titre, realisateur, synopsis, annee FROM t_cinema";
$requete = mysql_query($sql);
?>
<table>
  <tr>
    <th>Titre</th>
    <th>Réalisateur</th>
    <th>Synopsis</th>
    <th>Année</th>
  </tr>
<?php
while($ligne = mysql_fetch_assoc($requete))
{
?>
  <tr>
    <td><?php echo(!empty($ligne['titre']) ? $ligne['titre'] : "&nbsp;"); ?></td>
    <td><?php echo(!empty($ligne['realisateur']) ? $ligne['realisateur'] : "&nbsp;"); ?></td>
    <td><?php echo(!empty($ligne['synopsis']) ? $ligne['synopsis'] : "&nbsp;"); ?></td>
    <td><?php echo(!empty($ligne['annee']) ? $ligne['annee'] : "&nbsp;"); ?></td>
  </tr>
<?php       
}
?>
</table>

par sadeq » 20 sept. 2005, 16:26

Cyrano, je pense que Elisa ne veut afficher que les élèments non vides d'un même film.
Je remarque que tes programmes éliminent tous les champs quand au moins un seul est vide (tu utilise la Jonction ET dans les 2 méthodes)

Tu dis : A ET B ET C (élèments non vides) ? => si au moins C est fausse tout est faux et le film n'est pas traité même si A et B contiennent des données et ça c'est pas bon!

Il faut traiter l'affichage des élèment cas par cas => si A n'est pas vide alors l'afficher.

Elisa, quand un if (si) n'a pas d'action else (sinon) il faut inverser la condition pour ne garder que le cas si vrai:
Exemple:
L'écriture : if (A) { //rien } else {echo "Ô c'est pas A!";} c'est faut.
Il faut écrire : if (!A) { echo "Ô c'est pas A!";} en inversant la condition par ! (not)