[PHP]- "" ou ' ' ou les 2
Fermé
ekra
Messages postés
1870
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
-
14 mai 2006 à 22:59
kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 - 15 mai 2008 à 13:35
kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 - 15 mai 2008 à 13:35
A voir également:
- [PHP]- "" ou ' ' ou les 2
- Supercopier 2 - Télécharger - Gestion de fichiers
- 2 ecran pc - Guide
- Word numéro de page 1/2 - Guide
- France 2 uhd - Accueil - TV & Vidéo
- Whatsapp avec 2 cartes sim - Guide
9 réponses
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Non membre
Dernière intervention
5 février 2025
1 526
15 mai 2006 à 00:55
15 mai 2006 à 00:55
Les guillemets simples n'inteprètent pas une chaine, elle prennent mot à mot ce qu'elles trouves à l'intérieur.
Donc '$truc' donnera la chaine '$truc'
Par contre les guillemets dobles vont interpéter le contenu:
"$truc" donnera le contenu de $truc.
Que les guillemets soient simples ou doubles tu peux utiliser la concatenation :
Ou encore:
Note que la deuxième solution consomme discrètement plus de ressources
car php va perdre du temps à chercher des variables à interpéter entre les guillemets doubles.
Autre solution aussi, pour mettre un tableau carrement dans des guillemets doubles, on utilise les accolades:
Lis ça, ça vaut le coup:
http://fr3.php.net/manual/fr/language.types.string.php
Donc '$truc' donnera la chaine '$truc'
Par contre les guillemets dobles vont interpéter le contenu:
"$truc" donnera le contenu de $truc.
Que les guillemets soient simples ou doubles tu peux utiliser la concatenation :
$machin ='truc ' . $_POST['couleur'] . ' machin';
Ou encore:
$machin ="truc " . $_POST['couleur'] . " machin";
Note que la deuxième solution consomme discrètement plus de ressources
car php va perdre du temps à chercher des variables à interpéter entre les guillemets doubles.
Autre solution aussi, pour mettre un tableau carrement dans des guillemets doubles, on utilise les accolades:
$machin ="truc {$_POST['couleur']} machin";
Lis ça, ça vaut le coup:
http://fr3.php.net/manual/fr/language.types.string.php
ekra
Messages postés
1870
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
342
15 mai 2006 à 06:02
15 mai 2006 à 06:02
Ok j'ai lu ça, ça arrache pas mal PHP :p
Merci beaucoup ça m'a bien aidé.
Merci beaucoup ça m'a bien aidé.
ekra
Messages postés
1870
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
342
15 mai 2006 à 06:55
15 mai 2006 à 06:55
J'ai toujours un problème. En fait en PHP je voudrais effectuer la requête suivante (MySQL) :
Le problème c'est que mes valeurs sont des $_POST['blabla']
Comment écrire le $_POST['valeur'] entre ' ' ?
J'ai essayé
- '"$_POST['valeur']"'
-'.$_POST['valeur1'].'
En vain....
Merci d'avance !
<?php INSERT INTO table(champs1,champs2) VALUES ('valeur1','valeur2'); ?>
Le problème c'est que mes valeurs sont des $_POST['blabla']
Comment écrire le $_POST['valeur'] entre ' ' ?
J'ai essayé
- '"$_POST['valeur']"'
-'.$_POST['valeur1'].'
En vain....
Merci d'avance !
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
15 mai 2006 à 09:19
15 mai 2006 à 09:19
Pas de problème de conscience.
Moi je tiens à mes yeus et je ne tiens pas à avoir de migraine:
j'utilise sprintf
Au diable l'avarice. Vive la facilité de lecture et de maintenance.
Et puis ceci ressemble tellement auc C...
http://php.easynet.be/manual/fr/function.sprintf.php
Johan
Moi je tiens à mes yeus et je ne tiens pas à avoir de migraine:
j'utilise sprintf
Au diable l'avarice. Vive la facilité de lecture et de maintenance.
Et puis ceci ressemble tellement auc C...
http://php.easynet.be/manual/fr/function.sprintf.php
Johan
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Non membre
Dernière intervention
5 février 2025
1 526
15 mai 2006 à 11:30
15 mai 2006 à 11:30
Voui c'est vrai, mais un sprintf trop long c'est aussi difficile à suivre...
La syntaxe heredoc est très pratique, là c'est vraiment lisible:
http://fr3.php.net/manual/fr/language.types.string.php#language.types.string.synt...
La syntaxe heredoc est très pratique, là c'est vraiment lisible:
http://fr3.php.net/manual/fr/language.types.string.php#language.types.string.synt...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
15 mai 2006 à 12:24
15 mai 2006 à 12:24
BJR
C'est bien vrai ! C'est vite la galère avec tous ces
'\'' ou "\"...\""
C'est pourquoi j'utilise ceci
Soit la table essai MySQL suivante :
Un ex de code pour générer des insert into :
La fct sql_insert() retourne une chaîne contenant la requête sql insert MySQL
Faudrait amèliorer pour les type SET, ENUM etc mais c'est l'idée
C'est bien vrai ! C'est vite la galère avec tous ces
'\'' ou "\"...\""
C'est pourquoi j'utilise ceci
Soit la table essai MySQL suivante :
# # Structure de la table `essai` # CREATE TABLE `essai` ( `fld_int` int(11) NOT NULL default '0', `fld_date` date NOT NULL default '0000-00-00', `fld_time` time NOT NULL default '00:00:00', `fld_datetime` datetime NOT NULL default '0000-00-00 00:00:00', `fld_text` varchar(100) NOT NULL default '' ) TYPE=MyISAM;
Un ex de code pour générer des insert into :
<html> <body> <html> <body> <?php function sql_insert($table,$fields,$protect=false) { $protector = ($protect) ? '`' : ''; // Accent grave : ALT 96 $name_separator = $protector.', '.$protector; $delimiter = "'"; // Apostrophe $value_separator = $delimiter.', '.$delimiter; // Ajoute les slashs aux valeurs si nécessaire foreach($fields as $key => $value) { $fields[$key]=addslashes($value); } $sql = 'INSERT INTO '.$protector.$table.$protector; $sql .= ' ('.$protector.implode($name_separator, array_keys($fields)).$protector.')'; $sql .= ' VALUES ('.$delimiter.implode($value_separator, $fields).$delimiter.')'; return $sql; } $now=time(); // Retourne la date & l'heure actuelle : TIMESTAMP // Simule le passage de paramètres via méthode POST $_POST['int']=10; $_POST['time']=date('H:i:s',$now); // Format pour MySQL : HH:MM:SS $_POST['date']=date('Y-m-d',$now); // Format pour MySQL : YYYY-MM-DD $_POST['datetime']=date('Y-m-d H:i:s',$now); // Format pour MySQL : YYYY-MM-DD HH:MM:SS // Texte à enregister : "C:\> Aujourd'hui : YYYY-MM-DD HH:MM:SS" $_POST['text']='C:\\> Aujourd\'hui :'.date('Y-m-d H:i:s',$now); $fields = array(); $fields['fld_int']=$_POST['int']; $fields['fld_time']=$_POST['time']; $fields['fld_date']=$_POST['date']; $fields['fld_datetime']=$_POST['datetime']; $fields['fld_text']=$_POST['text']; $sql = sql_insert("ESSAI",$fields,true); echo $sql; ?> </body> </html>
La fct sql_insert() retourne une chaîne contenant la requête sql insert MySQL
string sql_insert( string table, array fields, [bool protect = false] ) table : nom de la table MySQL fields : tableau associatif contenant les champs sous la forme champ => valeur protect : indique si le nom des champs et la table doivent être protégés (délimités) par un accent grave. (facultatif)
Faudrait amèliorer pour les type SET, ENUM etc mais c'est l'idée
ekra
Messages postés
1870
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
342
15 mai 2006 à 13:01
15 mai 2006 à 13:01
Merci, mais là ça dépasse largement mes capacités :/
Je ne suis que débutant !!
Dois-je impérativement comprendre cela pour réussir à executer ce code faux en syntaxe :
INSERT INTO table(champ) VALUES ('$_POST['valeur']');
'bloqie au niveau des ' ' dans POST
Merci quand même, j'espère que ce que vous avez écrit sera utile pour les utilisateurs confirmés.
Merci.
Je ne suis que débutant !!
Dois-je impérativement comprendre cela pour réussir à executer ce code faux en syntaxe :
INSERT INTO table(champ) VALUES ('$_POST['valeur']');
'bloqie au niveau des ' ' dans POST
Merci quand même, j'espère que ce que vous avez écrit sera utile pour les utilisateurs confirmés.
Merci.
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Non membre
Dernière intervention
5 février 2025
1 526
15 mai 2006 à 13:57
15 mai 2006 à 13:57
Alors tu peux faire ça sinon:
mysql_query("INSERT INTO table(champ) VALUES ('{$_POST['valeur']}'");
ekra
Messages postés
1870
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
342
>
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Non membre
Dernière intervention
5 février 2025
15 mai 2006 à 14:50
15 mai 2006 à 14:50
oK Merci :)
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
15 mai 2006 à 15:00
15 mai 2006 à 15:00
Re
Oups autant pour moi ! lol oui je te rassures j'utilise abondamment ma fct sql_insert()
Ton ex
provoque une erreur car le parser PHP ne parvient à identifier correctement ta variable $_POST['valeur']
Par contre si tu écris :
Là ca fontionne car le parser parvient à isoler correctement la variable $valeur
comme l'a écrit Kilian tu peux faire
mais personnellement je trouve ca incompréhensible !
Je ne sais jamais si PHP remplace les valeurs des variables à l'intérieur des chaînes entres apostrophes ou entres guillemets.
(surtout lorqu'on a pas pratiqué de PHP depuis un certain temps)
De plus il faut également se souvenir que les accolades {} ne font pas parti de la chaine mais permettent d'indiquer EXPLICITEMENT au parser PHP où commence et où se termine la variable ...
Pourquoi faire simple quand on peut faire compliquer ?
Certe c'est puissant on peut faire des constructions du style :
Ouais bof, bof ...
Dans ton ex je préfère et de loin écrire :
C'est clair, explicit, sans ambiguïté Mais c'est affaire de goût
Oups autant pour moi ! lol oui je te rassures j'utilise abondamment ma fct sql_insert()
Ton ex
INSERT INTO table(champ) VALUES ('$_POST['valeur']');
provoque une erreur car le parser PHP ne parvient à identifier correctement ta variable $_POST['valeur']
Par contre si tu écris :
$valeur="Le PHP est génial"; $phrase="INSERT INTO table(champ) VALUES ('$valeur')";
Là ca fontionne car le parser parvient à isoler correctement la variable $valeur
comme l'a écrit Kilian tu peux faire
mysql_query("INSERT INTO table(champ) VALUES ('{$_POST['valeur']}'");
mais personnellement je trouve ca incompréhensible !
Je ne sais jamais si PHP remplace les valeurs des variables à l'intérieur des chaînes entres apostrophes ou entres guillemets.
(surtout lorqu'on a pas pratiqué de PHP depuis un certain temps)
De plus il faut également se souvenir que les accolades {} ne font pas parti de la chaine mais permettent d'indiquer EXPLICITEMENT au parser PHP où commence et où se termine la variable ...
Pourquoi faire simple quand on peut faire compliquer ?
Certe c'est puissant on peut faire des constructions du style :
$langage="PHP"; $valeur="Le $langage est génial"; $phrase="INSERT INTO table(champ) VALUES ('$valeur')";
Ouais bof, bof ...
Dans ton ex je préfère et de loin écrire :
$sql="INSERT INTO table(champ) VALUES (".$_POST['valeur'].")"; mysql_query($sql);
C'est clair, explicit, sans ambiguïté Mais c'est affaire de goût
ekra
Messages postés
1870
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
24 juillet 2014
342
15 mai 2006 à 22:17
15 mai 2006 à 22:17
Ok merci pour tout :)
J'ai trouvé la parade .... (évident mais pas pensé en tant que beginner)
$var=$_POST['var'];
et apres on utilise $var, plus de ' ' dans la variable :p
Merci beacoup à tous ceux qui ont participé, et qui m'on donné des réponse plus que suffisantes !
A++ (sur un autre post :p)
J'ai trouvé la parade .... (évident mais pas pensé en tant que beginner)
$var=$_POST['var'];
et apres on utilise $var, plus de ' ' dans la variable :p
Merci beacoup à tous ceux qui ont participé, et qui m'on donné des réponse plus que suffisantes !
A++ (sur un autre post :p)
Ssully
Messages postés
1
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
11 octobre 2007
11 oct. 2007 à 21:41
11 oct. 2007 à 21:41
bonjour je voudrai savoir si je peu index dns sune base de donner un moteur de rechcher sur les forum de discutions des site internet externe amon site vous pouvez me montre lagorytme
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Non membre
Dernière intervention
5 février 2025
1 526
15 mai 2008 à 13:35
15 mai 2008 à 13:35
J'ai rien compris...