Programmation » coquille et php [RESOLU]
Catégorie:  
   
coquille et php [RESOLU]
Publié le 15/12/2010 @ 13:11:28,
Par wangacoast
bonjour tout le monde,

today, j'ai un petit soucis en php. Il s'agit d'un code fonctionnant dans mon logiciel de gestion de bibliothèque PMB. Il permet de générer des identifiants (id) de manière automatique par incrémentation pour les attribuer aux livres. Je ne vais pas entrer dans les détails mais les paramètres par défaut du code ne me convenant pas, j'ai bidouillé le code.

Le résultat ne pose pas de problème, apparemment je n'ai pas fait de grosse bêtise mais le logiciel me sort quand même ce message d'erreur après la génération de l'id :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /homez.27/kaowarso/www/pmb/includes/gen_code/gen_code_exemplaire.php on line 8

Je me permets de vous mettre une copie de mon code bidouillé avec les éléments modifiés en rouge :

<?php

function init_gen_code_exemplaire($notice_id,$bull_id)
{
global $dbh;
$requete="select (expl_cb)as cb from exemplaires WHERE max(expl_id)";
$query = mysql_query($requete, $dbh);
if(mysql_num_rows($query)) {
if(($cb = mysql_fetch_object($query)))
$code_exemplaire= $cb->cb;
else $code_exemplaire = "0";
} else $code_exemplaire = "0";
return $code_exemplaire;
}

function gen_code_exemplaire($notice_id,$bull_id,$code_exemplaire)
{
$code_exemplaire++;
return $code_exemplaire;
}

et voici le code original :


<?php

function init_gen_code_exemplaire($notice_id,$bull_id)
{
global $dbh;
$requete="select max(expl_cb)as cb from exemplaires WHERE expl_cb like 'GEN%'";
$query = mysql_query($requete, $dbh);
if(mysql_num_rows($query)) {
if(($cb = mysql_fetch_object($query)))
$code_exemplaire= $cb->cb;
else $code_exemplaire = "GEN000000";
} else $code_exemplaire = "GEN000000";
return $code_exemplaire;
}

function gen_code_exemplaire($notice_id,$bull_id,$code_exemplaire)
{
$code_exemplaire++;
return $code_exemplaire;
}

un grand merci d'avance!

Dernière édition: 15/12/2010 @ 14:20:08
   
coquille et php
Publié le 15/12/2010 @ 13:31:29,
Par max
pour débuger et avoir le message d'erreur de MySQL:


echo mysql_errno($dbh) . ": " . mysql_error($dbh) . "\n";


A placer après le query

Dernière édition: 15/12/2010 @ 13:32:14
Trololo
   
coquille et php
Publié le 15/12/2010 @ 13:32:42,
Par wangacoast
j'ai essayé mais toujours la même erreur
   
coquille et php
Publié le 15/12/2010 @ 13:34:56,
Par zion
ajoute un echo(mysql_error()); après le mysql_query pour qu'on sache au moins quoi :smile:
Je suis le Roy :ocube:
   
coquille et php
Publié le 15/12/2010 @ 13:35:02,
Par max
je me suis trompé, j'efface mon précedent message et je recommande:


ton WHERE max() n'est pas valide.

Tu ne peux pas utiliser ces fonctions dans une condition.
Trololo
   
coquille et php
Publié le 15/12/2010 @ 13:35:13,
Par wangacoast
ok voilà : 1111: Invalid use of group function
   
coquille et php
Publié le 15/12/2010 @ 13:35:51,
Par zion
Enfin, sans avoir l'erreur, ton WHERE est foireux.

$requete="select (expl_cb)as cb from exemplaires WHERE max(expl_id)";

max quoi, c'est pas bon du tout comme query... Tu veux faire quoi? :ocube:

:grilled:

Dernière édition: 15/12/2010 @ 13:36:11
Je suis le Roy :ocube:
   
coquille et php
Publié le 15/12/2010 @ 13:38:02,
Par max
avoir les expli_cb dont la valeur expli_id est la plus haute ?
Trololo
   
coquille et php
Publié le 15/12/2010 @ 13:38:42,
Par wangacoast
ok alors en fait je lui demande de sélectionner la valeur expl_cb (dans une colonne de ma table sql) dont l'identifiant expl_id est le plus grand de la série. Comment devrais je m'y prendre à ton avis?
   
coquille et php
Publié le 15/12/2010 @ 13:40:49,
Par wangacoast
si je dis : where expl_id=max(expl_id) ?
   
coquille et php
Publié le 15/12/2010 @ 13:43:08,
Par max
pas de max() dans un where qu'on te dit :smile:

tu attends un seul résultat ?

select expl_cb from exemplaires order by expli_id desc limit 0,1;

ce n'est valable que si expli_id est unique et qu'il s'incrémente, si tu as plusieurs lignes qui ont le même expli_id, tu n'en aura q'un avec cette requête.

Dernière édition: 15/12/2010 @ 13:45:01
Trololo
   
coquille et php
Publié le 15/12/2010 @ 13:48:09,
Par wangacoast
en fait il me faut le expl_cb. Je m'explique : la colonne expl_cb contient l'ensemble des id de mes bouquins. Seulement je ne peux pas prendre le MAX de expl_cb parce que l'on a engendré plein d'id avec des formats différents. Du coup, il ne sélectionne pas la bonne valeur maximale.

Heureusement chaque expl_cb est doté d'un identifiant contenu dans la colonne expl_id. Et donc forcément, le plus grand expl_id correspond au dernier expl_cb encodé. Je dois donc partir de ce dernier pour générer mes futurs id de livres.
   
coquille et php
Publié le 15/12/2010 @ 13:56:16,
Par wangacoast
ça marche comme dirait Bourvil dans le jour le plus long :wink: :wink: merci beaucoup!
Répondre - Catégorie:  
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?