A SUPPRIMER

pimpa4real Messages postés 14 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 6 février 2008 - 1 févr. 2004 à 16:23
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 21 déc. 2005 à 14:55
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/19984-a-supprimer

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
21 déc. 2005 à 14:55
hum et vous faites comment le fectch_row ensuite pour la requête que vous voulez avec cette solution ? je préfère toujours la mienne pour l'instant
cs_Zart Messages postés 285 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 27 juin 2006 1
21 déc. 2005 à 11:06
Perso c'est ce que je fais...
Mais par contre il faut faire attention dans les fetch row ?
Et peut être utiliser mysql_fetch_array(resource result, int result_type)
avec result_type à MYSQL_ASSOC ? parce que sinon tu as le double de colonnes...
(C'est pas drole quand tu fais une jointure de 4 tables qui ont chacune 8 colonnes.) Evidemment après tu peux faire la projection sur les colonnes que tu veux. Mais c'est une question d'optimisation. Parce que je ne sais pas si c'est plus optimisé d'avoir un tableau de ressource ou de garder un mysql_result ? La charge du serveur c'est important !
Faudrait demander au pro de l'optimisation ?
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
20 déc. 2005 à 21:37
"Tu fais ta requete. Tu fais toutes tes series de fetch row pour batcher ça dans un tableau et après tu peut exploiter ton tableau n'importe ou ?" Oui mais cette solution est très gourmande car ton tableau va grossir rapidement.

Non, pour faire des requètes à la volée, il faut faire ca (je vais l'inclure dans mon code tiens)

// $sql peut etre du type array ou string.
public function prepare ( $sql ) {
if ( is_array($sql) ) {
foreach ($sql as $key) {
$this->sql[] = $key;
}
} else {
$this->sql = $sql;
}
}

public function query($sql=null) {
if ( !isset($sql) ) {
if ( !is_array($this->sql) ) {
$this->query = mysql_query($this->sql);
if ( !$this->query ) throw new Exception (mysql_error());
return $this->query;
} else {
foreach ($this->sql as $key) {
@mysql_query($key);
}
}
} else {
$this->query = mysql_query($sql);
return $this->query;
}
}

?>

Donc pour préparer un tas de requète à la volée :
$req1 = 'INSERT...';
$req2 = 'UPDATE ...';
$req3 = 'DELETE ...';
$req = array($req1, $req2, $req3);
$db->prepare($req);
$db->query();

Et zoup...

Ca peut encore s'améliorer avec la gestion d'un tableau associatif pour $this->sql, ou encore gérer le fait de garder les querys en mémoire, donc que $this->query devienne un tableau de ressource.

Jverrais ce type de production après les fètes...
cicrane Messages postés 1 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 20 décembre 2005
20 déc. 2005 à 10:09
Pour ne plus avoir à gérer les numéros de requêtes, tu pourrais changer la fonction requete par quelque chose de ce goût-là:

public function requete($psRequete) {
$loAdresse = @mysql_query($psRequete);
if (!$loAdresse ) {
$this->erreur('Impossible d\'effectuer la requête.');
return FALSE;
}
else {
$this->requete[] = $loAdresse ;
return sizeof($this->requete)-1;
}
}

puis récupérer le numéro de la requête:

$liRequete = $loBase->requete($lsSql);
if ($liRequete)
$loEnreg= $loBase->fetch_row($liRequete);
cs_Zart Messages postés 285 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 27 juin 2006 1
4 nov. 2005 à 11:46
Alors je m'étais qu'il était peut être... plus simple de faire un tableau que tu remplis à la volée !
Enfin perso c'est ce que je fais et c'est beaucoup plus simple à gérer.
Tu fais ta requete. Tu fais toutes tes series de fetch row pour batcher ça dans un tableau et après tu peut exploiter ton tableau n'importe ou ? Cela résouds le problème des requetes imbriquées, etc...
De toute manière dans votre code vous faites bien une couche entre une page et la BD ? ben là c'est simplement une couche de plus non ?
Mais sinon j'aime bien le concept. EN revanche j'aimerais bien un zip parce que le copier coller de cette fenêtre est très chiant n'est-ce pas ?
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
3 nov. 2005 à 17:04
tout dépend du problème, je ne cherche pas à écrire le moins de lignes possibles (enfin tout dépend de la situation). Ici en l'occurence ouais peut-être, mais bon j'aime pas l'opérateur ternaire. Après tu fais comme tu veux ;-)
freeloony Messages postés 13 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 15 novembre 2005
3 nov. 2005 à 16:39
Merci pour cette source Anthomicro : très pratique. Je pense même lier ta source avec les commentaires FhX sur les exceptions...
Je me demande si ta fonction requête ne pourrait pas se trouver sous cette forme aussi :

public function requete($requete, $i){
(!$this->requete[$i]=@mysql_query($requete)) ? $this->erreur('Impossible d\'effectuer la requête.') : TRUE;
}
...
J'ai pas encore testé mais toi qui a l'air de vouloir écrire le moins de lignes possible, ça devrait t'arranger ?
A++
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
25 oct. 2005 à 12:07
Rassure toi Antho, tu n'es pas le seul ... nononon ;)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
25 oct. 2005 à 10:27
C'est vrai que c'est crade je suis d'accord d'ailleurs quand y'a une erreur sur mon site elle s'affiche tout en haut, c'est crade mais je suis tellement flemmard que j'ai encore rien pondu pour corriger ça ^^
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 oct. 2005 à 09:00
Ouais, pour l'instant en tous cas, c'est très très difficile de développer une classe php sans y mettreun peu d'echo...malheureusement (dépend du genre des classesn évidemment).
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
25 oct. 2005 à 01:47
Ahhhhhhh :)

Bah disons que je trouve pas commode d'utiliser du html dans une classe PHP. Je trouve que les classes ne sont pas fait pour faire du echo() à tout va. C'est comme pour une fonction, elle est la pour faire ce qu'elle a à faire, sans plus.
Après, pour la mise en page, d'après moi, ca doit se faire à l'extérieur des fonctions et des classes.
Ca fait crade je trouve de tout mélanger :D

Bah, ca viendra un jour, je désespère pas :)

En plus toi qui nous ponds un script de template, tu dois bien t'en douter lol !
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
25 oct. 2005 à 01:22
"Le seul problème, c'est que tu ne peux pas faire de mise en page sans le try/catch (pour afficher un message d'erreur à ton visiteur par exemple)."

c'est de ça que je parle moi ;-) pas du code dans la classe
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
25 oct. 2005 à 01:21
Pas du tout :) Je crois que tu as mal saisi :

Toi :
#<?php
# public function requete($requete,$i)
# {
# if(!$this->requete[$i]=@mysql_query($requete))
# {
# $this->erreur('Impossible d\'effectuer la requête.');
# return FALSE;
# }
# else
# {
# return TRUE;
# }
# }
# ?>

Moi :
<?php
public function requete($requete,$i) {
if(!$this->requete[$i]=@mysql_query($requete)) {
throw new Exception('Impossible d\'effectuer la requête.');
}
}
?>

J'ai pas le sentiment que niveau ligne de code je sois perdant :) Et ca marche sans try/catch ! Le seul problème, c'est que tu ne peux pas faire de mise en page sans le try/catch (pour afficher un message d'erreur à ton visiteur par exemple).
Après faut voir, Java utilise try/catch, pourquoi pas PHP ? Suffit de vouloir s'y mettre :) (même si je reconnais que je ne le fais pas moi-même :p)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
25 oct. 2005 à 01:04
ça reste quand même plus lourd au niveau du nombre de lignes de code comparé à ma bête gestion d'erreurs bidon qui je trouve suffit amplement lol ;-)
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
25 oct. 2005 à 00:48
Disons que tu peux quand même utiliser les exceptions.
Le try/catch n'est pas indispensable, mais elle permet de capturer l'exception directement au moment ou ca se produit.
Si tu omets le try/catch, la capture de l'exception arrive de temps à autre un peu plus tard.
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
25 oct. 2005 à 00:37
Pas mal, cette source étant en PHP 4 au début, j'ai juste en cinq minutes changé quelques variables :-)

cependant je n'aime pas cette syntaxe car au lieu de mettre

$mysql->requete('requete 1',1);
$mysql->requete('requete 2',2);

tu dois mettre

try {
$mysql->requete('requete 1',1);
$mysql->requete('requete 2',2);
} catch (Exception $e ) {
echo $e->get_message();
}

sinon merci pour ce commentaire, quand je trouverais une utilité au try catch j'en userais ;-)

pour ce qui est des sources non je mets pas trop à jour, j'ai rien modifié sur celle-ci à part une ligne je crois...
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
25 oct. 2005 à 00:18
Ah, jviens de voir que j'ai pas utiliser le try/catch :
<?php

// Ta classe
if(!$this->requete[$i]=@mysql_query($requete))
{
throw new Exception('Impossible d\'effectuer la requête.');
}
// Fin de classe

try {
$mysql->requete('requete 1',1);
$mysql->requete('requete 2',2);
} catch (Exception $e ) {
echo $e->get_message();
}

?>
Voila, c'est réparé
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
25 oct. 2005 à 00:14
Tiens tiens :) Décidement, tu mets à jours tes sources en ce moment ?
Y'a un truc qui me chagrine quand même :

"
# public function requete($requete,$i)
# {
# if(!$this->requete[$i]=@mysql_query($requete))
# {
# $this->erreur('Impossible d\'effectuer la requête.');
# return FALSE;
# }
# else
# {
# return TRUE;
# }
# }


# $mysql->connect('');
# $mysql->requete('requete 1',1);
# $mysql->requete('requete 2',2);
# $mysql->deconnect();
"
Or je vois pas de test sur tes requetes SQL pour savoir si c'est bon où pas !
Il existe en PHP5 (merci à GRenard au passage) le try/catch avec la gestion des exceptions qui évite un beau bordel de if() :) Par exemple :
<?php
if(!$this->requete[$i]=@mysql_query($requete))
{
throw new Exception('Impossible d\'effectuer la requête.');
}
?>
Ou alors, pourquoi ne pas coupler avec un trigger_error() histoire de tout couper en cas de mauvais fonctionnement ?
Bref, une soluc parmis tant d'autres !
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
14 mai 2005 à 17:32
Et avec ton système apparemment tu fais donc ton traitement après avoir fait la requête, tu auras donc plus de chances d'avoir des erreurs de "max_users_connections" si ton site est fréquenté.
Jayadeva Messages postés 67 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 1 septembre 2008
14 mai 2005 à 16:25
Moi, ca ressemble a ceci:

$db->sql_query('blabla');
while($r=$db->sql_fetchrow())
{}

ou

$request = $db->sql_query('blabla');
while($r=$db->sql_fetchrow($request))
{}

sql_query gardant automatiquement l'id de la dernière requete.
Je trouve qu'il est inutile de garder TOUTE les requete, vu que mysql libère automatiquement la mémoire...
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
14 mai 2005 à 16:19
j'avais fait ce système à l'origine pour m'épargner le code genre

$requete=mysql_query('machin')

while($r=mysql_fetch_row($requete))
{

}

je préfère la syntaxe suivante :

$mysql->requete('machin',x);
while($r=$mysql->fetch_row(x))
{

}

j'ai d'ailleurs fait une autre classe qui via des arguments dans la fonction requête gère les connexions/déconnexions, ça évite d'y faire appel et ça clarifie le code.
Jayadeva Messages postés 67 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 1 septembre 2008
14 mai 2005 à 15:59
loul, j'ai fait ma propre classe, ne t'inquiette pas pour cela :)
J'ai ce qu'il me convient. Je dit juste ce qui pourrais ne pas aller... Si par ex, tu l'utilise de façons intencive !

