Aller au contenu

Aidez moi pour mon premier script


Sujets conseillés

Posté (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é par Portekoi
Posté

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

Posté

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 ;)

Posté (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é par chungech
Posté

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... :unsure:

A+

Posté

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.

Posté

Salut,

Autant pour moi... captain_torche a bien fait de me reprendre!!! Cependant, ce que je te propose reste correct...;)

A+

Posté (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 :nonono:

:(

la notice

Notice: Undefined variable: donnes in c:\program files\easyphp1-8\www\test.php on line 11

Modifié par chungech
Posté

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.

Posté

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();
?>

Posté

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 :?:

Posté

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 ;)

Posté
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 :!:

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...