PHP
Résolu/Fermé
smoutsmout
Messages postés
160
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
9 janvier 2009
-
9 janv. 2009 à 09:57
smoutsmout Messages postés 160 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 9 janvier 2009 - 9 janv. 2009 à 15:09
smoutsmout Messages postés 160 Date d'inscription lundi 26 mai 2008 Statut Membre Dernière intervention 9 janvier 2009 - 9 janv. 2009 à 15:09
A voir également:
- PHP
- Easy php - Télécharger - Divers Web & Internet
- Bouton php - Forum PHP
- \R php ✓ - Forum PHP
- Href php ✓ - Forum PHP
- Echo image php ✓ - Forum PHP
19 réponses
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
920
9 janv. 2009 à 10:13
9 janv. 2009 à 10:13
salut,
la prochaine fois mets un titre plus explicite et mets le code source en forme avec le bouton "garder la mise en forme…"
+ conseils de rédaction
merci !
la prochaine fois mets un titre plus explicite et mets le code source en forme avec le bouton "garder la mise en forme…"
pour qu'il apparaisse comme çà
+ conseils de rédaction
merci !
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
9 janv. 2009 à 10:14
9 janv. 2009 à 10:14
pour les problèmes de requête, il faut commencer par les afficher et les exécuter dans le client sql, histoire d'être sûr que le problème ne vient pas de la requête en elle-même.
smoutsmout
Messages postés
160
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
9 janvier 2009
9 janv. 2009 à 10:20
9 janv. 2009 à 10:20
Désolée pour la mise en forme du code, j'ai pas fait attention.
Les requêtes marchent je les ai faites sur SQLServer avant de les mettre dans mon code.
C'est juste le insert qui foire, il ne me met pas la valeur $result1 dans les champs.
Les requêtes marchent je les ai faites sur SQLServer avant de les mettre dans mon code.
C'est juste le insert qui foire, il ne me met pas la valeur $result1 dans les champs.
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
9 janv. 2009 à 10:25
9 janv. 2009 à 10:25
c'est normal, si tu affiches $result1 tout seul tu verras que ça ne correspond pas à grand chose d'exploitable, normalement, $result1 est un booleen d'après ce que j'ai compris de ton code.
fais :
var_dump($result1); avant ton if pour voir
fais :
var_dump($result1); avant ton if pour voir
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
smoutsmout
Messages postés
160
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
9 janvier 2009
9 janv. 2009 à 10:39
9 janv. 2009 à 10:39
T'as raison
ça fait bool(false)
ça fait bool(false)
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
9 janv. 2009 à 10:56
9 janv. 2009 à 10:56
qu'est ce que tu veux avoir dans cette variable ? la nouvelle valeur de num ?
smoutsmout
Messages postés
160
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
9 janvier 2009
9 janv. 2009 à 11:01
9 janv. 2009 à 11:01
Oui la nouvelle valeur de num.
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
9 janv. 2009 à 11:07
9 janv. 2009 à 11:07
il faut que tu fasses un select pour la récupérer, soit avant et tu y ajoute 1, soit après, mais tu n'obtiendras pas la valeur à l'issue d'un update
smoutsmout
Messages postés
160
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
9 janvier 2009
9 janv. 2009 à 11:11
9 janv. 2009 à 11:11
D'accord, je vais faire ca
smoutsmout
Messages postés
160
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
9 janvier 2009
9 janv. 2009 à 11:17
9 janv. 2009 à 11:17
En effet ça a l'air mieux :)
Et comment je fait pour convertir la donnée num int en varchar(6) pour obtenir par ex si num=12, code ='000012' ???
Et comment je fait pour convertir la donnée num int en varchar(6) pour obtenir par ex si num=12, code ='000012' ???
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
920
9 janv. 2009 à 11:45
9 janv. 2009 à 11:45
$code = str_pad($num, 6, "0", STR_PAD_LEFT);
+ strpad()
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
9 janv. 2009 à 11:53
9 janv. 2009 à 11:53
heu il y a peut-être une fonction en php pour faire ça mais je ne la connais pas...
essaye ça :
essaye ça :
function varchar($var, $n) { $str = ''; for ($i=strlen($var); $i<$n; $i++) { $str .= '0'; } return $str.$var; } echo varchar($num, 6);
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
9 janv. 2009 à 11:53
9 janv. 2009 à 11:53
lol merci Dalida
smoutsmout
Messages postés
160
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
9 janvier 2009
9 janv. 2009 à 14:19
9 janv. 2009 à 14:19
J'ai modofié mon code :
Mais j'obtiens ça :
Warning: mssql_query(): message: Échec de la conversion de la valeur varchar « Resource id #5 » en type de données int. (severity 16) in c:\program files\easyphp1-8\www\stage\traitement_controle.php on line 54
Warning: mssql_query(): Query failed in c:\program files\easyphp1-8\www\stage\traitement_controle.php on line 54
Enregistrement effectué avec succès
$query1 = "UPDATE pilotes_num SET num = num + 1 WHERE libelle = 'pilotes'";
$query2 = "SELECT num FROM pilotes_num WHERE libelle = 'pilotes'";
if((strlen($nom)!=0)&&(strlen($prenom)!=0)&&(strlen($date)!=0))
{
$result = mssql_query($query, $con);
echo(" <br> Nb enregistrement trouvé(s): ". mssql_num_rows($result));
$result1 = mssql_query($query1);
$num = mssql_query($query2);
$code = mssql_query($query2);
$code = str_pad($num, 6, "0", STR_PAD_LEFT);
if (mssql_num_rows($result) != 0)
{
echo "<br>Enregistrement déjà présent dans la base de données.";
}
else
{
LIGNE 54 if(!mssql_query("INSERT INTO " . $table . "(code, num, nom, prenom, date_naissance) VALUES ('" .$code. "', '" .$num. "', '" . $nom . "', '" . $prenom . "', '" . $date . "')", $con))
{
echo("Enregistrement effectué avec succès");
}
else
{
echo("erreur lors de l'enregistrement");
}
}
}
Mais j'obtiens ça :
Warning: mssql_query(): message: Échec de la conversion de la valeur varchar « Resource id #5 » en type de données int. (severity 16) in c:\program files\easyphp1-8\www\stage\traitement_controle.php on line 54
Warning: mssql_query(): Query failed in c:\program files\easyphp1-8\www\stage\traitement_controle.php on line 54
Enregistrement effectué avec succès
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
920
9 janv. 2009 à 14:31
9 janv. 2009 à 14:31
en premier merci beaucoup d'avoir tenu compte de ma remarque, c'est beaucoup plus simple pour ceux qui veulent t'aider !!!
-:o)
ensuite, petit conseil.
en PHP quand tu as un soucis avec une fonction commence par chercher la définition de ladite fonction dans le manuel PHP.
pour ça une recherche Google avec "PHP nom_de_la_fonction"
dans les résultats, tu cherches le site php.net (les autres ne sont que des copies du manuel, autant aller à la source !).
dans ce cas, tu atterris sur cette page.
comme tu as un problème de conversion de type, regarde la valeur de retour :
resource, TRUE ou FALSE.
dans tous les cas, que ta requête aboutisse ou pas, $num ne contiendra pas un entier.
il faut tester la valeur de retour, puis extraire la valeur de ta ressource avec un code du genre :
-:o)
ensuite, petit conseil.
en PHP quand tu as un soucis avec une fonction commence par chercher la définition de ladite fonction dans le manuel PHP.
pour ça une recherche Google avec "PHP nom_de_la_fonction"
dans les résultats, tu cherches le site php.net (les autres ne sont que des copies du manuel, autant aller à la source !).
dans ce cas, tu atterris sur cette page.
comme tu as un problème de conversion de type, regarde la valeur de retour :
Valeurs de retour Retourne une ressource de résultats MS SQL en cas de succès, TRUE si aucun ligne n'est retournée, ou FALSE si une erreur survient.
resource, TRUE ou FALSE.
dans tous les cas, que ta requête aboutisse ou pas, $num ne contiendra pas un entier.
il faut tester la valeur de retour, puis extraire la valeur de ta ressource avec un code du genre :
$result = mssql_query($sql) or die("MS-Query Error in select-query"); $row = mssql_fetch_row($result); $num = $row[0];
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
9 janv. 2009 à 14:47
9 janv. 2009 à 14:47
suivant la requête entrée, on peut récupérer un ou plusieurs résultat, il faudra donc obligatoirement que tu passes par une fonction intermédiaire entre l'exécution de ta requête et la récupération des données.
il y a 3 fonctions pour ça :
mssql_fetch_row, mssql_fetch_assoc, mssql_fetch_array
Si tu es sûr de obtenir un seul résultat, tu peux faire comme te l'a conseillé Dalida, sinon tu peux faire quelque chose de ce genre :
je t'ai déjà transmis un code de ce genre dans un sujet précédent il me semble ;)
il y a 3 fonctions pour ça :
mssql_fetch_row, mssql_fetch_assoc, mssql_fetch_array
Si tu es sûr de obtenir un seul résultat, tu peux faire comme te l'a conseillé Dalida, sinon tu peux faire quelque chose de ce genre :
while ($data = mssql_fetch_array($resultat)) { $num = $data['num']; $truc = $data['truc']; }
je t'ai déjà transmis un code de ce genre dans un sujet précédent il me semble ;)
smoutsmout
Messages postés
160
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
9 janvier 2009
9 janv. 2009 à 15:02
9 janv. 2009 à 15:02
Merci de votre patience, je ne suis vraiment pas un cadeau. lol.
en effet tu m'avais donné un code du genre.
J'ai testé la méthode de Dalida.
Et j'ai :
c'est pas $result1 qu'il faut lui passer ?
J'ai aussi fait s'afficher $code, qui donne 000000, or il devrait me donner 000002.
en effet tu m'avais donné un code du genre.
J'ai testé la méthode de Dalida.
$query = "SELECT * FROM " . $table . " WHERE nom='" . $nom . "' AND prenom='" . $prenom . "' AND date_naissance='" . $date . "'";
$query1 = "UPDATE pilotes_num SET num = num + 1 WHERE libelle = 'pilotes'";
$query2 = "SELECT num FROM pilotes_num WHERE libelle = 'pilotes'";
if((strlen($nom)!=0)&&(strlen($prenom)!=0)&&(strlen($date)!=0))
{
$result = mssql_query($query, $con);
echo(" <br> Nb enregistrement trouvé(s): ". mssql_num_rows($result));
$result1 = mssql_query($query1);
LIGNE 43 $row = mssql_fetch_row($result1);
$num = $row[0];
$code = mssql_query($query2);
$code = str_pad($num, 6, "0", STR_PAD_LEFT);
Et j'ai :
Warning: mssql_fetch_row(): supplied argument is not a valid MS SQL-result resource in ....... on line 43
c'est pas $result1 qu'il faut lui passer ?
J'ai aussi fait s'afficher $code, qui donne 000000, or il devrait me donner 000002.
smoutsmout
Messages postés
160
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
9 janvier 2009
9 janv. 2009 à 15:07
9 janv. 2009 à 15:07
Non c'est bon j'ai trouvé ma connerie
ca marche
ca marche
smoutsmout
Messages postés
160
Date d'inscription
lundi 26 mai 2008
Statut
Membre
Dernière intervention
9 janvier 2009
9 janv. 2009 à 15:09
9 janv. 2009 à 15:09
Merci à tous les deux.
C'est sympa de m'avoir aidé.
C'est sympa de m'avoir aidé.