IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Incrémentation à partir de l'identifiant [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 132
    Par défaut Incrémentation à partir de l'identifiant
    Bonjour,

    donc voilà je crée un script qui permet de gérer des liens, et pour pouvoir les placer dans l'ordre que l'on veut il y a un champs qui dois incrémenter en même temps que l'ID.
    Pour pouvoir remplir ce champs je récupères l'ID de dernier enregistrement et je rajoute +1.
    mais j'ai deux problèmes, le premier étant que si je n'ai pas au moins 1 enregistrement, le script ne fais rien, il ne prend pas les enregistrement, j'ai donc dû faire un enregistrement manuel, et le second problème étant qu'il n'incrémente pas le second champs ID.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php 
    $titre = ( $_POST['titre'] );
    $url = ( $_POST['url'] );
     
     
               mysql_connect("$host", "$user", "$mdp");
               mysql_select_db("$data");
    $retour = mysql_query('SELECT * FROM lien ORDER BY id DESC Limit 0,1');
     while ($donnees = mysql_fetch_array($retour))
     {
      $id_bis = $donnees['id'];
     }
    					mysql_close();
     
    	if ($id_bis == 0){
     		$id_bis == 1;
     	}
     	else {
     
     
    if (isset($id_bis))
     {
     
     	$id_replace == $id_bis+1;
     
    		if (isset($titre) && isset($url)) 
    			{
    				?>
     
    <b>Voici les informations que vous nous avez envoyé.<br><br></b>
    <b><u>Titre du site web ::</b></u> <i><?php echo $titre; ?></i><br>
    <b><u>Site web ::</b></u> <i><a href="<?php echo $url; ?>" class="lien"><?php echo $url; ?></a></i><br>
     
     
     
    			<?php
            mysql_connect("$host", "$user", "$mdp");
            mysql_select_db("$data"); 
    $sql = mysql_query("insert into lien values ('','$id_replace','$titre','$url')") or die(mysql_error());
     
     
            mysql_close();
    			}
    				else 
    			{
    					echo "Problème d'enregistrement.";
    			}
     }
     
     else 
     {
    					echo "Problème d'enregistrement de l'id_replace.";
     }	
    }
    ?>

  2. #2
    Membre chevronné Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Par défaut
    Peux tu reformuler ce que tu veux faire stp

  3. #3
    Membre émérite
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 811
    Par défaut
    Bonjour,
    Si j'ai bien compris tu lis ta base de données, tu prends le champ id (je suppose que c'est une clé primaire et en auto_increment), tu incrémentes la valeur de id et tu écris cette valeur dans id_replace.
    Je ne sais pas ce que tu veux faire mais c'est un peu tiré par les cheveux. Pourquoi tu ne te contentes pas d'éliminer ce champ dans ta base et si tu as besoin vraiment de cette valeur de id+1, tu la gères dans la lecture? D'autant plus que si dans tes fonctions il y a une opération de suppression ton approche risque d'être fausse.
    Je m'explique :
    Dernier enregistrement id = 145. Je supprimes cet enregistrement. Si je décides de suivre ta méthode le prochain id serait 146 et bien non il sera 147.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 132
    Par défaut
    Citation Envoyé par guigo
    Peux tu reformuler ce que tu veux faire stp
    En gros je veux pouvoir classer les liens dans l'ordre ou je veux, via le champs "id_replace", car si je ne dit pas de bêtise on peut pas faire d'update de l'id puisque c'est en auto_increment.
    (si je ne dit pas de bêtise ya ce genre de système dans les forum punbb, pour classer les catégories ou forum, je ne suis pu sur)

    Citation Envoyé par kabkab Voir le message
    Dernier enregistrement id = 145. Je supprimes cet enregistrement. Si je décides de suivre ta méthode le prochain id serait 146 et bien non il sera 147.
    Exacte j'avais pas penser à cela

  5. #5
    Membre chevronné Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Par défaut
    Moi je rajouterais un champs dans ma table par ex Classement... Et je ferais des upadtes de ce champ. Faut pas toucher a l'id c dangereux

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 132
    Par défaut
    c'est pour cela que j'ai un deuxième champs "id" (id_replace)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = mysql_query("insert into lien values ('','$id_replace','$titre','$url')") or die(mysql_error());

  7. #7
    Membre émérite
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 811
    Par défaut
    Bonjour,
    Il serait préférable que tu nous expliques plus clairement ce que tu veux faire.

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 132
    Par défaut
    Citation:
    guigo
    Peux tu reformuler ce que tu veux faire stp
    En gros je veux pouvoir classer les liens dans l'ordre ou je veux, via le champs "id_replace", car si je ne dit pas de bêtise on peut pas faire d'update de l'id puisque c'est en auto_increment.
    (si je ne dit pas de bêtise ya ce genre de système dans les forum punbb, pour classer les catégories ou forum, je ne suis pu sur)

  9. #9
    Membre émérite
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 811
    Par défaut
    Désolé, ce n'est toujours pas clair. J'ai lu ton explication mais est-ce que tu peux être plus explicite? Du genre, "je veux créer un forum", "je veux classer mes contacts"... Ou mieux une description de ton site.
    Cela serait plus approprié pour t'aider à la création des champs de ta BDD.

  10. #10
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 132
    Par défaut
    On va essayé d'etre plus clair clair je veux faire un gestionnaire de lien, avec le quel je peut organiser ou réorganiser ces liens. grâce a un champs qui s'incrémente par défault grâce à l'id (id_replace), et ce que je ne comprend pas c'est pourquoi il n'incrémente pas (id_replace).
    et je ne comprend pas non plus pourquoi il ne créait pas d'entré si il yen a pas déjà une au minimum


    Voila la table SQL.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE `lien` (
      `id` int(11) NOT NULL auto_increment,
      `id_replace` varchar(255) NOT NULL default '',
      `titre` varchar(255) NOT NULL default '',
      `url` varchar(255) NOT NULL default '',
      PRIMARY KEY  (`id`)
    ) TYPE=MyISAM AUTO_INCREMENT=1 ;

  11. #11
    Membre émérite
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 811
    Par défaut
    Bonjour,

    Je vois les choses un peu comme celà;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <?php 
    $titre = ( $_POST['titre'] );
    $url = ( $_POST['url'] );
     
     
               mysql_connect("$host", "$user", "$mdp");
               mysql_select_db("$data");
    $retour = mysql_query('SELECT * FROM lien ORDER BY id DESC Limit 0,1');
    $num=mysql_num_rows($retour);
    if ($num)
    {
     while ($donnees = mysql_fetch_array($retour))
     {
      $id_bis = $donnees['id'];
     }
    }
    else
    {$id_bis=0;}
    					mysql_close();
     
    	if ($id_bis == 0){
     		$id_bis == 1;
     	}
     
     
    if (isset($id_bis))
     {
     
     	$id_replace == $id_bis+1;
     
    		if (isset($titre) && isset($url)) 
    			{
    				?>
     
    <b>Voici les informations que vous nous avez envoyé.<br><br></b>
    <b><u>Titre du site web ::</b></u> <i><?php echo $titre; ?></i><br>
    <b><u>Site web ::</b></u> <i><a href="<?php echo $url; ?>" class="lien"><?php echo $url; ?></a></i><br>
     
     
     
    			<?php
            mysql_connect("$host", "$user", "$mdp");
            mysql_select_db("$data"); 
    $sql = mysql_query("insert into lien values ('','$id_replace','$titre','$url')") or die(mysql_error());
     
     
            mysql_close();
    			}
    				else 
    			{
    					echo "Problème d'enregistrement.";
    			}
     }
     
     else 
     {
    					echo "Problème d'enregistrement de l'id_replace.";
     }	
     
    ?>
    Tu me dis si ça fonctionne. Humble explication (d'après moi), si ta requête ne donne pas de résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ($donnees = mysql_fetch_array($retour))
     {
      $id_bis = $donnees['id'];
     }
    ne donne forcément rien donc $id_bis n'est pas assigné. Ce qui fait que je teste avec mysql_num_rows s'il y a un retour. Si oui, j'affecte $id_bis à partir du résultat sinon je lui effecte la valeur zero et ce n'est pas la peine de tester id_bis avec isset puisqu'elle a une valeur désormais.

  12. #12
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 132
    Par défaut
    ouep nickel sa sa marche j'avais pas pensé au nums_rows ^^.

    par contre id_replace ne donne rien, je reçois bien id_bis, donc a mon avis il ya une erreur la $id_replace == $id_bis+1; mais je vois pas la quel -_-

  13. #13
    Membre émérite
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 811
    Par défaut
    Euh, je ne l'avais même pas vu celle là.

    le signe = est une affectation $a=3+1 te donne $a=4

    l'opérateur == est un test d'égalité si $a=5 : $a==2+1 te donne false et $a==2+3 te donne true

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VBA - Boucle avec recopie incrémentée à partir d'une formule
    Par vbadeb dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 23/03/2015, 14h23
  2. Réponses: 4
    Dernier message: 12/11/2013, 13h47
  3. Supprimer un enregistrement à partir d'un identifiant
    Par geroma dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 08/04/2013, 13h23
  4. Somme qui s'incrémente à partir des valeurs précédentes
    Par justinedr71 dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 24/05/2011, 14h55
  5. Remplissage de cellules par incrément à partir de la première vide
    Par benoit13 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/07/2008, 09h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo