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 :

Erreur incompréhensible dans un requete de base ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut Erreur incompréhensible dans un requete de base ?
    salut a tous,
    cela fait une journée que je cherche sans trouver le truc de base mais incompréhensible.

    La bdd "test":
    id | nom | position
    1 | nom1 | 4
    2 | nom2 | 3
    3 | nom3 | 2
    4 | nom4 | 1

    le code :
    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
    61
     
    <?php
    require("connect.php");
     
    if(!empty($_POST))
    {
    $cate=$_POST['category'];
     
    	foreach($cate as $c){
    	extract($c);
    	print_r($c);
    	$sql1="UPDATE test SET nom='$nom', position=$position WHERE id=$id";
    	mysql_query($sql1) or die(mysql_error());
    	}
     
    }
    ?>
    <!doctype html>
    <head>
    <meta charset="utf-8">
    <title>jQuery UI Sortable - Default functionality</title>
    <link rel="stylesheet" href="js/jquery-ui.css">
    <script src="js/jquery.js"></script>
    <script src="js/jquery-ui.js"></script>
    <script src="js/order.js"></script>
    <style>
     #sortable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
    #sortable li { margin: 0 3px 3px 3px; padding: 0.4em; padding-left: 1.5em; font-size: 1.4em; height: 18px; }
    #sortable li span { position: absolute; margin-left: -1.3em; }
    ul#sortable li{border:1px solid #ff0000}
    ul#sortable li.fantom{border:1px solid #000000}
    </style>
     
    </head>
    <body>
    <form method="post" action="admin.php">
     
    <ul id="sortable">
    <?php
    			$i=0;
    			$sql="SELECT nom,id,position FROM test ORDER BY position ASC";
    			$req = mysql_query($sql) or die(mysql_error());
    				while($d = mysql_fetch_assoc($req))
    				{
    				$i++;
    				?>
    				<li>
    				<span class="ui-icon ui-icon-arrowthick-2-n-s"></span>
    					<input type="hidden" name="category[<?php echo $i; ?>][$id]"  value="<?php echo $d['id'];?>" />
    					<input type="text" name="category[<?php echo $i; ?>][$nom]"  value="<?php echo $d['nom'];?>" />
    					<input type="text" class="positioninput" name="category[<?php echo $i; ?>][$position]"  value="<?php echo $d['position'];?>" />
    				</li>
     
    				<?php
    				}
    ?>
    </ul>
    <input type="submit" value="Enregistrer"/>
    </form>
    </body>
    </html>
    donc quand je valide mon "form", les données sont bien envoyées puisque je les affiches avec le print_r mais il ne trouve pas mon $id
    cela m'affiche cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [$id] => 1 [$nom] => Titre1 [$position] => 4 ) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE id=' at line 1
    si qql'un a une idée je suis preneur.
    merci d'avance

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql1 = " UPDATE test SET nom='$nom', position='$position' WHERE id='$id' " ;

  3. #3
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    Effectivement je n'est plus d'erreur, mais le update ne fonctionne pas ???
    c'est quoi le blem

    si j'echo ma requête cela me donne cela

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE test SET nom='', position='' WHERE id=''
    UPDATE test SET nom='', position='' WHERE id=''
    UPDATE test SET nom='', position='' WHERE id=''
    UPDATE test SET nom='', position='' WHERE id=''

    alors que mon print_r($c) m affiche
    Array ( [$id] => 4 [$nom] => Titre4 [$position] => 1 ) Array ( [$id] => 3 [$nom] => Titre3 [$position] => 2 ) Array ( [$id] => 2 [$nom] => Titre2 [$position] => 3 ) Array ( [$id] => 1 [$nom] => Titre1 [$position] => 4 )

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour.

    C'est un INSERT INTO que vous devez faire... (et non pas un UPDATE)
    Hier, il était tard, j'avais remarqué l'erreur de syntaxe, pas celle de logique...

    Cdlt

  5. #5
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    c'est un menu "sortable" avec mise a jour en bdd donc
    non c'est bien un update,
    car les données sont déjà insérées
    regardez le code de la page ...

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Hummm...
    Effectivement, je n'ai pas fait très attention !...
    C'est un FORM qui boucle sur lui même, et qui en plus génère des INPUT à la volée !... Miam miam...

    Je vais essayer de comprendre...

    PS : Il y a probablement un internaute plus habile que moi. Qu'il n'hésite pas à se manifester

  7. #7
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Si j'ai compris (pas sûr) il me semble qu'il y a une erreur de conception !

    Vous me direz si je m'égare :
    - vous cherchez à mettre à jour une table SQL via un formulaire.
    - pour ce faire, vous devriez utiliser vos variables PHP sous la forme d'un tableau, vos input étant "de facto" un tableau
    - la lecture de la table SQL ne doit se faire qu'un fois (c'est à dire, la 1ère fois quand $_POST est vide (if empty($_POST) comme on le retrouve dans votre code).
    - à l'affichage le "id" est caché, effectivement il ne faut surtout pas y toucher.
    - Comme, votre formulaire "boucle sur lui-même" vous devez à partir du tableau $_POST recharger, celui de vos données PHP.
    - le chargement du form se fait à partir du tableau PHP (boucle de chargement)
    - normalement vous devriez intégrer une routine de vérification (boucle pour s'assurer qu'on ne saisie pas des cochonneries)
    - quand il n'y a pas d'erreur de saisie vous faites l'UPDATE final.

    Si c'est cela, y'a du boulot !...
    Je me demande si vous ne devriez pas plutôt faire cela sur 2 pages avec S_SESSION (en une page ce sera le BAZAR)

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/07/2008, 23h07
  2. [MySQL] Erreur incompréhensible dans mon code
    Par L'aigle de Carthage dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/03/2008, 16h02
  3. Erreur incompréhensible dans une jsp
    Par mithrendil dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 10/01/2008, 14h58
  4. Variable d'une table dans une requete non basée sur cette table
    Par MickaelKael dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 22/10/2007, 10h46
  5. Erreur incompréhensible dans une boucle
    Par Neuromancien2 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/08/2007, 17h48

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