Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1073 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] savoir si un champs est vide ou pas...

 



 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[PHP] savoir si un champs est vide ou pas...

n°495748
KdZ'
Simple®
Posté le 24-08-2003 à 14:23:27  profilanswer
 

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 '&nbsp'  :wahoo:  
 
j'ai pensser à un truc du style :
 
if($row

  • == '')

$row

  • = ' ';


bon en fait c totalement faux  :pfff:  
 
vous voyez ce que je veux faire ?


Message édité par KdZ' le 24-08-2003 à 14:25:17
mood
Publicité
Posté le 24-08-2003 à 14:23:27  profilanswer
 

n°495749
kadreg
profil: Utilisateur
Posté le 24-08-2003 à 14:24:21  profilanswer
 

KdZ' a écrit :


vous voyez ce que je veux faire ?


 
Avec le jocebug, pas trop [:ddr555]
 

Code :
  1. if($row

    • == '')
    • $row[*] = ' ';


Message édité par kadreg le 24-08-2003 à 14:24:50

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°495750
KdZ'
Simple®
Posté le 24-08-2003 à 14:27:42  profilanswer
 

:D  
 

Code :
  1. <?php
  2. // CONNEXION & SELECTION DE LA BDD
  3. require('connexion.php');
  4. // SELECTION DE LA TABLE
  5. $req = mysql_query("SELECT * FROM membres" ) or die ("erreur requete" );
  6. print('<table width="100%" border="1" cellspacing="0" cellpadding="0" bordercolor="#000000">
  7. <tr align="center" bgcolor="#0099CC">
  8. <td>ID</td>
  9. <td>Nom</td>
  10. <td>Prénom</td>
  11. <td>Adresse</td>
  12. <td>Code postal</td>
  13. <td>Ville</td>
  14. <td>Tél. fixe</td>
  15. <td>Tél. portable</td>
  16. <td>E-mail</td>
  17. <td>Date de naissance</td>
  18. <td>Statut</td>
  19. </tr>
  20. ');
  21. while ($row = mysql_fetch_row($req))
  22. {
  23. echo ("<tr>
  24. <td>$row[0]</td>
  25. <td>$row[1]</td>
  26. <td>$row[2]</td>
  27. <td>$row[3]</td>
  28. <td>$row[4]</td>
  29. <td>$row[5]</td>
  30. <td>$row[6]</td>
  31. <td>$row[7]</td>
  32. <td>$row[8]</td>
  33. <td>$row[9]</td>
  34. <td>$row[10]</td>
  35. </tr>
  36. " );
  37. }
  38. print('</table>
  39. ');
  40. ?>


 
 
voila, il se trouve que si (dans mon while) $row[x] est vide, je voudrais qu'il print'&nbsp' à la place de rien  :sarcastic:  
 
c plus clair ¿ :pt1cable:


Message édité par KdZ' le 24-08-2003 à 14:29:13
n°495760
gizmo
Posté le 24-08-2003 à 14:58:46  profilanswer
 

clair oui, mais quel intérêt?

n°495763
KdZ'
Simple®
Posté le 24-08-2003 à 15:05:02  profilanswer
 

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 ?

n°495764
gizmo
Posté le 24-08-2003 à 15:07:06  profilanswer
 

euh... non, en fait, c'est pas clair. t'as combien de champs qui sont retournés par enregistrement? 11 ou 12?

n°495766
KdZ'
Simple®
Posté le 24-08-2003 à 15:09:29  profilanswer
 

 <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  ;)

n°495767
KdZ'
Simple®
Posté le 24-08-2003 à 15:11:09  profilanswer
 

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)

n°495768
mrbebert
Posté le 24-08-2003 à 15:15:25  profilanswer
 

Je crois pas qu'il y ait de solution miracle, il faut tester :
 
if (strlen($row[1]) > 0)  
    echo htmlspecialchars($row[1]);
else
    echo '&nbsp;';


Message édité par mrbebert le 24-08-2003 à 15:15:39
n°495769
gizmo
Posté le 24-08-2003 à 15:15:58  profilanswer
 

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...

mood
Publicité
Posté le 24-08-2003 à 15:15:58  profilanswer
 

n°495770
KdZ'
Simple®
Posté le 24-08-2003 à 15:18:14  profilanswer
 

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 &nbsp
Merci quand meme...

n°495771
KdZ'
Simple®
Posté le 24-08-2003 à 15:19:59  profilanswer
 

mrBebert a écrit :

Je crois pas qu'il y ait de solution miracle, il faut tester :
 
if (strlen($row[1]) > 0)  
    echo htmlspecialchars($row[1]);
else
    echo '&nbsp;';


 
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  :kaola: mais je vais quand meme utiliser le tiens, si tu pouvais me l'expliquer ?  :)  
Merci  ;)


Message édité par KdZ' le 24-08-2003 à 15:22:48
n°495773
gizmo
Posté le 24-08-2003 à 15:22:06  profilanswer
 

hum... chui pas bien réveillé.
 
Par contre, le code là est ultra lourd.
un simple row[x] ? echo row[x] : echo '&nbsp;' suffit.

n°495775
KdZ'
Simple®
Posté le 24-08-2003 à 15:25:52  profilanswer
 

gizmo a écrit :

hum... chui pas bien réveillé.
 
Par contre, le code là est ultra lourd.
un simple row[x] ? echo row[x] : echo '&nbsp;' suffit.


 
le code de mrBebert est trop lourd ?
 
donc voila ce que tu proposes :
 

Code :
  1. if(!$row[x]) 
  2.    echo '&nbsp';
  3. else
  4.    echo "$row[1]";


 
c bien ça ? (et ce pour chaque lignes ?)

n°495776
mrbebert
Posté le 24-08-2003 à 15:26:00  profilanswer
 

KdZ' a écrit :


 
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  :kaola: mais je vais quand meme utiliser le tiens, si tu pouvais me l'expliquer ?  :)  
Merci  ;)

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 :D
 
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() :)


Message édité par mrbebert le 24-08-2003 à 15:27:09
n°495779
KdZ'
Simple®
Posté le 24-08-2003 à 15:30:22  profilanswer
 

mrBebert 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 :D
 
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() :)  


 
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... ;)

n°495801
KdZ'
Simple®
Posté le 24-08-2003 à 16:03:44  profilanswer
 

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 ?

n°495809
mrbebert
Posté le 24-08-2003 à 16:12:15  profilanswer
 

oui, tu peux en faire une fonction
 
function miseenforme($str) {
  if (strlen($str) > 0) return htmlspecialchars($str); else return '&nbsp;';
}
 
while (...) {
   ...
   echo '<tr>';
   echo '<td>' . $row[0] . '</td>';
   echo '<td>' . miseenforme($row[1]) . '</td>';
   ...
}


Message édité par mrbebert le 24-08-2003 à 16:13:27
n°495821
KdZ'
Simple®
Posté le 24-08-2003 à 16:26:49  profilanswer
 

Merci bebert, ça marche nikel :)
par la meme occasion je commence à comprendre le fonctionnement de function  :jap:  
 
Juste ne question, à quoi ça sert d'utiliser $strlen ?

n°495825
mrbebert
Posté le 24-08-2003 à 16:32:43  profilanswer
 

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.

n°495860
KdZ'
Simple®
Posté le 24-08-2003 à 17:59:46  profilanswer
 

A oki, et comment on fait pour avoir un champs qui serait auto increment :)

n°495862
mrbebert
Posté le 24-08-2003 à 18:06:25  profilanswer
 

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.


Message édité par mrbebert le 24-08-2003 à 18:07:00
n°495869
KdZ'
Simple®
Posté le 24-08-2003 à 18:32:26  profilanswer
 

oui, j'ai deja essayer mais je n'arive pas a crée la table..
capture :
http://62.23.2.149/forum/ubbhtml/upload/code.1061742512.JPG

n°495874
mrbebert
Posté le 24-08-2003 à 18:36:06  profilanswer
 

faut que ce soit un type entier, pas chaine de caractères :non:  
 
comment veux tu qu'il incrémente une chaine de caractères :??:

n°495879
KdZ'
Simple®
Posté le 24-08-2003 à 18:41:41  profilanswer
 

mrBebert a écrit :

faut que ce soit un type entier, pas chaine de caractères :non:  
 
comment veux tu qu'il incrémente une chaine de caractères :??:  


 
oui, je me doutait bien que c'etait ça  :pfff:  
http://62.23.2.149/forum/ubbhtml/upload/code.1061742997.JPG
que est le parametre qui doit etre utilisé ?

n°495882
mrbebert
Posté le 24-08-2003 à 18:44:59  profilanswer
 

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.

n°495885
KdZ'
Simple®
Posté le 24-08-2003 à 18:49:18  profilanswer
 

Merci mec  :jap:
 
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 ?

n°495886
mrbebert
Posté le 24-08-2003 à 18:52:16  profilanswer
 

si, bien sur :)  
(peut être pas par phpmyadmin ? [:figti] )

n°495889
KdZ'
Simple®
Posté le 24-08-2003 à 19:01:18  profilanswer
 

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...

n°495892
KdZ'
Simple®
Posté le 24-08-2003 à 19:12:19  profilanswer
 

:pfff: tiens regarde, c nouveau, voila que ça ne fonctionne plus :

Code :
  1. $sql = "INSERT INTO 'membres' (nom, prenom, date_naissance2, date_naissance3, date_naissance1, adresse_1, adresse_2, adresse3) VALUES ('$nom', '$prenom', '$date_naissance2', '$date_naissance3', '$date_naissance1', '$adresse_1', '$adresse_2', '$adresse3')";
  2. mysql_query ("$sql" ) or die ('Erreur, la fiche n\'a pas été sauvegardée !');


 
ça devrait marcher ça nan ?
avant ça fonctionnait impec, mais j'avais moins de parametres ($prenom...)

n°495895
mrbebert
Posté le 24-08-2003 à 19:15:40  profilanswer
 

faut protéger les chaînes de caractères avec addslashes() (même principe que le htmlspecialchars() pour le html)

n°495899
KdZ'
Simple®
Posté le 24-08-2003 à 19:19:15  profilanswer
 

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  :pfff:  :pfff:
edit : en fait j'ai mon message Erreur, la fiche n'a pas été sauvegardée ! qui s'affiche...


Message édité par KdZ' le 24-08-2003 à 19:21:15
n°495902
mrbebert
Posté le 24-08-2003 à 19:21:57  profilanswer
 

affiche la requête, tu verras bien à quoi elle ressemble [:proy]  
 
(et pourquoi tu mets des doubles quotes dans le mysql_query() ? :heink: )

n°495904
KdZ'
Simple®
Posté le 24-08-2003 à 19:25:30  profilanswer
 

mrBebert a écrit :

affiche la requête, tu verras bien à quoi elle ressemble [:proy]  
 
(et pourquoi tu mets des doubles quotes dans le mysql_query() ? :heink: )


 
comme ça alors : (ça change quelquechose ?)

Code :
  1. $sql = "INSERT INTO 'membres' (nom, prenom, date_naissance2, date_naissance3, date_naissance1, adresse_1, adresse_2, adresse3, ville, code_postal, tel_fixe, tel_portable, email, statut) VALUES ('$nom', '$prenom', '$date_naissance2', '$date_naissance3', '$date_naissance1', '$adresse_1', '$adresse_2', '$adresse3', '$ville', '$code_postal', '$tel_fixe', '$tel_portable', '$email', '$statut')";
  2. mysql_query('$sql') or die ('Erreur, la fiche n\'a pas pu être sauvegardée !');
  3. echo ("Membre enregistré !<br /><br /><a href=\"inscription_membre.php\">NOUVEAU MEMBRE</a><br /><a href=\"membres.php\">LISTE DES MEMBRES</a>" );


Message édité par KdZ' le 24-08-2003 à 19:26:28
n°495906
mrbebert
Posté le 24-08-2003 à 19:32:02  profilanswer
 

non, pas de quotes du tout, c'est déja une chaîne de caractères [:proy]

n°495907
KdZ'
Simple®
Posté le 24-08-2003 à 19:32:52  profilanswer
 

Citation :

affiche la requête, tu verras bien à quoi elle ressemble


 
 :heink: oula, trop chaud...
ça :

Code :
  1. print("$nom $prenom $date_naissance2 $date_naissance3 $date_naissance1 $adresse_1 $adresse_2 $adresse3 $ville $code_postal $tel_fixe $tel_portable $email $statut" );

?
si oui, elle s'affiche correctement, j'ai mes champs du formulaire qui s'affiche sur une ligne.


Message édité par KdZ' le 24-08-2003 à 19:33:06
n°495915
mrbebert
Posté le 24-08-2003 à 19:41:48  profilanswer
 

non, fais un :
htmlspecialchars($sql);
pour voir exactement ce qui est envoyé à mysql

n°495922
KdZ'
Simple®
Posté le 24-08-2003 à 19:47:06  profilanswer
 

mrBebert a écrit :

non, fais un :
htmlspecialchars($sql);
pour voir exactement ce qui est envoyé à mysql


 
 :jap: a oui...
voila ce qui est envoyé mysql :

Code :
  1. INSERT INTO 'membres' (nom, prenom, date_naissance2, date_naissance3, date_naissance1, adresse_1, adresse_2, adresse3, ville, code_postal, tel_fixe, tel_portable, email, statut) VALUES ('nico', 'jshsgfhs', 'b', 'c', 'a', 'adpr', 'addeux', '', 'pouliguen', 'codeppp', 'fixe', 'portable', 'mail', 'Membre')


 
c normal, hein ? :??:


Message édité par KdZ' le 24-08-2003 à 19:47:40
n°495924
KdZ'
Simple®
Posté le 24-08-2003 à 19:48:47  profilanswer
 

ça se trouve :
 
adresse_1 //c pas autoriser
adrresse1 //c autoriser seulement
non plus ?

n°495926
mrbebert
Posté le 24-08-2003 à 19:55:06  profilanswer
 

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.


Message édité par mrbebert le 24-08-2003 à 19:55:16
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] savoir si un champs est vide ou pas...

 

Sujets relatifs
Topic sur les livres PHP / MYSQL + opinions[PHP]Fermer une fenêtre :$
[MySQL] Astuce pour qu'un count( ) vide retourne la valeur 0 ?[ MySql ] Problème "Table inexistante" ou "Champs pas dans field list"
[PHP] Je cherche 2 scripts ou bien 2 aides (Gestion fichiers/images)[Latex] Environnement vide
[PHP] ereg...tout simple...Ressources nécéssaires pour du PHP & MySQL?
[API] Comment savoir si la queue d'impression est vide ou non ? 
Plus de sujets relatifs à : [PHP] savoir si un champs est vide ou pas...


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR