[php_my_sql] problème d'update
Fermé
kifouillou
Messages postés
170
Date d'inscription
mardi 27 septembre 2005
Statut
Membre
Dernière intervention
28 janvier 2011
-
14 mars 2008 à 11:08
kifouillou Messages postés 170 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 28 janvier 2011 - 19 mars 2008 à 10:35
kifouillou Messages postés 170 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 28 janvier 2011 - 19 mars 2008 à 10:35
A voir également:
- [php_my_sql] problème d'update
- Windows update 0x80070643 - Accueil - Windows
- Windows update bloqué - Guide
- Asus live update - Télécharger - Utilitaires
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Nettoyage windows update - Guide
4 réponses
Bonjour
As-tu fait un echo $sql; pour voir quelle requête est effectivement générée par ton code ?
Je suppose que dans ton code, il y a bien le mysql_query($sql) que tu ne montres pas.
As-tu fait un echo $sql; pour voir quelle requête est effectivement générée par ton code ?
Je suppose que dans ton code, il y a bien le mysql_query($sql) que tu ne montres pas.
y a bien mysql_query enfin un dbiquery mais c'est la meme chose
sauf que je ne trouve pas de dbiquery dans la doc PHP et que le sujet de ton post parle de my_sql ...
Testes-tu les valeurs de retour de ta connexion à ta base et celle de la requête ?
sauf que je ne trouve pas de dbiquery dans la doc PHP et que le sujet de ton post parle de my_sql ...
Testes-tu les valeurs de retour de ta connexion à ta base et celle de la requête ?
kifouillou
Messages postés
170
Date d'inscription
mardi 27 septembre 2005
Statut
Membre
Dernière intervention
28 janvier 2011
9
14 mars 2008 à 12:19
14 mars 2008 à 12:19
Testes-tu les valeurs de retour de ta connexion à ta base et celle de la requête ?
Que veux tu dire par la?
Sinon pour le dbi c'est une commande perl équivalent à mysql_query. C'est la boite ou je suis en stage qui m'a expliqué cela.
Je me demande si je dois pas utiliser le $v.
Que veux tu dire par la?
Sinon pour le dbi c'est une commande perl équivalent à mysql_query. C'est la boite ou je suis en stage qui m'a expliqué cela.
Je me demande si je dois pas utiliser le $v.
1 -
Testes-tu les valeurs de retour de ta connexion à ta base et celle de la requête ?
Que veux tu dire par la?
classiquement, avant d'utiliser la base de données mysql dans un script php, tu dois faire deux choses :
a- te connecter à la base en appelant une fonction mysql_connect à laquelle tu dois indiquer le nom du serveur, le login et le mot de passe de connexion.Cette fonction rend FALSE s'il y a un problème et un ressource si tout est ok.
b- choisir la base de données sur laquelle tu veux travailler avec la fonction mysql_select_db. Cette fonction rend TRUE si ça c'est bien passé et FALSE s'il y a un problème.
Fais-tu un appel à ces deux fonctions ? Vérifies-tu si elles te rendent FALSE ou non ?
dbi c'est une commande perl équivalent à mysql_query
une commande Perl en php ? ça me semble absurde, mais supposons qu'il y a une bibliothèque qui permette d'appeler mysql de cette manière. Cette fonction dbiquery doit bien elle aussi avoir une valeur de retour (true ou false ou ressource) : est-ce qu'elle te retourne quelque chose de correct ? Et là je ne peux pas te dire ce qui est correct, puisque ça n'est pas dans la doc du php
Toute la durée de ta mise au point, je te conseille de mettre error_reporting(E_ALL); au début de ton script, il te montrera toutes tes erreurs alors que la plupart des serveurs sont configurés pour cacher de nombreuses erreurs.
Testes-tu les valeurs de retour de ta connexion à ta base et celle de la requête ?
Que veux tu dire par la?
classiquement, avant d'utiliser la base de données mysql dans un script php, tu dois faire deux choses :
a- te connecter à la base en appelant une fonction mysql_connect à laquelle tu dois indiquer le nom du serveur, le login et le mot de passe de connexion.Cette fonction rend FALSE s'il y a un problème et un ressource si tout est ok.
b- choisir la base de données sur laquelle tu veux travailler avec la fonction mysql_select_db. Cette fonction rend TRUE si ça c'est bien passé et FALSE s'il y a un problème.
Fais-tu un appel à ces deux fonctions ? Vérifies-tu si elles te rendent FALSE ou non ?
dbi c'est une commande perl équivalent à mysql_query
une commande Perl en php ? ça me semble absurde, mais supposons qu'il y a une bibliothèque qui permette d'appeler mysql de cette manière. Cette fonction dbiquery doit bien elle aussi avoir une valeur de retour (true ou false ou ressource) : est-ce qu'elle te retourne quelque chose de correct ? Et là je ne peux pas te dire ce qui est correct, puisque ça n'est pas dans la doc du php
Toute la durée de ta mise au point, je te conseille de mettre error_reporting(E_ALL); au début de ton script, il te montrera toutes tes erreurs alors que la plupart des serveurs sont configurés pour cacher de nombreuses erreurs.
kifouillou
Messages postés
170
Date d'inscription
mardi 27 septembre 2005
Statut
Membre
Dernière intervention
28 janvier 2011
9
14 mars 2008 à 15:07
14 mars 2008 à 15:07
Bon
la connection fonctionne bien, pis j'ai essayé une autre requète qui elle fonctionnait.
Pour la différence entre dbiquery et mysql_query, j'ai adopté leur manière de faire mais je ne sais absolument pas pourquoi ils font comme cela. Je demanderai à mon maître de stage.
Encore et toujours merci.
la connection fonctionne bien, pis j'ai essayé une autre requète qui elle fonctionnait.
Pour la différence entre dbiquery et mysql_query, j'ai adopté leur manière de faire mais je ne sais absolument pas pourquoi ils font comme cela. Je demanderai à mon maître de stage.
Encore et toujours merci.
kifouillou
Messages postés
170
Date d'inscription
mardi 27 septembre 2005
Statut
Membre
Dernière intervention
28 janvier 2011
9
17 mars 2008 à 10:59
17 mars 2008 à 10:59
Bonjour,
je renvoie un message car mon problème a quelque peu augmenté. Je dois toujours réalisé un update mais à partir d'un draganddrop réalisé en javascript avec YUI.
Je bouge les div contenant les enregistrements dans l'ordre que je veux et mon update doit prendre en compte cet ordre.
Voilà. Merci encore.
je renvoie un message car mon problème a quelque peu augmenté. Je dois toujours réalisé un update mais à partir d'un draganddrop réalisé en javascript avec YUI.
Je bouge les div contenant les enregistrements dans l'ordre que je veux et mon update doit prendre en compte cet ordre.
Voilà. Merci encore.
kifouillou
Messages postés
170
Date d'inscription
mardi 27 septembre 2005
Statut
Membre
Dernière intervention
28 janvier 2011
9
19 mars 2008 à 10:35
19 mars 2008 à 10:35
bonjour à tous,
sa y es j'ai résolu mon problème. J'ai appris un truc très utile en php, c'est les regex. Et encore je trouve que celle que j'ai utilisé est pas compliqué. Je vous donne donc ma solution commentée, si quelqu'un à l'avenir à le même souci.
Le formulaire :
<div class=ddentry id="bb$R[sturct_id]">
Type : <input type="text" name="type_$R[sturct_id]" id="type_$R[sturct_id]" value= "$R[struct_type_stream]" ><br />
Nom : <input type="text" name="nom_$R[sturct_id]" id="nom_$R[sturct_id]" value= "$R[struct_nom]"><br />
Libelle : <input type="text" name="libelle_$R[sturct_id]" id="libelle_$R[sturct_id]" value= "$R[struct_libelle]" ><br />
Type des données : <input type="text" name="datatype_$R[sturct_id]" id="datatype_$R[sturct_id]" value="$R[struct_datatype]" >
<input name="lst_sturct_id$R[sturct_id]" id="lst_sturct_id$R[sturct_id]" type="hidden" value="$R[sturct_id]"/>
</div>
$struct_type = $R['struct_type_stream'];
$struct_nom = $R['struct_nom'];
$struct_libelle = $R['struct_libelle'];
$struct_datatype = $R['struct_datatype'];
$sturct_id = $R['sturct_id'];
}
<style type=text/css>
div.ddentry { border:1px solid #999; border-left:20px solid #999;margin-bottom:4px; padding:4px; }
</style>
<h1>Gestion des documents de type $type</h1>
<form name="form" id="form" method=post action='$_SERVER[PHP_SELF]'>
<input type=hidden name=Action value='$_REQUEST[Action]'>
<input type=hidden name=Etape value='valider'>
$html
<input type=submit >
</form>
et le code permettant de valider avec la regex :
function pimpValiderStructureDocument($html)
{
// Parcours des champs du formulaire pour enregister chaque ligne
$struct_ordre=1;
foreach ($_POST as $k => $v)
{
if (! ereg("^lst_sturct_id([0-9]+)$",$k,$o)) continue; // On ne recherche que les champs hidden embarquant l'id de la bdd
$ligne = $o[1]; // numéro de la ligne en cours de traitement
$id = $v; // L'id de l'enregistrement est la valeur de ce champs
$Data = array(); // Créer un tableau vide pour stoker les valeurs à enregistrer
$Data['struct_type_stream'] = $_POST['type_'.$ligne];
$Data['struct_nom'] = $_POST['nom_'.$ligne];
$Data['struct_libelle'] = $_POST['libelle_'.$ligne];
$Data['struct_datatype'] = $_POST['datatype_'.$ligne];
$Data['struct_ordre'] = $ordre;
if ($id){ // Si un id est dispo => enregistrement existant à modifier, sinon enregistrement à créer
dbiUpdateBDArray('stream_structure_2', 'sturct_id', $id, $Data);
$struct_ordre++;
}
else
dbiInsertBDArray('stream_structure_2', $Data);
}
}
sa y es j'ai résolu mon problème. J'ai appris un truc très utile en php, c'est les regex. Et encore je trouve que celle que j'ai utilisé est pas compliqué. Je vous donne donc ma solution commentée, si quelqu'un à l'avenir à le même souci.
Le formulaire :
<div class=ddentry id="bb$R[sturct_id]">
Type : <input type="text" name="type_$R[sturct_id]" id="type_$R[sturct_id]" value= "$R[struct_type_stream]" ><br />
Nom : <input type="text" name="nom_$R[sturct_id]" id="nom_$R[sturct_id]" value= "$R[struct_nom]"><br />
Libelle : <input type="text" name="libelle_$R[sturct_id]" id="libelle_$R[sturct_id]" value= "$R[struct_libelle]" ><br />
Type des données : <input type="text" name="datatype_$R[sturct_id]" id="datatype_$R[sturct_id]" value="$R[struct_datatype]" >
<input name="lst_sturct_id$R[sturct_id]" id="lst_sturct_id$R[sturct_id]" type="hidden" value="$R[sturct_id]"/>
</div>
$struct_type = $R['struct_type_stream'];
$struct_nom = $R['struct_nom'];
$struct_libelle = $R['struct_libelle'];
$struct_datatype = $R['struct_datatype'];
$sturct_id = $R['sturct_id'];
}
<style type=text/css>
div.ddentry { border:1px solid #999; border-left:20px solid #999;margin-bottom:4px; padding:4px; }
</style>
<h1>Gestion des documents de type $type</h1>
<form name="form" id="form" method=post action='$_SERVER[PHP_SELF]'>
<input type=hidden name=Action value='$_REQUEST[Action]'>
<input type=hidden name=Etape value='valider'>
$html
<input type=submit >
</form>
et le code permettant de valider avec la regex :
function pimpValiderStructureDocument($html)
{
// Parcours des champs du formulaire pour enregister chaque ligne
$struct_ordre=1;
foreach ($_POST as $k => $v)
{
if (! ereg("^lst_sturct_id([0-9]+)$",$k,$o)) continue; // On ne recherche que les champs hidden embarquant l'id de la bdd
$ligne = $o[1]; // numéro de la ligne en cours de traitement
$id = $v; // L'id de l'enregistrement est la valeur de ce champs
$Data = array(); // Créer un tableau vide pour stoker les valeurs à enregistrer
$Data['struct_type_stream'] = $_POST['type_'.$ligne];
$Data['struct_nom'] = $_POST['nom_'.$ligne];
$Data['struct_libelle'] = $_POST['libelle_'.$ligne];
$Data['struct_datatype'] = $_POST['datatype_'.$ligne];
$Data['struct_ordre'] = $ordre;
if ($id){ // Si un id est dispo => enregistrement existant à modifier, sinon enregistrement à créer
dbiUpdateBDArray('stream_structure_2', 'sturct_id', $id, $Data);
$struct_ordre++;
}
else
dbiInsertBDArray('stream_structure_2', $Data);
}
}
14 mars 2008 à 11:43
ben oui oui, y a bien mysql_query enfin un dbiquery mais c'est la meme chose. Et le echo $sql m'affiche ma requete update.
Merci encore.