conseil ecriture commande mysql

conseil ecriture commande mysql - PHP - Programmation

Marsh Posté le 09-12-2002 à 18:57:52    

$query="INSERT INTO forum (url, comment, language, Category) VALUES ('$url', '$comment', '$fet2['nom']', '$fet['nom']';)";
 
ca peu s'ecrire ce qu'il ya en gras?
paske cette requete ne veut pas s'enregisté alors ca peu ptet venir de la :/
 
avec les '' on sait jamais

Reply

Marsh Posté le 09-12-2002 à 18:57:52   

Reply

Marsh Posté le 09-12-2002 à 18:59:20    

non, ca ne peut pas s'écrire. Vire les apostrophes autour de nom

Reply

Marsh Posté le 09-12-2002 à 19:02:08    

:jap:  
 
m'enfin maintenant
 

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in add_forum.php on line 9

[:totoz]

Reply

Marsh Posté le 09-12-2002 à 19:19:09    

tu as bien retiré les apostrophes à tous les arguments nom?

Reply

Marsh Posté le 09-12-2002 à 19:25:48    

vi j'ai tester
 
$query="INSERT INTO forum (url, comment, language, Category) VALUES (\"$url\", \"$comment\", \"$fet2[nom]\",\"$fet[nom]\" )";
 
et la ca marche pourtant il ne m'enregistre pas les valeur [nom] qui viennent de la::
 

<?include("menu_principal.php" ) ?>
 
 
 
 
 
 
<td bgcolor="#E8E8E8" style="width:350px;" align=right>
<form method=post action="add_forum.php">
<u><p align="left">url</u><p>
<input type=text name="url" value="adress of the forum">
 <u><p align="left">Commentary</u><p>
 <center><textarea rows=4 cols=50 name="comment">Commentary for this forum</textarea></center>
 
 
 
 
<u><p align=left>Category</u></p>
 
<?
//connection
require("connect.php" );
$connect=mysql_connect(SERVEUR, NOM, PASSE);
mysql_select_db(BASE, $connect);
//category
$req='select * from Category';
$que=mysql_query($req);
$prem_lettre=substr($nom,0, 3);
echo '<select name="cat[]" size="1" >';
while ($fet=mysql_fetch_array($que))
 {
  echo '<option value="'.$fet['value'].'">'.$fet['nom'].'</option>';
 }
echo '</select><p></p>';
 
//language
echo '<u><p align=left>Language</u></p>';
$req2='select * from language';
$que2=mysql_query($req2);
$prem_lettre2=substr($fet2['nom'],0, 3);
echo '<select name="lang[]" size="1" >';
while ($fet2=mysql_fetch_array($que2))
 {
  echo '<option value="'.$fet2['value'].'">'.$fet2['nom'].'</option>';
 }
echo '</select>';
 
 
?>
 
 
<u><p align="left">submit</u><p>
<input type=submit name="submit_search" value="add forum"><br>
<center><img src="panneau_Attention2.gif">If your language or your specific category isn't created yet, please go <b><u><a href="add_cat.php">here</a></u></b> to create it ... Moderator watch you !
</center></form>
 
<?include("bas.php" ) ?>


 
il faut aussi dire qu'il ne recupere pas non plus la variable $comment il sauve juste celle de l'url :'(
 
plesa help c'est cho la

Reply

Marsh Posté le 09-12-2002 à 20:16:58    

chacal_one333 a écrit :

vi j'ai tester
 
$query="INSERT INTO forum (url, comment, language, Category) VALUES (\"$url\", \"$comment\", \"$fet2[nom]\",\"$fet[nom]\" )";
 
et la ca marche pourtant il ne m'enregistre pas les valeur [nom] qui viennent de la::
 

$query="INSERT INTO forum (url, comment, language, Category) VALUES (\"".$url."\", \"".$comment."\", \"".$fet2["nom"]."\",\"".$fet["nom"]."\" )";
 
Alors, miracle ça amrche, ou merde, ca décone toujours autant?
 
EDIT : Au fait, un exho de $query aide pas mal à comprendre popurquoi ca amrche pas, par ce qu'avec un "array[nom]" comme valeur envoyé à la base, tu devais pas avoir grand chôse de renvoyé par la base de donnée.


Message édité par omega2 le 09-12-2002 à 20:19:18
Reply

Marsh Posté le 09-12-2002 à 20:19:35    

merde ca marche tjr pas
 
il ne recupere que ma variable url :'(

Reply

Marsh Posté le 09-12-2002 à 20:21:14    

au passage pourquoi il ne recupere pas mes variable fet2(nom] et fet[nom] qui sont dans ce forumulaire
 

$req='select * from Category';
$que=mysql_query($req);
$prem_lettre=substr($nom,0, 3);
echo '<select name="cat[]" size="1" >';
while ($fet=mysql_fetch_array($que))
 {
  echo '<option value="'.$fet['value'].'">'.$fet['nom'].'</option>';
 }
echo '</select><p></p>';
 
//language
echo '<u><p align=left>Language</u></p>';
$req2='select * from language';
$que2=mysql_query($req2);
$prem_lettre2=substr($fet2['nom'],0, 3);
echo '<select name="lang[]" size="1" >';
while ($fet2=mysql_fetch_array($que2))
 {
  echo '<option value="'.$fet2['value'].'">'.$fet2['nom'].'</option>';
 }
echo '</select>';

Reply

Marsh Posté le 09-12-2002 à 20:38:56    

chacal_one333 a écrit :

au passage pourquoi il ne recupere pas mes variable fet2(nom] et fet[nom] qui sont dans ce forumulaire
 

$req='select * from Category';
$que=mysql_query($req);
$prem_lettre=substr($nom,0, 3);
echo '<select name="cat[]" size="1" >';
while ($fet=mysql_fetch_array($que))
 {
  echo '<option value="'.$fet['value'].'">'.$fet['nom'].'</option>';
 }
echo '</select><p></p>';
 
//language
echo '<u><p align=left>Language</u></p>';
$req2='select * from language';
$que2=mysql_query($req2);
$prem_lettre2=substr($fet2['nom'],0, 3);
echo '<select name="lang[]" size="1" >';
while ($fet2=mysql_fetch_array($que2))
 {
  echo '<option value="'.$fet2['value'].'">'.$fet2['nom'].'</option>';
 }
echo '</select>';



Dans la boucle, elles sont initialisé si dans la liste des colone retourné par ta requête, il y en a une de même nom  (attention aux majuscules minuscules).
Après les boucles, je sais pas si elles ont encore une valeur.

Reply

Marsh Posté le 10-12-2002 à 00:21:01    


$query="INSERT INTO forum  
(url, comment, language, Category)  
VALUES  
('$url', '$comment', '".$fet2["nom"]."', '".$fet["nom"]."')";


 
pkoi faire compliqué ?

Reply

Marsh Posté le 10-12-2002 à 00:21:01   

Reply

Marsh Posté le 10-12-2002 à 00:42:50    

Comme le dit très bien beleg, POURQUOI faire compliqué !
 
D'autre part, c'est pas bien d'écrire : $fet[nom] !
 
Avec tableau associatif, les indexes sont des "CHAINES DE CARACTERES", or nom tout seul ce n'est pas une string !
 
Alors pourquoi çà marche ?
 
En fait quand on fait çà, PHP considère nom comme une constante qui n'a pas été définie. Dans ce cas, la constant prend son nom comme valeur. Mais c'est bien expliqué dans la doc :
 
1- Rien ne dis que dans une future version, les constantes non initialisés continueront à l'être de cette façon.
 
2- D'autre part, il est tout à fait possible qu'une constant qu'on utilise comme çà soit un jour initialisé à une autre valeur par PHP ou par un script.
 
Donc on écrit $fet['nom'] ou $fet["nom"], un point c'est tout.
 
Et pour la requête, on fait comme beleg le dit !
 
Ou bien, on lit la doc, et on découvre que si les variables sont bien remplacées par leur valeurs dans une chaîne délimitée par des guillemets doubles, il y a quand même des problèmes de temps en temps. Il y a donc une solution, qui est d'utiliser les {} !
 
Exemple :
 

$a = "DEF";
$aG ="def";
$b = "ABC$aGHI";


 
Ici, on ne peut pas dire d'il faut utiliser $a ou $aG dans la définition de $b et donc pour lever le problème ont écrit :
 

$a = "DEF";
$aG ="def";
$b = "ABC{$a}GHI";


 
Et çà marche aussi pour les tableaux !
 
Donc, on peut écrire :  
 
$query="INSERT INTO forum (url, comment, language, Category) VALUES ('$url', '$comment', '{$fet2['nom']}', '{$fet['nom']}')";


Message édité par Mara's dad le 10-12-2002 à 00:44:15

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 10-12-2002 à 00:50:48    

arf tu as edité, je comprenais pas les [ g] [ /g] jusqua je veuille repondre et que jexploite ainsi des bizarreries a joce qui font que dans message.php3 les balises sont interpretes meme a linterieur des [ fixe ] ...  :o  
 
Interessant, je vais te lire plus svt  :jap:


Message édité par beleg le 10-12-2002 à 00:51:01
Reply

Marsh Posté le 10-12-2002 à 08:39:52    

Apres ce cours tres chouette :) je peu quand meme dirte que mes variable ne passent pas a part comment et url :/
Je sais pas comment les reprendre :(

Reply

Marsh Posté le 10-12-2002 à 08:41:29    

en fait je ne sait pas comment recuperer le choix de l'utilisateur sur le forumulaire
 

$req='select * from Category';
$que=mysql_query($req);
$prem_lettre=substr($nom,0, 3);
echo '<select name="cat[]" size="1" >';
while ($fet=mysql_fetch_array($que))
 {
  echo '<option value="'.$fet['value'].'">'.$fet['nom'].'</option>';
 }
echo '</select><p></p>';


 
Il faut que je recupere la valeur et l'ajouter dans la table

Reply

Marsh Posté le 10-12-2002 à 09:33:45    

wai rien a faire j'arrive pas a recuperer juste ces deux valeurs

Reply

Marsh Posté le 10-12-2002 à 10:54:54    

<select name="cat" size="1" >';
 
la valeur est dans $cat

Reply

Marsh Posté le 10-12-2002 à 11:05:20    

vi c'est ce que l'on, vient de me dire sur un autre forum.
malheuresement mintenant il m'affiche Array dans mon champs :heink:

Reply

Marsh Posté le 10-12-2002 à 11:27:29    

beleg a écrit :


$query="INSERT INTO forum  
(url, comment, language, Category)  
VALUES  
('$url', '$comment', '".$fet2["nom"]."', '".$fet["nom"]."')";


 
pkoi faire compliqué ?

Je te retourne la question dans l'autres sens, pourquoi ne pas coder n'importe comment?
Plusieurs raisons :
1) Quand tout est bien délimité, on comprend desuite (ou du moins beaucoup plus vite) ce que fait telle partie du programme.
 
2) Ca évite de nombreux bug. (c'est si vite fait d'oublier un \ devant un $ ou de coler du texte juste derrière le nom de la variable ou carément d'oublier mle $ devant le nom de la variable)
 
3) Quand tu débugues, tu comprend parfois beaucoup plus vite d'où vient certain bug (déjà que tu peux te prendre la tête pendant un bon moment sur un bug tout con alors je te laisse deviné ce que ca donne quand le code ressemble à ce qu'on obtient après le passage d'un obfuscateur)
 
4) Quand t'as un problème du à une mauvaise habitude, c'est dur de ce mettre désormé à bien coder. C'est beaucoup plus simple de ce mettre à coder proprement dès le début et de définir desuite quelques règles de codages des noms de variables et de fonction plustôt que de evoir tout modifier quelques mois plus tard par ce que t'as du mal à comprendre ce qui a été fait.
 
 
Bref, a la question pourquoi faire compliquer, c'est simple :
 
1) c'est pour que ca marche dans tout les cas.
 
2) pour faciliter grandement le débugage du code.
 
Par contre l'inconvénient quand on code proprement ,c'est que si on veut pas que n'importe qui tombant sur une partie du cocde comprenne trop vite ce qu'on a écrit, on est obligé d'utiliser un obfuscateur, tantdis que celui qui programme n'importe comment, il en a pas bnesoin vu qu'il fait de lui même le travail de l'obfuscateur. ;)

Reply

Marsh Posté le 10-12-2002 à 12:07:27    

Moi je code propre pr coder plus vite, pr debugger facilement, pr reprendre vite quand je reviens sur le code par la suite, et pr moi, il est tres important que qqun qui vient sur le code comprenne aussi vite que celui qui a codé.
 
donc 1/ 2/ 3/ 4/ entierement daccord. 1) 2) pareil ...
 
mais je trouve pas que je fasse compliqué en separant html de php, string php avec des " " des string sql avec des ' ' et en separant les variables (ca javoue je le fais pas trop, sauf si il y a un tableaux), justement, je trouve ca simple dou mon Pkoi faire compliqué et melanger " et ', tt mettre ds uen seule string et au final, poster ttes les 15 minutes pr des syntax errors.

Reply

Marsh Posté le 10-12-2002 à 12:24:15    

bon pour mon pbm (:ange:) j'ai utilisé $_POST['cat'] et j'ai retirer le substr qi finalement ne me servait pas [:thesphinx]

Reply

Marsh Posté le 10-12-2002 à 12:50:24    

beleg a écrit :


mais je trouve pas que je fasse compliqué en separant html de php, string php avec des " " des string sql avec des ' ' et en separant les variables (ca javoue je le fais pas trop, sauf si il y a un tableaux), justement, je trouve ca simple dou mon Pkoi faire compliqué et melanger " et ', tt mettre ds uen seule string et au final, poster ttes les 15 minutes pr des syntax errors.  

Donc, t'as parfois des variables dans ta chaine de caractère et d'autre fois entre deux chaines. ;)
Moi, je trouves plus simple à relire du code où toutes les variables sont hors des chaines de caratères que le même code avec les variables perdus au milieu des chaines de caractères.
C'est une question d'habitudes en fait.
Bon, faut dire, aussi, je fais pas que du php alors j'essayes de garder le maximum d'habitudes entre les diférents langage que j'utilises et en dehors de php, il y en a pas beaucoup qui traitent les variables mises dans des chaines de caractères.
Par contre, pour le gain de vitesse, un ". suivit d'un ." ne fait vraiment pas perdre beaucoup de temps je trouves. Et moi, ca m'en fait perdre moins que ce que je gagnes en relecture/debeugage.
 
Mais bon, chacun son truc. ;)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed