Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/01/2011, 15h00   #1
Nouveau Membre du Club
 
Inscription : août 2009
Messages : 223
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 223
Points : 29
Points : 29
Par défaut Tester l'existence d'une chaine de caractère

Bonjour,

Je fais un test assez simple pour vérifier si il existe une chaine de caractère dans un champs de la BDD:

Code :
1
2
3
4
if (empty($doc[$a]))
{
echo 'vide'	
}
$doc est la variable qui récupère ce qu'il y a dans le champs correspondant de ma BDD.
$a boucle de 1 à nombre de produits par page

Le code ci dessus m'affiche tout le temps 'vide' alors que certains champs sont vides (ils ne comprennent pas de chaine de caractère) d'autres non.

Quand je fais tous simplement:

Ca m'affiche bien ce qu'il y a dans la BDD tout en tenant compte de la boucle ($a).

Voilà je comprends pas vraiment le problème...

Edit:

Exemples:
$a=1 --> $doc= "test"
$a=2 --> $doc=""


Code :
1
2
3
4
5
6
if (empty($doc[$a]))
{
echo 'vide'	
}
else
{echo 'plein';}
Ce code devrait m'afficher: "plein" et "vide"
claire34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 15h14   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Pour debugguer
Code :
1
2
3
4
5
6
7
8
9
 
if (empty($doc[$a]))
{
echo 'vide'
}
else
{echo 'plein';
}
echo  ' : ' . var_dump($doc[$a]) . '<br>';
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 15h19   #3
Nouveau Membre du Club
 
Inscription : août 2009
Messages : 223
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 223
Points : 29
Points : 29
Bonjour,

alors ceci fonctionne et m'affiche correctement ce qu'il y a dans la base de données:
Exemple pour le 1er:
Et quand c'est vide:
Je suis tout aussi perplexe, car l'affichage se passe correctement mais le test avec une simple boucle if ne fonctionne pas...
claire34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 15h26   #4
Expert Confirmé Sénior
 
Homme Laurent Willems
Expert Stop/Start
Inscription : septembre 2002
Messages : 2 544
Détails du profil
Informations personnelles :
Nom : Homme Laurent Willems
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Expert Stop/Start

Informations forums :
Inscription : septembre 2002
Messages : 2 544
Points : 4 249
Points : 4 249
Salut,

Pourrions-nous avoir un code un peu plus complet stp?

Merci
__________________
Alea Jacta Test!
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 15h32   #5
Nouveau Membre du Club
 
Inscription : août 2009
Messages : 223
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 223
Points : 29
Points : 29
Salut,

Voici la partie de code concerné:

Code :
1
2
3
4
5
6
7
8
9
10
for($a = 1; $a <$count_product+1; $a++) {
  echo .$doc[$a]. '<br>';
  if (empty($doc[$a]))
      {
      echo 'vide'
      }
      else
      {echo 'plein';
      }
}
claire34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 16h00   #6
Expert Confirmé Sénior
 
Homme Laurent Willems
Expert Stop/Start
Inscription : septembre 2002
Messages : 2 544
Détails du profil
Informations personnelles :
Nom : Homme Laurent Willems
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Expert Stop/Start

Informations forums :
Inscription : septembre 2002
Messages : 2 544
Points : 4 249
Points : 4 249
Tu peux vérifier s'il y a bien un ; après cette instruction?


__________________
Alea Jacta Test!
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 16h03   #7
Nouveau Membre du Club
 
Inscription : août 2009
Messages : 223
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 223
Points : 29
Points : 29
Tout à fait, il y a bien un ';'.

Mon objectif est simplement d'afficher dans un cas précis (quand un champs de la BDD contient une chaine de caractère) une phrase standard avec l'info de la BDD, dans le cas contraire laisser un blanc.
claire34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 16h39   #8
Expert Confirmé Sénior
 
Homme Laurent Willems
Expert Stop/Start
Inscription : septembre 2002
Messages : 2 544
Détails du profil
Informations personnelles :
Nom : Homme Laurent Willems
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Expert Stop/Start

Informations forums :
Inscription : septembre 2002
Messages : 2 544
Points : 4 249
Points : 4 249
Bon il va falloir fournir ton code car si je me base sur ce morceau de code ça fonctionne de mon côté

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
cat testArray.php
<?php
$doc = array("test","","toto","","tutu","mimi","","");
 
 
for($i=0;$i<count($doc);$i++)
        {
                if(empty($doc[$i])){
                        echo $i.": empty\n";
                }
                else {
                        echo $i.": full\n";
                        }
        }
var_dump($doc);
?>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
php testArray.php
0: full
1: empty
2: full
3: empty
4: full
5: full
6: empty
7: empty
array(8) {
  [0]=>
  string(4) "test"
  [1]=>
  string(0) ""
  [2]=>
  string(4) "toto"
  [3]=>
  string(0) ""
  [4]=>
  string(4) "tutu"
  [5]=>
  string(4) "mimi"
  [6]=>
  string(0) ""
  [7]=>
  string(0) ""
}
__________________
Alea Jacta Test!
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/01/2011, 17h34   #9
Nouveau Membre du Club
 
Inscription : août 2009
Messages : 223
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 223
Points : 29
Points : 29
Merci mygale1978, je viens de comprendre mon erreur à l'aide de ton bout de code, j'avais une erreur de syntaxe.

Tout est ok à présent donc merci
claire34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h34.


 
 
 
 
Partenaires

Hébergement Web