De plus, je trouve que spécifier l'id de la requete dans le tableau est asser... ennuyant. C'est plus jouer qu'autre chose.
Quand je code, j'ai pas envie de me soucier de mes requetes. Si j'ai besoin de mes requête je fout leur id dans une variable, sinon l'id sera détruite par la classe :)

Chacun ca manière ;)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
14 mai 2005 à 15:46
Ah ok je comprends mieux merci ;-)

bah ça coûte des perfs supplémentaires que de faire un if à chaque fois...

Plus tu gères les erreurs et plus ton code est gourmand en perfs (dans le cas présent). Donc je préfère ne pas le vérifier. Libre à toi de rajouter une condition par contre ^^

a +
Jayadeva Messages postés 67 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 1 septembre 2008
14 mai 2005 à 15:40
Bah, s'il n'y a pas de requete?
C'est ca la question... PAS de requete -> tu ne vérifie pas si l'id de requete existe avant de faire un fetch_abc ou autre...
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
14 mai 2005 à 07:10
Je comprends de moins en moins...

Je vais pas vérifier si la requête a déjà été exécutée c'est du n'importe quoi...

Si la requête génère une erreur tu auras une erreur de retournée.
Jayadeva Messages postés 67 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 1 septembre 2008
14 mai 2005 à 00:07
"Je comprends pas ce que tu veux dire..."
Tu stoque tes requetes... Mais tu ne vérifie pas si elle existe. Si tu demande une requete innexistante tu aura une erreur.
Donc, une petit condition s'impose je crois? ;)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
14 mai 2005 à 00:03
" Cette classe ne gère pas les connections persistantes."

Inutile, gourmand en perfs, inadapté à un hébergement mutualisé, bref inutile dans une classe mysql.

"Elle ne prend pas en compte l'id de mysql_query, c-a-d détecter si une requete a déjà été passée, la supprimer avant tout ou si tu na pas fait de requete, on peu tout de même passer un mysql_fetch_row et co."

Je comprends pas ce que tu veux dire... Il est tout à fait possible de réutiliser les ID des requêtes pour les fetch_row, etc...

"On ne peux pas passer une "grande" requete, dans mon jargon c'est pouvoir lancer plusieur requetes qui seront executée comme une seul avec BEGIN Et COMMIT."

Je regarderai plus en détail ce point ;-)

a +
Jayadeva Messages postés 67 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 1 septembre 2008
13 mai 2005 à 23:41
Cette classe ne gère pas les connections persistantes.
Elle ne prend pas en compte l'id de mysql_query, c-a-d détecter si une requete a déjà été passée, la supprimer avant tout ou si tu na pas fait de requete, on peu tout de même passer un mysql_fetch_row et co.

On ne peux pas passer une "grande" requete, dans mon jargon c'est pouvoir lancer plusieur requetes qui seront executée comme une seul avec BEGIN Et COMMIT.

En somme, cette classe est incomplette. 6/10
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
13 mai 2005 à 22:49
Hum merci je vais modifier les private (à vrai dire j'ai fait la modification PHP5 à l'arrache)
OniTalus Messages postés 39 Date d'inscription samedi 7 mai 2005 Statut Membre Dernière intervention 20 juin 2005
13 mai 2005 à 22:41
Pour le 'cas' d'anthomicro, vari qu'il ne fait que critiquer, mais il critique car y'a qqch à améliorer....

Par ses critiques, il m'a beaucoup aidé ^^

Sinon, à propos des private (& public), je savais juste que en PHP5 ct pas valide, mais j'ai pas regaré encore en détail ^^
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
12 mai 2005 à 17:50
Ouais bon arrête-toi là, moi je cherche pas toutes les sources de quelqu'un pour poster des commentaires bidons et inutiles.

Bref t'as 14 ans, c'est bon on l'a vu, inutile de te faire remarquer... Ensuite critiquer les sources des autres je m'en fiche, je ne dis rien quand les critiques sur mes sources sont justifiées...

Bref en gros : retourne dans ta médiocrité...
jdalton42 Messages postés 200 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 19 août 2009
12 mai 2005 à 17:17
anthomicro: ferme la biece type le gamin sur codes-sources c'est toi a tout le temps critiquer les sources des autres... a croire que tu sois jaloux de ne pas en avoir créé des commes sa...
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 mai 2005 à 10:54
Ah si un autre truc :
ta methode deconnect () devrait etre ta methode __destruct () a mon avis :-) Mais c'est moins clair, je le reconnais lol.
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 mai 2005 à 10:53
Hello,

tu abuses avec les public ;-)
Bon je n'ai pas trop le temps de regarder en detail, mais deja, sur :
ta methode erreur () peut (et devrait) etre private. Tu ne l'utiliseras en dehors de ta classe. Ou protected mais ce serait stupide pour le moment vu qu'il n'y a qu'une seule classe.
De meme pour les variables membres, autant ne mettre en public que celles qui peuvent etre accedees a l'exterieur de ta classe, et la a priori, je dirais : aucune. On en a pas besoin, tu fais des retours.

Sinon, je n'avais pas vu cette source (tu as bien fais de la mettre a jour ;-) ). Tres chouette, simple et efficace contrairement a pas mal d'autres classes mysql... :-)
Je mets 10.
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
11 mai 2005 à 18:38
Onitalus > Voilà je viens de mettre à jour, je ne pense pas avoir oublié quelque chose, si c'est pas le cas merci de me le dire

jdalton > ta gaminerie me touche...
jdalton42 Messages postés 200 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 19 août 2009
11 mai 2005 à 18:35
je suis debutant moi je programe pas beaucoup mais je mes les meme commentaires que tu mes sur les source des autre membre sa me seche a chaque fois que je vois un commentaire qui critique je sais directement que c'est de toi...
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
11 mai 2005 à 18:24
OniTalus > ok merci pour ton comm, je verrai pour la mise à jour quand j'aurai le temps...

Jdalton > montre-nous tes capacités de programmeur histoire qu'on rigole un peu...
OniTalus Messages postés 39 Date d'inscription samedi 7 mai 2005 Statut Membre Dernière intervention 20 juin 2005
11 mai 2005 à 18:14
Salut ;

Fis gaffe, le 'var $var' (en debut de ta source avec toutes tes vars) n'est plus tellement valide en PHP5. Utilie plutot les public ou private :)
jdalton42 Messages postés 200 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 19 août 2009
11 mai 2005 à 09:36
Bon...

j'arete de metre des com's sur tes source parce que il y en a marre de voir des source qui n'ont pas leurs place sur code source....;

j'espere que tu vois se que sa fais a chaque fois qu'on critique une source...

toquard
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
29 sept. 2004 à 20:49
Ah ok, je vois ce que tu veux dire. Je n'aime pas cette solution car ça m'oblige à mettre $variable=$mysql->requete(...) au lieu de $mysql->requete(...) directement, mais bon c'est une bonne idée ;-)

a ++
davwart Messages postés 855 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 28 juillet 2009 1
29 sept. 2004 à 17:15
ben exactement comme là, sauf qu'au lieu de toi meme lui specifier l'id de ta requete, il est fait de maniere "automatique" (sizeof(requetes)-1), et il est renvoyé lors de ta query.
y'a plus qu'à passer ce nombre en parametre de fetch_array, fetch_row, num_rows, ...
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
29 sept. 2004 à 16:46
Salut ;-)

Et dans ce cas là comment gères tu le fetch_row et tout le reste ?

a ++
davwart Messages postés 855 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 28 juillet 2009 1
29 sept. 2004 à 16:21
Hello,

juste une petite remarque: dans ton exemple tu fais de requetes, mais imagine tout un site construit sur ton modele mysql, ça risque d'etre un peu dur, si il y a bcp de requestes imbriquées, ou si on utilise des fonctions qui elles contiennent des requetes, de savoir où on en est dans les indices. (1?2? 10?)

une solution pourrait etre de faire renvoyer le nombre d'element-1 quand tu appelles "db->query" et de demander le resultat sur ce nombre.

exemple
 function requete($requete)
     {
         $this->requete[]=@mysql_query($requete);
         if(!$this->requete[$i])
         {
             $this->erreur('Impossible d\'effectuer la requête.');
         }
return (sizeof($this->requete[])-1);
     }

$nb=$db->query("Select champ from table");
while (db->fetch_row(nb))
{
...
}


et donc là, tu ne geres plus les indices..

enfin c'est juste une idée..
pimpa4real Messages postés 14 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 6 février 2008
2 févr. 2004 à 00:41
Merci pour tout anthomicro et aussi a flashfun en effet j'avais fait une faute d'innatention, j'ai trouvé mon erreur, ma table Pizza été écrite avec un P majuscule et dans ma requête j'avais mis un p minuscule c fou comme juste une connerie de ce genre peut te faire perdre un temps fou!

Merci encore!

@+
flashfun Messages postés 296 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 11 septembre 2004
1 févr. 2004 à 23:31
pimpa4real>>
J'ai trouvé cela:

requete("INSERT INTO pizza(numero,lieu_1,lieu_2,lieu_3,heure_se,heure_we,opinion,prix) VALUES('','lieu_1','lieu_2','lieu_3','heure_we','opinion','prix')",1);

Remplace par :

requete("INSERT INTO pizza(numero,lieu_1,lieu_2,lieu_3,heure_se,heure_we,opinion,prix) VALUES('','lieu_1','lieu_2','lieu_3','heure_se','heure_we','opinion','prix')",1);

C'est peut-être pas ca, mais n'oublie pas que très souvent les erreurs provienne de fautes de frappes, ou d'orthographe, en tous cas d'inatention.
Bon courrage.
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
1 févr. 2004 à 17:59
Ah là au moins il t'affiche le tableau rouge disant qu'il y a une erreur ?

dans ce cas ça vient de tes requêtes mais je ne vois pas d'erreur. Bizarre, sachant que chez moi j'ai un site de 150 pages avec des dizaines de requêtes et ça fonctionne nikel sans aucune erreur, que les requêtes soient des INSERT, SELECT, DELETE, UPDATE, etc...

Désolé

a +
pimpa4real Messages postés 14 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 6 février 2008
1 févr. 2004 à 17:48
bon alors j'ai viré tout ce que je n'avais plus besoin et ça me dit toujours impossible d'effectuer la requete!

plus de code d'erreur cette fois!

voila mon code dis moi si tu vois une erreur quelque part stp!
C'est peut etre a cause des conditions pour l'execution des requetes non?


index.php:

?php
include('class_mysql.inc.php');
include('pizza.htm');
$mysql= new mysql();
$mysql->connect('');
$mysql->requete("INSERT INTO pizza(numero,lieu_1,lieu_2,lieu_3,heure_se,heure_we,opinion,prix) VALUES('','lieu_1','lieu_2','lieu_3','heure_we','opinion','prix')",1);
if($sortie_1=='oui' && $faim_1=='oui' && $pizza_1=='oui')
{
$mysql->requete("INSERT INTO pizza(sortie,faim,pizza) VALUES('sortie_1,'faim_1','pizza_1')",2);
}
else
{
$mysql->requete("INSERT INTO pizza(sortie,faim,pizza) VALUES('sortie_2,'faim_2','pizza_2')",2);
}

$mysql->deconnect();

?>

///////////////////////////////////////////////////////////////////

class_mysql.inc.php


{
if($db!=NULL)
{
$this->connexion_sql=@mysql_connect($this->sql_serveur,$this->sql_user,$this->sql_passe);
$this->base=@mysql_select_db($db);
if (!$this->connexion_sql)
{
$this->erreur('Connexion impossible à la base de données. Appuyez sur la touche F5 de votre clavier.');
}
if (!$this->base)
{
$this->erreur('Erreur de sélection de la base de données "'.$db.'"');
}
}
else
{
$this->connexion_sql=@mysql_connect($this->sql_serveur,$this->sql_user,$this->sql_passe);
$this->base=@mysql_select_db($this->sql_bdd);
if (!$this->connexion_sql)
{
$this->erreur('Connexion impossible à la base de données. Appuyez sur la touche F5 de votre clavier.');
}
if (!$this->base)
{
$this->erreur('Erreur de sélection de la base de données "'.$this->sql_bdd.'"');
}
}
}
function requete($requete,$i)
{
$this->requete[$i]=@mysql_query($requete);
if(!$this->requete[$i])
{
$this->erreur('Impossible d\'effectuer la requête.');
}
}


function deconnect()
{
$this->connexion_sql=@mysql_close($this->connexion_sql);
}
function erreur($erreur)
{
print('

<center>
Erreur
: '.$erreur.'

</center>

');
}
}
?>


si tu pouvais m'aider a trouver l'erreur ça serait vraiment sympa de ta part!
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
1 févr. 2004 à 16:41
Bah oui pour ça il faut virer le code qui ne sert à rien :

//ON AFFICHE LES DONNEES DE LA REQUETE 1
while($r=$mysql->fetch_row(1))
{
$chp=$r[0];
$chp2=$r[1];
}
//ET CELLES DE LA REQUETE 2
while($r=$mysql->fetch_row(2))
{
$chp=$r[0];
}

a +
pimpa4real Messages postés 14 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 6 février 2008
1 févr. 2004 à 16:33
Hum c bien ce que je me disais!
Est ce qu'il ya a un moyen de supprimer l'affichage du resulta afin que ça ne me renvoie plus d'erreur et que je puisse faire mon insert trankil?

Merci!
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
1 févr. 2004 à 16:29
Salut Pimpa !

normal que cela te renvoie une erreur parce que tu ne peux afficher les données avec mysql_fetch_row d'une requête insert. Si tu avais eu une requête SELECT, cela aurait très bien fonctionné.

A +
pimpa4real Messages postés 14 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 6 février 2008
1 févr. 2004 à 16:23
salut a toi anthomicro!

tout d'abbord merci pour ce code je pense qu'il va m'aider, mais, pour l'instant j'ai quelque petit probleme avec, je site:

"Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/6/2/pimpa4real/class_mysql.inc.php on line 60"

voila l'erreur que ça me renvoie!

maintenant voila le bout de mon code qui me parrait peut etre etre le coupable de l'erreur!


<?php
include('class_mysql.inc.php');
include('pizza.htm');
$mysql= new mysql();
$mysql->connect('');
$mysql->requete("INSERT INTO pizza(numero,lieu_1,lieu_2,lieu_3,heure_se,heure_we,opinion,prix) VALUES('','lieu_1','lieu_2','lieu_3','heure_we','opinion','prix')",1);
if($sortie_1=='oui' && $faim_1=='oui' && $pizza_1=='oui')
{
$mysql->requete("INSERT INTO pizza(sortie,faim,pizza) VALUES('sorite_1,'faim_1','pizza_1')",2);
}
else
{
$mysql->requete("INSERT INTO pizza(sortie,faim,pizza) VALUES('sorite_2,'faim_2','pizza_2')",2);
}

$mysql->deconnect();
//ON AFFICHE LES DONNEES DE LA REQUETE 1
while($r=$mysql->fetch_row(1))
{
$chp=$r[0];
$chp2=$r[1];
}
//ET CELLES DE LA REQUETE 2
while($r=$mysql->fetch_row(2))
{
$chp=$r[0];
}

?>

Ce serait hyper sympa de ta part si tu pouvais m'aider j'ai trop besoin de ce code pour demain!

Merci et @+