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 :

Vérifier si il y a 2 id avec la même valeur


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 14
    Points : 8
    Points
    8
    Par défaut Vérifier si il y a 2 id avec la même valeur
    Bonjour

    Je vais vous expliquer mon problème mais voici mon script ce sera plus simple :

    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
    if (!empty($_GET['d'])) {
    	$query = mysql_query('SELECT * FROM galeries WHERE id="' . $_GET['d'] . '"');
    	if ($galeries = mysql_fetch_assoc($query)) {
    		echo('
    			<form action="" method="post" enctype="multipart/formdata">
    				<table>
    					<tr>
    						<td>Numéro : </td>
    						<td><input type="text" name="id" value="' . $galeries['id'] . '" size="3" /></td>
    					</tr>
    					<tr>
    						<td>Description : </td>
    						<td><textarea name="description" cols="30" rows="5">' . $galeries['description'] . '</textarea></td>
    					</tr>
    					<tr>
    						<td></td>
    						<td>
    							<input type="hidden" name="blanc" "value="blanc" />
    							<input type="submit" value="Modifier" />
    						</td>
    					</tr>
    				</table>
    			</form>
    		');
    		$query2 = mysql_query('SELECT * FROM galeries');
    		while ($galeries2 = mysql_fetch_assoc($query2)) {
    			if ($_POST['id'] == $galeries2['id']) {
    				$nouveau = $galeries2['id']+1;
    				mysql_query('UPDATE galeries set id="' . $nouveau . '" WHERE id="' . $galeries2['id'] . '"');
    				/* QUE FAIRE A CETTE ENDROIT POUR MODIFIER TOUTE LES ID */
    			}
    			else {
    				if (!empty($_POST['blanc']) && !empty($_POST['id'])) {
    					$description = $_POST['description'];
    					$id = $_POST['id'];
    					mysql_query('UPDATE galeries set description="' . $description . '", id="' . $id . '" WHERE id="' . $_GET['d'] . '"');
    					echo redirection('galeries_edit.php');
    				}
    			}
    		}
    	}
    }
    else {
    	$query = mysql_query('SELECT * FROM galeries ORDER BY id ASC');
    	while ($galeries = mysql_fetch_assoc($query)) {
    		$dimensions = getimagesize($site_chemin_admin . 'fichiers/img/galeries/' . $galeries['image_nom']);
    		echo('
    		<div style="float:left; padding:10px; width:100px; height:100px;">
    		<a href="#" ');
    		echo galerie_popup ($site_chemin_absolu, $galeries, $dimensions);
    		echo('>
    		<img src="' . $site_chemin_absolu . 'fichiers/img/galeries/small/' . $galeries['image_nom'] . '" alt="' . $galeries['image_nom'] . '" />
    		</a>
    		<a href="galeries_ordonner.php?d=' . $galeries['id'] . '">MODIFIER</a>
    		</div>
    		');
    	}
    }
    Je voudrais changer l'id d'une image pour ordonner les photos dans ma galerie.
    Le problème c'est que risque de tomber sur des id identiques
    Comment faire pour augmenter toutes les id de 1 à partir de l'id que j'ai modifié

    Merci d'avance pour vos réponses

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bonjour,

    Pour ordonner un affichage, il vaut mieux prévoir un colonne indiquant l'ordre plutot que de manipuler les ids.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    oui tu as raison mais le problème reste entier comment ajouter +1 à toute les valeurs pour éviter qu'il y est deux même chiffre

  4. #4
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Salut ! Alors je vais essayer de réfléchir c'est un petit algo à faire ça^^:

    DOnc on a l'id à partir du quel on mettra tous les autre à jour...
    Ceci est un code exemple sans rapport avec le tiens mais à adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $id=$_GET['id'];
    $req=mysql_query('SELECT * FROM galeries where id >=$id',$cnx) or die(mysql_error());
     
    for($i=$id,$i<=mysql_num_rows($req),$i++){
        mysql_query('update galerie set id=id+1 where id=$i',$cnx) or die(mysql_error());
     
    }
    Qu'en pense tu?

    EDIT : Désolé je viens de voir que ca marcherais pas... J'y réfléchis encore

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    oui tu as raison mais le problème reste entier comment ajouter +1 à toute les valeurs pour éviter qu'il y est deux même chiffre
    Pourquoi pour changer une position aurais-tu besoin de changer toutes les positions ?
    Changer l'ordre ce n'est qu'inverser deux positions.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    par exemple j'ai un tableau avec 10 nombre :
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10

    je veux mettre une image associé au nombre 3
    donc il faut que je transforme le 3 en 4, le 4 en 5, etc ...

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    pourquoi ton code ne marcherais pas ?

  8. #8
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Re !^^
    Il ne marcherais pas car supposons que je modifie l'enregistrement 5 il passe à 6 donc...

    Et au prochain tour de boucle dans le where, il trouvera deux id à 6 logiquement (celui que j'ai modifié avant et celui déjà existant dans la table).... et les incrémentera tous les deux Tu vois l'erreur?^^

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    je ne sais pas si on peut mais avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for ($i=100;$i>$id;$i--) {
    	mysql_query('UPDATE galeries set id="' . $i+1 . '" WHERE id="' . $i . '"');
    }
    mysql_query('UPDATE galeries set description="' . $description . '", id="' . $id . '" WHERE id="' . $_GET['d'] . '"');

  10. #10
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    tu pourras essayer ceci:

    supposons que tu veux ajouter le 3;
    tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     $nouveau_ID = 3;
     mysql_query('update galerie set id=id+1 where id >='.$nouveau_ID.'',$cnx) or die(mysql_error());
    // ici tu inserres ta nouvelle photo en precisant sa position( id= 3)
    mysql_query('insert into galerie(id, ...) value( '.$nouveau_ID.', ...)',$cnx) or die(mysql_error());
    j´espere t´avoir un peu aider

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Après une nuit de méditation j'ai trouvé voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $description = $_POST['description'];
    $id = $_POST['id'];
    $query2 = mysql_query('SELECT * FROM galeries ORDER BY id DESC LIMIT 0,1');
    $nombre = mysql_fetch_assoc($query2);
    $nombre2 = $nombre['id'];
    	for ($i=$nombre2;$i>=$id;$i--) {
    		$nouveau = $i+1;
    		mysql_query('UPDATE galeries set id="' . $nouveau . '", description="' . $description . '" WHERE id="' . $i . '"');
    	}
    	$getid = $_GET['d']+1;
    	mysql_query('UPDATE galeries set id="' . $id . '", description="' . $description . '" WHERE id="' . $getid . '"');
    mais j'ai un autre problème à force modifier les id je me retrouve avec un trou comme ca

    id
    1
    2
    4

    donc je voudrais remettre de l'ordre (1,2,3,etc) avec ce code mais ça ne marche pas, si vous pouviez me dire pourquoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for ($i=0;$i<=$nombre2;$i++) {
    	$requete = mysql_query('SELECT * FROM galeries ORDER BY id ASC LIMIT ' . $i . ',1');
    	$nb = mysql_fetch_row($requete);
    	mysql_query('UPDATE galeries id="' . $i . '" WHERE id="' . $nb[0] . '"');
    }

  12. #12
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    le trou qui existe est du au fait que tu n´as pas inseré la nouvelle image a la postion 3.
    tu n´as fait que reculer les autres images et oublié d´inserer la nouvelle.

Discussions similaires

  1. Populate plusieurs champs avec une même valeur
    Par dedis dans le forum Zend_Form
    Réponses: 5
    Dernier message: 26/03/2011, 17h59
  2. Réponses: 2
    Dernier message: 21/09/2009, 15h20
  3. Réponses: 2
    Dernier message: 13/08/2009, 15h49
  4. 2 INPUT avec la même valeur
    Par uskiki85 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 10/01/2008, 18h14
  5. remplir une colonne entière avec la même valeur
    Par potili2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/11/2007, 13h24

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