Code super simple mais php plante

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 : Code super simple mais php plante

Re: Code super simple mais php plante

par yann18 » 26 août 2013, 12:54

Merci, en effet le var_dump indique un espace. Mais la base de données contient bien NOMATCH sans espace.

D'où peut-il provenir ?

Code : Tout sélectionner

string(8) "NOMATCH "
Le code utilisé pour récupérer la valeur est le suivant:

Code : Tout sélectionner

while ($row = oci_fetch_array ($stid, OCI_BOTH+OCI_RETURN_NULLS)) { $matched = $row['MATCHED']; }
l'espace provient sans doute de la BD et à été introduit au moment de l'insertion de NOMATCH à partir du formulaire. Pour vérifier que l'espace est bien dans la BD il suffit de vérifier la taille de la chaîne depuis SQL * Plus:
SELECT length(MATCHED) FROM LA_TABLE;
si cette requête retourne 8 ça confirme bien que l'espace est dans la BD.

Pour éviter d'avoir des espaces sur des string il faut nettoyer les espaces à chaque ajout d'une chaîne en appliquant la fonction trim() sur la donnée reçue du formulaire

Re: Code super simple mais php plante

par moogli » 26 août 2013, 12:46

salut,

ton code n'ajoute rien, est tu certain qu'il n'y a pas d'espace dans la base ?
les éditeurs SQL affiche la donnée tu ne vois pas l'espace (par exemple avec pl dev tu ne le verra pas).
Par contre s'il t'indique le nombre de caractère tu pourras comparer avec ce que tu vois.

cela peux aussi venir de la requête SQL si tu fait quelque chose de plus moins simple.


@+

Re: Code super simple mais php plante

par Alexandretest » 26 août 2013, 12:07

Merci, en effet le var_dump indique un espace. Mais la base de données contient bien NOMATCH sans espace.

D'où peut-il provenir ?

Code : Tout sélectionner

string(8) "NOMATCH "
Le code utilisé pour récupérer la valeur est le suivant:

Code : Tout sélectionner

while ($row = oci_fetch_array ($stid, OCI_BOTH+OCI_RETURN_NULLS)) { $matched = $row['MATCHED']; }

Re: Code super simple mais php plante

par xTG » 26 août 2013, 11:55

Fais un var_dump() plutôt de ta variable contenant NO MATCH.
Je ne serai pas étonné d'y retrouver une taille indiquant un caractère non imprimable ou bien un espace. ;)

Code super simple mais php plante

par Alexandretest » 26 août 2013, 10:49

Bonjour !

Truc de fou sur lequel je bloque depuis 1 semaine

J'ai un code tout simple qui récupère des valeurs dans une base de données Oracle.
Mon problème survient lorsque je traite ces données.

Code : Tout sélectionner

<?php $matched = $row['MATCHED']; echo "valeur: " .$matched; if ($matched != 'NOMATCH') { ?>résultat: PENDING<?php } else { ?>résultat: CLOSED<?php } ?>
Donc je stocke la valeur dans la variable $matched et selon le contenu, j'affiche PENDING ou CLOSED.

Sauf que lorsque le contenu est 'NOMATCH' il passe quand même dans la condition et affiche PENDING au lieu de CLOSED.

c'est frappant lorsque j'ai ajouté le echo pour vérifier le contenu et que j'ai affiché:

valeur: NOMATCH
résultat: PENDING

Dingue non ?

Quelqu'un pour m'aider ?