Page 1 sur 2
Pb d'insert simple
Posté : 07 juin 2005, 22:50
par Willman
J'ai un problème sur un insert basique. C'est à mon avis plus un pb de configuration mais je ne vois pas où.
Lorsque j'exécutre les script php ci-dessous tout se passe bien par contre si je recharge la page rapidement l'insert ne se fait pas et je nai pas de message d'erreur
Code : Tout sélectionner
$host="localhost"; $user="mdc"; $passe="mdc"; $db="maisoncreateurs";
mysql_connect( $host , $user, $passe);
mysql_select_db( $db ) or die("ereur");
$SQL="insert into `TableTest` ( `Champ1`) values (2)";
echo '<UL><LI>SQL='.$SQL.'</UL><br/>' ;
$result=mysql_query($SQL);
if (mysql_errno() )
echo $sql_command."<br>\n".mysql_errno() . ": " . mysql_error(). "<br>\n";
echo ("<LI>IDProduit=".mysql_insert_id());
mysql_close();
Posté : 08 juin 2005, 08:13
par Cyrano
Il faut capturer le retour de l'exécution de la requête pour avoir un message d'erreur: en cas d'erreur, mysql_query() retourne FALSE, modifie donc ton script comme ceci:
if (!result)
{
echo $sql_command."<br>\n".mysql_errno() . ": " . mysql_error(). "<br>\n";
}
Posté : 09 juin 2005, 22:33
par Willman
Ca ne change rien, toujours pas de message d'erreur et l'insertion ne marche toujours pas systématiquement.
Posté : 09 juin 2005, 22:51
par Cyrano
Quand tu dis "pas systématiquement", ça veut dire que ça marche quelque fois quand même ???
Fais voir la structure de ta table.
Posté : 11 juin 2005, 21:48
par smarties
Je pense que tu as des guillements en trop, replace :
Par :
Posté : 11 juin 2005, 21:50
par Cyrano
Optimiser la vitesse de vos scripts -> ne faites pas $var=$_GET['var']
Tu peux m'expliquer ce truc là
smarties ??
Posté : 11 juin 2005, 21:53
par smarties
PHP c'est programmer en C/C++, donc a chaque variable crées de la mémoire doit être alouée donc ca ralentit le traitement des informations, de plus ca doit être des pointeur qui sont utilisés. Enfin, si je suis motivé je regarderai les sources

Posté : 12 juin 2005, 10:30
par zeus
Tu sais
smarties, avec la puissance des serveurs, la quantité de mémoire vive disponible basiquement, il vaut mieux ecrire
$var1 = $_GET[var_1];
$var2 = $_GET[var_2];
echo var1."-".$var2;
que
echo $_GET[var_1]."-".$GET[var_2];
le code n'en est que plus lisible
La période où on economisait jusqu'au noms des variables (réutilisation des variables) est terminée depuis qu'on a plus de 64Mo de RAM et des proco qui dépassent les 500Mhz
Posté : 12 juin 2005, 10:35
par Cyrano
C'est un peu aussi mon point de vue: et à ce compte là, tant qu'à faire la chasse au gaspi et éviter à fond le risque de créer une usine à gaz, on pourrait à ce cas pousser le vice jusqu'à faire ça:
$var1 = $_GET[var_1];
$var2 = $_GET[var_2];
unset($_GET);
echo var1."-".$var2;
Comme le souligne
zeus, c'est une question de lisibilité de code. Sur le fond tu as raison, sur le coté pratique, c'est discutable.
Posté : 12 juin 2005, 10:38
par smarties
Perso, je trouve qu'utiliser les $_GET/_POST/... est plus facile à comprendre. Tu sais toujours ce que sont tes variables.
En fait c'est une habitude que j'ai pris en c/c++ vu qu'il faut gérer la mémoire.
Enfin tout le monde me contredira la dessus donc je vais l'enlever de ma signature.
Posté : 12 juin 2005, 10:42
par Cyrano
Je crois surtout que la différence entre PHP et C/C++, c'est la destination des applications: Ton point est certainement à prendre en compte dans une application cliente et par exemple créer une application en PHP/GTK devrait probablement répondre à ce critère. Ça doit être une question de durée de vie d'une variable et comment PHP gère ça, j'avoue ne jamais m'être trop posé la question, la réponse nous éclairerait certainement davantage.
Posté : 12 juin 2005, 10:44
par zeus
Si tu trouve plus lisible comme ça, libre a toi de faire comme tu veux
Le seul problème viendra peut être de celui qui va maintenir ton code par contre
Après, c'est sûr que chacun peut faire comme il veut mais je crois qu'il y plus de monde qui développe comme Cyrano et moi que comme toi, donc je pense que ça serait effectivement une bonne idée de l'enlever de ta signature. Mais que ca ne change pas ta manière de coder ppour autant
Posté : 12 juin 2005, 10:45
par zeus
PHP détruit les variables à portée locale à la fin de l'exécution du script, donc, avec les configurations par défaut, au maximum 30 secondes...
Posté : 12 juin 2005, 10:55
par Cyrano
PHP détruit les variables à portée locale..
Justement, $_GET, $_POST, $_FILES, $_REQUEST etc sont des super-globales, pas des locales...

Posté : 12 juin 2005, 11:05
par smarties
Le seul problème viendra peut être de celui qui va maintenir ton code par contre
Pour éviter ce problème, je met des noms explicites et je commente les passages complexes dans mon code comme ca, meme apres 6 mois je peux me remettre a travailler sans trop réfléchir

LOL