incrémentation et insérer

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : incrémentation et insérer

par mmvik » 16 mars 2009, 16:59

J'en prends bonne note, merci

par yaug » 16 mars 2009, 16:53

De rien.

Si je rale un peu, c'est surtout parce qu'on apprend énormement de ses propres erreurs.
Lorsque tu as une erreur, regarde bien le message d'erreur et comprend le.
En cas de doute, n'hésite pas à consulter la documentation de php.

Si tu ne trouve toujours pas, alors demande de l'aide.

Il est important de faire la démarche de tenter d'abord de corriger seul.
Certains utilisent la solution de facilité en demandant automatiquement de l'aide sans chercher soit même.. et au final ne progresse pas.

si ton problème est résolu, édit ton post et clique sur le bouton "Résolu".

Bonne continuation à toi.

par mmvik » 16 mars 2009, 16:50

merci yaug,effectivement c'était bien çà. Je ne connaissais pas mysql_fetch_assoc.
Merci beaucoup, bonne journée

par yaug » 16 mars 2009, 16:39

Même chose...
J'ai écris vite.. et tu n'as pas vérifié derrière.

myslq_fetch_assoc est en fait mysql_fetch_assoc

Il suffit de lire l'erreur pour se rendre compte de ce qui cloche hein :wink:


Fatal error: Call to undefined function: myslq_fetch_assoc() in /mnt/145/s.../url/essai.php on line 23

myslq_fetch_assoc() n'est pas définie..
On regarde le nom de la fonction.. et hop.. on se rend compte de ce qui cloche, le nom.
Au pire, tu consultes sur fr.php.net tout ce qui concerne mysql, et tu devrais t'en rendre compte toi même. :wink:

par mmvik » 16 mars 2009, 16:35

excuse moi je débute, je ne copie colle pas du code sans le comprendre :wink:

Fatal error: Call to undefined function: myslq_fetch_assoc() in /mnt/145/s.../url/essai.php on line 23
ligne 23:$result = myslq_fetch_assoc( mysql_query($sql1) );

Est ce que j'ai oublié quelque chose ?


Dans mon initial :

Code : Tout sélectionner

mysql_connect("$host","$base","$passe"); mysql_selectdb("$base"); $sql1="SELECT id FROM table ORDER BY id DESC LIMIT 1;"; $result=mysql_fetch_object(mysql_query($sql1)); $id=$result->id; echo $id;
Jusqu'ici, $id me renvoie bien la plus grande valeur du champ id.

Mais à l'étape suivante pour l'insérer, çà me renvoie une valeur $id nulle...

Code : Tout sélectionner

$sql2="INSERT INTO table (id, champs) VALUES ('$id', '$champs')"; mysql_query($sql2);

par yaug » 16 mars 2009, 16:27

Un peu d'effort quand même. :evil:
Il est évident ici que j'ai oublié de mettre $result :)

c'est donc :
$id = $result['MaxId'] + 1;
Cela devrait être mieux désormais.
Il ne suffit pas de copier coller, il faut aussi comprendre le code histoire d'être capable de déboguer soit même son code.

par mmvik » 16 mars 2009, 16:22

Merci pour ta réponse mais non..
Parse error: syntax error, unexpected '[' in /.../essai.php on line 25

ligne 25: $id = ['MaxId'] + 1;

Je crois avoir essayé toutes les manières, la requête semble facile, je comprends vraiment pas..

par yaug » 16 mars 2009, 16:10

Hum.

Est ce que ceci fonctionne ?
<?php
mysql_connect("$host","$base","$passe");
mysql_selectdb("$base");
 
$sql1 = "SELECT MAX(id) AS MaxId FROM table LIMIT 1;";
$result = myslq_fetch_assoc( mysql_query($sql1) );
$id = ['MaxId'] + 1;
 
$sql2 = "INSERT INTO table (id, champs) VALUES ('$id', '$champs')";
mysql_query($sql2);
exit;

incrémentation et insérer

par mmvik » 16 mars 2009, 16:07

Bonjour,

Je crois avoir tout essayé (presque...)
Je n'arrive pas à insérer un nouvel enregistrement avec id+1 sans utiliser l'auto-incrémentation.
Je veux donc qu'il retourne d'abord la valeur la plus élevée de id, puis id+1 puis insérer. Voici mon code:

Code : Tout sélectionner

mysql_connect("$host","$base","$passe"); mysql_selectdb("$base"); $sql1="SELECT id FROM table ORDER BY id DESC LIMIT 1;"; $result=mysql_fetch_object(mysql_query($sql1)); $id=$result->id; $id=$id++; $sql2="INSERT INTO table (id, champs) VALUES ('$id', '$champs')"; mysql_query($sql2); exit;
Avec ce code, l'enregistrement n'est pas inséré, $id est vide...