Pb d'insert simple

Willman
Invité n'ayant pas de compte PHPfrance

07 juin 2005, 22:50

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

Mammouth du PHP | 19672 Messages

08 juin 2005, 08:13

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";
}
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Willman
Invité n'ayant pas de compte PHPfrance

09 juin 2005, 22:33

Ca ne change rien, toujours pas de message d'erreur et l'insertion ne marche toujours pas systématiquement.

Mammouth du PHP | 19672 Messages

09 juin 2005, 22:51

Quand tu dis "pas systématiquement", ça veut dire que ça marche quelque fois quand même ???

Fais voir la structure de ta table.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 199 Messages

11 juin 2005, 21:48

Je pense que tu as des guillements en trop, replace :

Code : Tout sélectionner

$SQL="insert into `TableTest` ( `Champ1`) values (2)";
Par :

Code : Tout sélectionner

$SQL="insert into TableTest (Champ1) VALUES (2)";
Les 2 font la paire : coder ET commenter :wink:

Mammouth du PHP | 19672 Messages

11 juin 2005, 21:50

Optimiser la vitesse de vos scripts -> ne faites pas $var=$_GET['var']
Tu peux m'expliquer ce truc là smarties ??
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 199 Messages

11 juin 2005, 21:53

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 :lol:
Les 2 font la paire : coder ET commenter :wink:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 juin 2005, 10:30

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 19672 Messages

12 juin 2005, 10:35

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 199 Messages

12 juin 2005, 10:38

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.
Les 2 font la paire : coder ET commenter :wink:

Mammouth du PHP | 19672 Messages

12 juin 2005, 10:42

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 juin 2005, 10:44

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 juin 2005, 10:45

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...
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 19672 Messages

12 juin 2005, 10:55

PHP détruit les variables à portée locale..
Justement, $_GET, $_POST, $_FILES, $_REQUEST etc sont des super-globales, pas des locales... :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 199 Messages

12 juin 2005, 11:05

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 :D :lol: LOL
Les 2 font la paire : coder ET commenter :wink: