chungech Posté 26 Juin 2006 Posté 26 Juin 2006 (modifié) je debute en php pour réaliser mon premier cript ca consiste à créer un bloc qui affiche les données prochain match j'ai créé la table CREATE TABLE `p_match` ( `n` varchar(20) NOT NULL default '', `e_d` text NOT NULL, `e_ex` text NOT NULL, `DATE` date NOT NULL default '0000-00-00', `r_d` varchar(80) NOT NULL default '', `r_e` varchar(80) NOT NULL default '') ENGINE=MyISAM DEFAULT CHARSET=latin1;//puis INSERT INTO `p_match` VALUES ('1', 'esperance', 'club african', '2006-05-06', '2', '0'); maintenant je veux afficher ces infos j'ai ecrit ca <?php //information pour la connexion// connection à la DB$host = 'localhost';$user = 'root';$pass = '';$db = 'test';$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );mysql_select_db($db) or die ('Erreur :'.mysql_error());// selection des donnes$select = 'SELECT e_d FROM p_match WHERE n=1';$result = mysql_query($select);echo ("$result");?> svp c'est quoi la faute message d'erreur (Resource id #3) Modifié 26 Juin 2006 par Portekoi
Portekoi Posté 26 Juin 2006 Posté 26 Juin 2006 Bonjour, Je t'invite à commencer par le commencement à savoir : http://www.phpdebutant.org http://www.siteduzero.com Concernant ton problème, je suppose que tu as repris du code à droite à gauche. Essai de regarder les liens que je t'ai donné, cela t'aidera beaucoup Portekoi
ludo88 Posté 26 Juin 2006 Posté 26 Juin 2006 sinon ce que tu recuperes avec mysql_query c'est un pointeur vers le resultat : je te conseille : $info=mysql_fetch_array($result); print_r($info); Ca devrait te permettre de voir ce que tu as dans ta requete. Sinon faut pas oublier de fermer ta conexion bdd apres tes requetes. Mais les tutoriels cités au dessus sont vraiment bien et je te les conseille aussi Ludo
NorSeb Posté 26 Juin 2006 Posté 26 Juin 2006 Bonjour, Désolé d'en "rajouter une couche" mais il est clair que tu as besoin de prendre les choses par le commençement Pour info "Resource id #3" n'est pas un message d'erreur... Lorsque tu exécute ta requète SQL grâce à mysql_query, cela va aller "stocker" les résultats en mémoire, dans la "ressource" numéro N (3 ici = le fameux pointeur vers le résultat de Ludo88) Au contraire, cette "valeur" prouve bien que ta requète s'est bien passée
chungech Posté 27 Juin 2006 Auteur Posté 27 Juin 2006 (modifié) Merci (Portekoi,ludo88,NorSeb) pour les réponses et les liens J'ai vu les tutos et j'ai toujours des problèmes Ce que j'ai compris $var = mysql_query("SELECT * from p_match ), C'est à dire Sélection de la table ? echo $var['e_d']; Affiche la valeur de e_d qui est un un champ dans la table p_match mais je veut afficher toutes les champs de p_match qui contient une seule ligne Modifié 27 Juin 2006 par chungech
Bourinho Posté 27 Juin 2006 Posté 27 Juin 2006 Salut, L'idee est bonne mais la syntaxe ne l'est pas... Voici ce qui te pose probleme : Le resultat de ta requete n'est pas encore un tableau!!! mais une table... Voici la marche a suivre : if ($var) { Ca, c'est pour savoir si ta requete s'est bien deroulee... si ce n'est pas le cas, $var=false et donc tu ne passes pas a la suite... while ($donnees = mysql_fetch_array($var) ) { Ca, ca met dans $donnees, la premiere "ligne" de la table $var, tout en la supprimant de $var... Ensuite, tu fais ce que tu veux faire avec $donnees... genre echo donnees['e_d']; et tu n'oublies pas }} pour "fermer" le "if" et le "while"... Normalement, ca devrait fonctionner... A+
captain_torche Posté 27 Juin 2006 Posté 27 Juin 2006 Petite précision : le while, utilisé avec le mysql_fetch_array, ne supprime pas les données de $var, mais il va avancer le pointeur interne du tableau, jusqu'à la prochaine valeur.
Bourinho Posté 27 Juin 2006 Posté 27 Juin 2006 Salut, Autant pour moi... captain_torche a bien fait de me reprendre!!! Cependant, ce que je te propose reste correct... A+
chungech Posté 27 Juin 2006 Auteur Posté 27 Juin 2006 (modifié) MERCI le code est maintenant comme ca <?php //information pour la connexion$host = 'localhost';$user = 'root';$pass = '';$db = 'test';// connection à la DB$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );mysql_select_db($db) or die ('Erreur :'.mysql_error());// selection des donnes$var = mysql_query("SELECT * from p_match ORDER BY id DESC LIMIT 0, $donnes");if ($var) {while ($donnes = mysql_fetch_array($var) ) {echo donnes['ed'];}}mysql_close(); ?> mais ca marche pas encore la notice Notice: Undefined variable: donnes in c:\program files\easyphp1-8\www\test.php on line 11 Modifié 27 Juin 2006 par chungech
captain_torche Posté 27 Juin 2006 Posté 27 Juin 2006 As-tu un message d'erreur ? Si non, le souci vient de cette ligne : $var = mysql_query("SELECT * from p_match ORDER BY id DESC LIMIT 0, $donnes"); Tu ne spécifies pas de variable $donnes auparavant dans ton code, ce qui fait que ta requête SQL ressemble à ça : SELECT * from p_match ORDER BY id DESC LIMIT 0 , Ce qui est une syntaxe incorrecte. Ce que tu peux faire : - Modifier ta ligne pour qu'il t'affiche la requête et l'erreur envoyée (manipulation à ne faire qu'en test, désactive le code quand tu passes le script en production) : $req = "SELECT * from p_match ORDER BY id DESC LIMIT 0, $donnes";$var = mysql_query($req) or die('Pb dans la requête '.$req.'<br>'.mysql_error()); Mais, je pense qu'en spécifiant la valeur de $donnes avant la requête, tout devrait aller mieux. PS : fais attention, utilise des variables différentes pour chaque type de données. Ici, tu as un conflit entre le premier $donnes, qui est le nombre de lignes à retourner, et $donnes, contenant chaque ligne de résultat. Pourquoi ne pas renommer le premier $donnes en $nb_lignes ? Ca serait plus parlant, non ? [Edit]Après avoir vu ton edit, il semble évident que le souci vienne de la non-déclaration de $donnes avant ta requête.
ludo88 Posté 27 Juin 2006 Posté 27 Juin 2006 ca devrait etre bon comme ca <?php //information pour la connexion$host = 'localhost';$user = 'root';$pass = '';$db = 'test';// connection à la DB$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );mysql_select_db($db) or die ('Erreur :'.mysql_error());// selection des donnes$var = mysql_query("SELECT * from p_match ORDER BY id DESC LIMIT 0");if ($var) {while ($donnes = mysql_fetch_array($var) ) {echo $donnes['ed'];}}mysql_close();?>
chungech Posté 28 Juin 2006 Auteur Posté 28 Juin 2006 Avec un LIMIT 0, ça ne va pas marcher très fort avec la quelle limite ca marche
Dan Posté 28 Juin 2006 Posté 28 Juin 2006 Sans LIMIT ca marche, ou alors on met un nombre supérieur à 0. Limit 1 pour donner le premier résultat, limit 10 pour les 10 premiers. Ou encore 2 nombres comme dans limit 10,20 qui donne les 20 enregistrements à partir du onzième <édité> Mais il n'est pas non plus interdit de lire la doc, tu apprendrais quantité de choses, non
TheRec Posté 28 Juin 2006 Posté 28 Juin 2006 En fait la syntaxe est : SELECT * FROM table LIMIT offset, row_count Pour citer le manuel : La clause LIMIT peut être utilisée pour limiter le nombre d'enregistrements retournés par la commande SELECT. LIMIT accepte un ou deux arguments numériques. Ces arguments doivent être des entiers constants. Avec un argument, la valeur spécifie le nombre de lignes à retourner depuis le début du jeu de résultat. Si deux arguments sont donnés, le premier indique le décalage du premier enregistrement à retourner, le second donne le nombre maximum d'enregistrement à retourner. Le décalage du premier enregistrement est 0 (pas 1). Source : Manuel MySQL 5.0 (pour les versions antérieur c'est pareil)Donc l'exemple de Dan te donne les résultats partant du 11ème enregistrement jusqu'au 30ème
Dan Posté 28 Juin 2006 Posté 28 Juin 2006 Donc l'exemple de Dan te donne les résultats partant du 11ème enregistrement jusqu'au 30ème Clair... je me suis loupé Je corrige mon post :!:
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant