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

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Insérer des valeurs dans une zone de texte [Résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Insérer des valeurs dans une zone de texte [Résolu]

n°227686
guillot
Posté le 13-10-2002 à 19:17:43  profilanswer
 

Hello
 
Finissant de développer un site je bloque sur un petit problème...
 
En fait j'ai besoin d'inscrire des utilisateurs, pour ça aucun pb, je fait saisir les infos et les insère dans ma bas mySQL.
 
En revanche je voudrais faire un formulaire de modification mais, après avoir récupéré les valeurs de ma table dans mySQL je n'arrive pas à les afficher dans mes différentes zones de texte.
 
Comment puis-je faire ?
 
J'ai bien essayé de cette façon :
 
<?
$sql = "SELECT * FROM maTable WHERE monId = " . $newId . ";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
 
 
function print_val ($nom)
{
 $champ = mysql_result($result, 0, $nom);
 $ligne = " value=\"" . $champ . "\"";
 print($ligne);
 }
}
?>
 
<input name="txt_nom" type="text" id="txt_nom"<? print_val("nomChamp" ); ?>

 
Pour obtenir par exemple :
 
<input name="txt_nom" type="text" id="txt_nom" value="10">
 
Mais mon navigateur me met l'erreur :
 
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp\www\lol\user_modif.php on line 37
value="">

 
 
Qu'est-ce que je fais mal ?
 
 
Merci d'avance !


Message édité par guillot le 13-10-2002 à 19:45:48
mood
Publicité
Posté le 13-10-2002 à 19:17:43  profilanswer
 

n°227687
guillot
Posté le 13-10-2002 à 19:21:05  profilanswer
 

Je pensais que ma variable $result devait être déclarée en global mais l'erreur est la même au final quand je déclare mon global $result;

n°227691
mrbebert
Posté le 13-10-2002 à 19:31:43  profilanswer
 

Quand tu fais un $result = mysql_query($sql), c'est mieux de tester le résultat pour vérifier que la requête est bien passée
if (! $result) {
  // traitement de l'erreur
  ...
  exit;
}

n°227693
guillot
Posté le 13-10-2002 à 19:37:47  profilanswer
 

C'est justement ce que je fais avec mon
$rows = mysql_num_rows($result);
 
Je n'ai pas affiché tout le code de ma page mais après je fait un test du nombre de résultats envoyés
if ($rows <> 0)...
 
 
 
 
Quand j'affiche les infos au début de mon code ça marche mais dans ma fonction tout est vide... même en déclarant mes variables en global...

n°227694
mrbebert
Posté le 13-10-2002 à 19:42:39  profilanswer
 

Guillot a écrit a écrit :

C'est justement ce que je fais avec mon
$rows = mysql_num_rows($result);
 
Je n'ai pas affiché tout le code de ma page mais après je fait un test du nombre de résultats envoyés
if ($rows <> 0)...
 
 
Quand j'affiche les infos au début de mon code ça marche mais dans ma fonction tout est vide... même en déclarant mes variables en global...



non
mysql_num_rows, ca compte le nombre de lignes du résultat. Rien à voir avec la vérification de la bonne exécution de la requête.
Une requête peut être juste et renvoyer 0 ligne.

n°227695
guillot
Posté le 13-10-2002 à 19:43:19  profilanswer
 

Bizzarerie du PHP, il faut déclarer les variables globales dans chaque fonction.
 
J'ai vu ça sur un site...
 
Mon problème est résolu :)
 
Merci

n°227698
guillot
Posté le 13-10-2002 à 19:45:07  profilanswer
 

Citation :

mysql_num_rows, ca compte le nombre de lignes du résultat. Rien à voir avec la vérification de la bonne exécution de la requête.  
Une requête peut être juste et renvoyer 0 ligne


 
Si elle s'est mal exécutée elle me renverra 0 lignes donc elle ne passera pas mon test.

n°227702
mrbebert
Posté le 13-10-2002 à 19:53:12  profilanswer
 

Guillot a écrit a écrit :

Citation :

mysql_num_rows, ca compte le nombre de lignes du résultat. Rien à voir avec la vérification de la bonne exécution de la requête.  
Une requête peut être juste et renvoyer 0 ligne


 
Si elle s'est mal exécutée elle me renverra 0 lignes donc elle ne passera pas mon test.



non, c'est pas comme ca que ca marche.
Si ca passe pas, $result = 0 et mysql_num_rows va mettre un message d'erreur.
Faut que tu fasses la distinction entre :
- une requête fausse (erreur de syntaxe, non connecté à la base...)
- une requête juste, qui peut renvoyer 0 ligne

n°227730
guillot
Posté le 13-10-2002 à 20:59:25  profilanswer
 

Oui c'est vrai que ça peut être utile si plantage de base par ex.
 
Généralement comme je teste ma page, je vois si ma requête est juste ou pas, mais si j'ai une valeur qu iconvient pas et que ma requête foire là je suis foutu...
 
Je m'en vais rajouter ça :)

n°228589
omega2
Posté le 16-10-2002 à 11:12:30  profilanswer
 

Guillot a écrit a écrit :

Bizzarerie du PHP, il faut déclarer les variables globales dans chaque fonction.
 
J'ai vu ça sur un site...
 
Mon problème est résolu :)
 
Merci
 



C'est pas une bizareri du langage, quand tu fais un global $var, t'indique juste au compilateur qu'a partir de maintenant et jusqu'à la sortie du bloc en court, la variable $var corespond à l'utilisation de la variable globale corespondante.
C'est une protection.
Par contre, il y a un autre mot clé de php qui permet de déclarer des variables utilisables partout sans les redéclaré dans chaque fonction mais après, pour le débugage, c'est la croit et la banière pour trouver d'où sort telle ou telle valeur quand c'est pas toi qui a écrit le code.

mood
Publicité
Posté le 16-10-2002 à 11:12:30  profilanswer
 

n°229134
guillot
Posté le 17-10-2002 à 00:36:31  profilanswer
 

L'autre façon de les déclarer globalement c'est laquelle ?
 
je sais qu'on peut utiliser #define() pour les constantes mais pour les variables, ça m'intéresse bien.
 
Etant donné que j'ai écrit tout les scripts du site et que j'ai fait un cahier des charges, un guide développeur, suffira que je l'explique dedans pr comprendre...
 
Merci

n°229236
omega2
Posté le 17-10-2002 à 10:26:34  profilanswer
 

Guillot a écrit a écrit :

L'autre façon de les déclarer globalement c'est laquelle ?
 
je sais qu'on peut utiliser #define() pour les constantes mais pour les variables, ça m'intéresse bien.
 
Etant donné que j'ai écrit tout les scripts du site et que j'ai fait un cahier des charges, un guide développeur, suffira que je l'explique dedans pr comprendre...
 
Merci
 



Ben ça, je m'en rapelles pas, je l'ai jamais utilisé d'une part par ce que j'en ai jamais eu besoin (je me suis toujours déclaré avec les global), d'autre part par ce que je trouves que ca rend le code moins clair (c'est peut être pour ça que j'arrives pas à comprendre comment fonctionne certain programmes trouvés sur le net) et enfin par ce que je trouves que ca complique le travail du programmeur (quand tu créé une nouvelle fonction, tu peux pas utiliser une variable locale ayant le même nom qu'une variable existant partout et quand tu créé une vairable existant partout, si une variable locale de même nom existe quelque part, alors t'auras droit à un gros bug sans savoir d'où ça vient).
 
Désolé de pas pouvoir t'aider plus.

n°229256
guillot
Posté le 17-10-2002 à 10:48:40  profilanswer
 

Citation :

quand tu créé une nouvelle fonction, tu peux pas utiliser une variable locale ayant le même nom qu'une variable existant partout et quand tu créé une vairable existant partout, si une variable locale de même nom existe quelque part, alors t'auras droit à un gros bug sans savoir d'où ça vient


 
Normalement si tu faisais bien, tu nommerais tes variables différemment de tes variables locales.
 
Par ex :
"GmaVariable" pour une globale
"maVariable" pour une locale
 
Après c'est toi qui voit comment faire, mais le mieux c'est de faire comme ça.
 
Dans le cas de programmes très longs, mettre le type de la variable peut aussi être utile (booléen, numérique, string...).
 
Avec tout ça tu devrais avoir une marge avant de retomber 2 fois sur la même variable !!
 
 
Sinon pour mon cas de variables globales, en fait j'en ai assez rarement besoin donc je me débrouillerais avec mon "global" :D

n°229335
omega2
Posté le 17-10-2002 à 12:00:28  profilanswer
 

Guillot a écrit a écrit :

Citation :

quand tu créé une nouvelle fonction, tu peux pas utiliser une variable locale ayant le même nom qu'une variable existant partout et quand tu créé une vairable existant partout, si une variable locale de même nom existe quelque part, alors t'auras droit à un gros bug sans savoir d'où ça vient


 
Normalement si tu faisais bien, tu nommerais tes variables différemment de tes variables locales.
 
Par ex :
"GmaVariable" pour une globale
"maVariable" pour une locale
 
Après c'est toi qui voit comment faire, mais le mieux c'est de faire comme ça.
 
Dans le cas de programmes très longs, mettre le type de la variable peut aussi être utile (booléen, numérique, string...).
 
Avec tout ça tu devrais avoir une marge avant de retomber 2 fois sur la même variable !!
 
 
Sinon pour mon cas de variables globales, en fait j'en ai assez rarement besoin donc je me débrouillerais avec mon "global" :D



C'est vrai que j'ai pas fait comme ça.
Et c'est vrai aussi que mes fonctions font rarement plus de 100 lignes. (et bien souvent beaucoup moins)
Par contre, j'ai utilisé quelques conventions de nom de variables à certains endroits pour être sur de ne pas les confondre avec les autres.


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

  [PHP] Insérer des valeurs dans une zone de texte [Résolu]

 

Sujets relatifs
problemes sur les tableaux (résolu)Transférer l'intégralité d'une base de donnée [résolu]
[PHP] Mise a jour d un cookieDREAMmx et PHP 3
[PHP] Détecter le nom de la page en cours[PHP-MYSQL]Conversion date
[VB] un outil de texte avancer???ASP & PHP
[PHP] Différentes facon de concevoir un caddie?Comment disposer une image au sein d'un texte... (CSS inside).
Plus de sujets relatifs à : [PHP] Insérer des valeurs dans une zone de texte [Résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR