savoir si un champs est vide ou pas... [PHP] - PHP - Programmation
Marsh Posté le 24-08-2003 à 14:24:21
KdZ' a écrit : |
Avec le jocebug, pas trop
Code :
|
Marsh Posté le 24-08-2003 à 14:27:42
Code :
|
voila, il se trouve que si (dans mon while) $row[x] est vide, je voudrais qu'il print' ' à la place de rien
c plus clair ¿
Marsh Posté le 24-08-2003 à 15:05:02
Arf je debute dans tous ça, et c'est un peu par curiosité, le fait de savoir ça, pourra me resservir pour autre chose...
Mais c'est aussi parce que sinon l'affichage de cellules vides sous nescape c pas tres beau
Merci
Alors, une idée ?
Marsh Posté le 24-08-2003 à 15:07:06
euh... non, en fait, c'est pas clair. t'as combien de champs qui sont retournés par enregistrement? 11 ou 12?
Marsh Posté le 24-08-2003 à 15:09:29
<td>ID</td>
<td>Nom</td>
<td>Prénom</td>
<td>Adresse</td>
<td>Code postal</td>
<td>Ville</td>
<td>Tél. fixe</td>
<td>Tél. portable</td>
<td>E-mail</td>
<td>Date de naissance</td>
<td>Statut</td>
ça fait 11
Marsh Posté le 24-08-2003 à 15:11:09
le champs ID, sera enregistrer automatiquement, et non pas via le forumulaire, il parait que' l'ont peu, je ne c pas comment mais je verrais ça apres (autoincrement ou un truc du style si je me trompe pas)
Marsh Posté le 24-08-2003 à 15:15:25
Je crois pas qu'il y ait de solution miracle, il faut tester :
if (strlen($row[1]) > 0)
echo htmlspecialchars($row[1]);
else
echo ' ';
Marsh Posté le 24-08-2003 à 15:15:58
bah si ca fait onze, comment veux-tu arriver dans ton cas d'avoir tous les champs vide? ta fonction te retournera false et la boucle s'arrètera d'office...
Marsh Posté le 24-08-2003 à 15:18:14
gizmo a écrit : bah si ca fait onze, comment veux-tu arriver dans ton cas d'avoir tous les champs vide? ta fonction te retournera false et la boucle s'arrètera d'office... |
Mais nan, par exemple seul le champs VILLE peut etre vide dans ce cas il affichera  
Merci quand meme...
Marsh Posté le 24-08-2003 à 15:19:59
mrBebert a écrit : Je crois pas qu'il y ait de solution miracle, il faut tester : |
c ce que j'ai penser aussi, il faut donc que je test pour chaque ligne, c bien ça ?
Par contre, je pige pas bien ton code, j'en avais pondu un un peu plus simple mais je vais quand meme utiliser le tiens, si tu pouvais me l'expliquer ?
Merci
Marsh Posté le 24-08-2003 à 15:22:06
hum... chui pas bien réveillé.
Par contre, le code là est ultra lourd.
un simple row[x] ? echo row[x] : echo ' ' suffit.
Marsh Posté le 24-08-2003 à 15:25:52
gizmo a écrit : hum... chui pas bien réveillé. |
le code de mrBebert est trop lourd ?
donc voila ce que tu proposes :
Code :
|
c bien ça ? (et ce pour chaque lignes ?)
Marsh Posté le 24-08-2003 à 15:26:00
KdZ' a écrit : |
c'est le htmlspecialchars() qui te pose problème ?
C'est pour éviter que des chaines de caractères ne pose problème dans la mise en page. Si un utilisateur s'amuse à mettre un & ou un <br> dans son nom
edit : tiens, j'ai tapé <br> dans mon post, mais à l'affichage; il n'y pas de retour à ligne, c'est un effet du htmlspecialchars()
Marsh Posté le 24-08-2003 à 15:30:22
mrBebert a écrit : c'est le htmlspecialchars() qui te pose problème ? |
A oui ça peut etre pratique, à voir pour la suite...
J'aimerais aussi que les ",',les balises html et tout le reste ne soit pas prit en compte, je veux du texte brut ça devrait surement etre possible par la suite...
Marsh Posté le 24-08-2003 à 16:03:44
Y'a t'il moyen de faire un fonction plutot que de faire ça manuellement à chaques ligne ? parce que, je viens de voir que on ne peut pas mettre de condition dans un print...ça revient à faire un truc plutot lourd...
Qui à une idée ?
Marsh Posté le 24-08-2003 à 16:12:15
oui, tu peux en faire une fonction
function miseenforme($str) {
if (strlen($str) > 0) return htmlspecialchars($str); else return ' ';
}
while (...) {
...
echo '<tr>';
echo '<td>' . $row[0] . '</td>';
echo '<td>' . miseenforme($row[1]) . '</td>';
...
}
Marsh Posté le 24-08-2003 à 16:26:49
Merci bebert, ça marche nikel
par la meme occasion je commence à comprendre le fonctionnement de function
Juste ne question, à quoi ça sert d'utiliser $strlen ?
Marsh Posté le 24-08-2003 à 16:32:43
strlen est une fonction, pas une variable. Elle renvoie le nombre de caractères de la chaîne de caractères passée en paramètres.
Marsh Posté le 24-08-2003 à 17:59:46
A oki, et comment on fait pour avoir un champs qui serait auto increment
Marsh Posté le 24-08-2003 à 18:06:25
ca, c'est lié à la base (MySQL j'imagine), rien à voir avec le PHP.
Il faut définir une colonne avec l'indication "auto_increment". Cette colonne doit être une clé primaire (donc not null), de type entier. A l'insertion, il suffit de ne pas fournir de valeur (ou la valeur NULL) à cette colonne, mysql générera automatiquement une valeur. Pour récupérer cette valeur, tu peux passer la requête : SELECT LAST_INSERT_ID() ou utiliser la fonction mysql_last_insert_id() avec le rsultat du mysql_query qui a réalisé l'insertion.
Marsh Posté le 24-08-2003 à 18:32:26
oui, j'ai deja essayer mais je n'arive pas a crée la table..
capture :
Marsh Posté le 24-08-2003 à 18:36:06
faut que ce soit un type entier, pas chaine de caractères
comment veux tu qu'il incrémente une chaine de caractères
Marsh Posté le 24-08-2003 à 18:41:41
mrBebert a écrit : faut que ce soit un type entier, pas chaine de caractères |
oui, je me doutait bien que c'etait ça
que est le parametre qui doit etre utilisé ?
Marsh Posté le 24-08-2003 à 18:44:59
int, c'est le plus simple
Si tu sais que tu auras très peu de valeurs, tu peux à la rigueur utiliser smallint ou tinyint. Mais bon, pour gagner 2 ou 3 octets, je pense pas que ca en vaille le coup.
Marsh Posté le 24-08-2003 à 18:49:18
Merci mec
en fait j'avais bien essayer "int" aussi, mais je le faisait en modifiant mon champs, et il ne devait pas etre "primaire", c dommage qu'une fois un champs crée, on ne peut pas modifier s'il est primaire, index, unique etc.
nan ?
Marsh Posté le 24-08-2003 à 19:01:18
c ce que j'utilise, mais une vielle version (celle par default avec easyphp 1.6) et il n'y a pas moyen de passer un champs en "primaire" une fois le champs cree...
Marsh Posté le 24-08-2003 à 19:12:19
tiens regarde, c nouveau, voila que ça ne fonctionne plus :
Code :
|
ça devrait marcher ça nan ?
avant ça fonctionnait impec, mais j'avais moins de parametres ($prenom...)
Marsh Posté le 24-08-2003 à 19:15:40
faut protéger les chaînes de caractères avec addslashes() (même principe que le htmlspecialchars() pour le html)
Marsh Posté le 24-08-2003 à 19:19:15
oui, mais rien est enregistrer dans la bdd
avant ça marchait... et je n'ai aps mis de caracteres speciaux dans mes champs de formulaire
edit : en fait j'ai mon message Erreur, la fiche n'a pas été sauvegardée ! qui s'affiche...
Marsh Posté le 24-08-2003 à 19:21:57
affiche la requête, tu verras bien à quoi elle ressemble
(et pourquoi tu mets des doubles quotes dans le mysql_query() ? )
Marsh Posté le 24-08-2003 à 19:25:30
mrBebert a écrit : affiche la requête, tu verras bien à quoi elle ressemble |
comme ça alors : (ça change quelquechose ?)
Code :
|
Marsh Posté le 24-08-2003 à 19:32:02
non, pas de quotes du tout, c'est déja une chaîne de caractères
Marsh Posté le 24-08-2003 à 19:32:52
Citation : affiche la requête, tu verras bien à quoi elle ressemble |
oula, trop chaud...
ça :
Code :
|
?
si oui, elle s'affiche correctement, j'ai mes champs du formulaire qui s'affiche sur une ligne.
Marsh Posté le 24-08-2003 à 19:41:48
non, fais un :
htmlspecialchars($sql);
pour voir exactement ce qui est envoyé à mysql
Marsh Posté le 24-08-2003 à 19:47:06
mrBebert a écrit : non, fais un : |
a oui...
voila ce qui est envoyé mysql :
Code :
|
c normal, hein ?
Marsh Posté le 24-08-2003 à 19:48:47
ça se trouve :
adresse_1 //c pas autoriser
adrresse1 //c autoriser seulement
non plus ?
Marsh Posté le 24-08-2003 à 19:55:06
Tes colonnes date_naissance, elles sont de type DATE ? Dans ce cas, les valeurs passées sont pas correctes. Idem pour le code postal si tu l'as défini en entier.
Marsh Posté le 24-08-2003 à 14:23:27
Hello
Voila, j'ai une liste de membre, je fais un while de tous mes champs pour afficher tous ça, bon ça fonctionne super bien, mais le pb c'est que quand un champs est vide dans la bdd, il me l'affiche quand meme (c'est tres bien)... mais je voudrais que si un champs ne contient aucune valeur, plutot que de m'fficher un blanc '' j'aimerais avoir un truc du style ' '
j'ai pensser à un truc du style :
if($row
$row
bon en fait c totalement faux
vous voyez ce que je veux faire ?
Message édité par KdZ' le 24-08-2003 à 14:25:17