Base SQL et pages PHP, je ne comprends pas...
Fermé
Shirase_Akira
-
Modifié par Shirase_Akira le 9/06/2011 à 11:56
Meoran Messages postés 1562 Date d'inscription vendredi 28 août 2009 Statut Membre Dernière intervention 8 avril 2015 - 21 juin 2011 à 13:38
Meoran Messages postés 1562 Date d'inscription vendredi 28 août 2009 Statut Membre Dernière intervention 8 avril 2015 - 21 juin 2011 à 13:38
A voir également:
- Base SQL et pages PHP, je ne comprends pas...
- Supprimer des pages sur word - Guide
- Formules excel de base - Guide
- Easy php - Télécharger - Divers Web & Internet
- Fichier .pages ✓ - Forum Word
4 réponses
Meoran
Messages postés
1562
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
206
Modifié par Meoran le 11/06/2011 à 00:39
Modifié par Meoran le 11/06/2011 à 00:39
Salut,
Le principe de SQL est basé sur un système de clef primaire qui identifie chaque enregistrement des différentes tables sql.
Pour récupérer des informations d'une ligne d'une table sql il faut en fait dire ;
"Je veux toutes les informations de la ligne dont l'identifiant est truc"
Tu peux ensuite récupérer les données retournées dans un tableau php et l'exploiter comme n'importe quel autre tableau php
Le principe de SQL est basé sur un système de clef primaire qui identifie chaque enregistrement des différentes tables sql.
Pour récupérer des informations d'une ligne d'une table sql il faut en fait dire ;
"Je veux toutes les informations de la ligne dont l'identifiant est truc"
Tu peux ensuite récupérer les données retournées dans un tableau php et l'exploiter comme n'importe quel autre tableau php
Salut, ça j'avais compris, mais je ne comprends pas ça par exemple:
Un premier client demande: je veux telles infos
Le serveur lui donne
Un second client demande: je veux d'autres infos sur cette même page
Le serveur lui donne
Pourquoi le serveur donne les bonnes infos à chacun? Comment différencie-t-il un client d'un autre en fait?
Parce que ce qui me pose problème, c'est le raisonnement, au delà du pourquoi, comment?
Un premier client demande: je veux telles infos
Le serveur lui donne
Un second client demande: je veux d'autres infos sur cette même page
Le serveur lui donne
Pourquoi le serveur donne les bonnes infos à chacun? Comment différencie-t-il un client d'un autre en fait?
Parce que ce qui me pose problème, c'est le raisonnement, au delà du pourquoi, comment?
Meoran
Messages postés
1562
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
206
Modifié par Meoran le 16/06/2011 à 12:28
Modifié par Meoran le 16/06/2011 à 12:28
Salut,
la où tu te plantes, c'est que ce n'est pas tout à fait la même page. Mais la page est générée dynamiquement, ce qui fait que toi, tu en as une seule à écrire.
Je vois que pour l'instant tu as sur ton site :
http://www.allofjade.toile-libre.org/pages/cre167.php
ce qui fait que ce ne sera pas la même page c'est ceci :
http://www.allofjade.toile-libre.org/pages/cre.php?choix=XXX (XXX vaut 167 par exemple...)
XXX est généré automatiquement en fonction du clic de l'utilisateur.
"Je veux les informations de la créature dont l'id est XXX".
Ceci appelle l'url cité juste au dessus.
Tu envoies ensuite une requête au serveur disant, ""Je veux toutes les informations de la créature dont l'identifiant est XXX"
Ensuite, sur ta seule page écrite tu n'as plus qu'à indiquer :
Affiche moi le screen que la requête as retourné, affiche moi le niveau que la requête a retourné etc (qui seront les informations de la créature vu que c'est ce que tu as demandé...)
la où tu te plantes, c'est que ce n'est pas tout à fait la même page. Mais la page est générée dynamiquement, ce qui fait que toi, tu en as une seule à écrire.
Je vois que pour l'instant tu as sur ton site :
http://www.allofjade.toile-libre.org/pages/cre167.php
ce qui fait que ce ne sera pas la même page c'est ceci :
http://www.allofjade.toile-libre.org/pages/cre.php?choix=XXX (XXX vaut 167 par exemple...)
XXX est généré automatiquement en fonction du clic de l'utilisateur.
"Je veux les informations de la créature dont l'id est XXX".
Ceci appelle l'url cité juste au dessus.
Tu envoies ensuite une requête au serveur disant, ""Je veux toutes les informations de la créature dont l'identifiant est XXX"
Ensuite, sur ta seule page écrite tu n'as plus qu'à indiquer :
Affiche moi le screen que la requête as retourné, affiche moi le niveau que la requête a retourné etc (qui seront les informations de la créature vu que c'est ce que tu as demandé...)
Donc si j'ai bien compris, dans mon fichier liste, je dois dire
"à tel clic: rajoute X à l'url"
Et dans mon fichier créature: "affiche la créature correspondant à X"
En continuant dans ce raisonnement, si je veux afficher la liste, en dynamique, il me faut une base SQL avec beaucoup de champs, dont:
- Le numéro
- Le nom
Alors... Dites moi si je me paume, je dis en PHP que je dois faire une liste, qui s'affiche dans un tableau à 4 colonnes, qui affiche le numéro et le nom de la créature séparés d'un tiret et précédé du caractère "#"
Donc jusque là j'utilise une boucle?
Ensuite quand je clique sur la créature X, X étant son numéro, son "id" en somme, ce même id se rajoute à l'url, ce qui permet à la page créature d'afficher les informations demandées ( les autres entrées de la même ligne dans la base SQL ) relatives à la créature X, c'est bien ça?
"à tel clic: rajoute X à l'url"
Et dans mon fichier créature: "affiche la créature correspondant à X"
En continuant dans ce raisonnement, si je veux afficher la liste, en dynamique, il me faut une base SQL avec beaucoup de champs, dont:
- Le numéro
- Le nom
Alors... Dites moi si je me paume, je dis en PHP que je dois faire une liste, qui s'affiche dans un tableau à 4 colonnes, qui affiche le numéro et le nom de la créature séparés d'un tiret et précédé du caractère "#"
Donc jusque là j'utilise une boucle?
Ensuite quand je clique sur la créature X, X étant son numéro, son "id" en somme, ce même id se rajoute à l'url, ce qui permet à la page créature d'afficher les informations demandées ( les autres entrées de la même ligne dans la base SQL ) relatives à la créature X, c'est bien ça?
Meoran
Messages postés
1562
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
206
Modifié par Meoran le 17/06/2011 à 18:52
Modifié par Meoran le 17/06/2011 à 18:52
C'est exactement ça ;)
Sur ta page liste, il te faut une requête qui sélectionne l'id et le nom (plus éventuellement d'autres informations). Ca fera un genre de requete de ce type : select id, nom from creature
Sur ta page creature, ce serait une requete du genre : select * from creature where id="l'id présent dans l'url". Cela te retournerait toutes les informations liées à la créature.
Sur ta page liste, il te faut une requête qui sélectionne l'id et le nom (plus éventuellement d'autres informations). Ca fera un genre de requete de ce type : select id, nom from creature
Sur ta page creature, ce serait une requete du genre : select * from creature where id="l'id présent dans l'url". Cela te retournerait toutes les informations liées à la créature.
Je viens de refaire une tentative, je galère pas mal...
Donc en fait, j'ai, dans ma connect.php ( test en local ):
<?php
$host = "localhost";
$db = "test";
$user = "root";
$psw = "";
$connection = mysql_connect($host,$user,$psw)
or die( "Connection impossible sur la bdd $db avec l'utilisateur $user".mysql_error()).
mysql_select_db ($db)
or die("Erreur de connection sur $db".mysql_error())
?>
Déjà je ne sais pas trop si ça fonctionne...
Il est intégré via un include
Dans mon index de test, entre les body:
<body>
<?php
{
$sql = "SELECT * FROM 'creatures' LIMIT 0, 30 ";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result ($req);
mysql_close ();
}
?>
Liste des créatures:<br />
<?php echo $id $data['id']; ?>
</body>
Là j'ai un joli bug :s
Ma bdd de test ( creatures.sql):
-- phpMyAdmin SQL Dump
-- version 3.3.9
-- http://www.phpmyadmin.net
Donc en fait, j'ai, dans ma connect.php ( test en local ):
<?php
$host = "localhost";
$db = "test";
$user = "root";
$psw = "";
$connection = mysql_connect($host,$user,$psw)
or die( "Connection impossible sur la bdd $db avec l'utilisateur $user".mysql_error()).
mysql_select_db ($db)
or die("Erreur de connection sur $db".mysql_error())
?>
Déjà je ne sais pas trop si ça fonctionne...
Il est intégré via un include
Dans mon index de test, entre les body:
<body>
<?php
{
$sql = "SELECT * FROM 'creatures' LIMIT 0, 30 ";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result ($req);
mysql_close ();
}
?>
Liste des créatures:<br />
<?php echo $id $data['id']; ?>
</body>
Là j'ai un joli bug :s
Ma bdd de test ( creatures.sql):
-- phpMyAdmin SQL Dump
-- version 3.3.9
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Sam 18 Juin 2011 à 15:57
-- Version du serveur: 5.5.8
-- Version de PHP: 5.3.5
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
Bon désolé, je ne comprends pas, la suite refuse de s'afficher :/
-- Serveur: localhost
-- Généré le : Sam 18 Juin 2011 à 15:57
-- Version du serveur: 5.5.8
-- Version de PHP: 5.3.5
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
Bon désolé, je ne comprends pas, la suite refuse de s'afficher :/
Je viens d'essayer avec quelque chose de complètement différent, ce coup-ci plus d'erreur mais rien ne s'affiche...
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<?php include('connect.php'); ?>
<?php $result = mysql_query("SELECT id,nom FROM 'creatures'
LIMIT 0 , 85");
while ( $row = mysql_fetch_array($result)){
echo $row[id].' - '.$row[nom].' - '.;
} mysql_close(); ?>
<?php echo ['$result'] ?>
</body>
</html>
connect.php
<?php
$connect = mysql_connect('localhost','root','') or die ("erreur de connexion");
mysql_select_db('test',$connect) or die ("erreur de connexion test");
?>
Il doit me manquer quelques bases, je ne comprends pas trop... Si j'ai bien compris:
1) On ouvre la connection, cf connect.php
2) On charge les données que l'on veut en mémoire, cf mysql_query()
3) Une fois les données en mémoire, on coupe la connection, cf mysql_close()
4) On affiche les données en mémoire via $result, qui contient les données de mysql_query()
... Dans ce cas, pourquoi je n'ai rien qui s'affiche?
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<?php include('connect.php'); ?>
<?php $result = mysql_query("SELECT id,nom FROM 'creatures'
LIMIT 0 , 85");
while ( $row = mysql_fetch_array($result)){
echo $row[id].' - '.$row[nom].' - '.;
} mysql_close(); ?>
<?php echo ['$result'] ?>
</body>
</html>
connect.php
<?php
$connect = mysql_connect('localhost','root','') or die ("erreur de connexion");
mysql_select_db('test',$connect) or die ("erreur de connexion test");
?>
Il doit me manquer quelques bases, je ne comprends pas trop... Si j'ai bien compris:
1) On ouvre la connection, cf connect.php
2) On charge les données que l'on veut en mémoire, cf mysql_query()
3) Une fois les données en mémoire, on coupe la connection, cf mysql_close()
4) On affiche les données en mémoire via $result, qui contient les données de mysql_query()
... Dans ce cas, pourquoi je n'ai rien qui s'affiche?
Meoran
Messages postés
1562
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
206
Modifié par Meoran le 21/06/2011 à 13:39
Modifié par Meoran le 21/06/2011 à 13:39
Salut,
déjà je te conseil PDO pour te connecter à ta bd qui possèdent plusieurs avantages, dont celui de gérer les exceptions, ce qui permet de te renvoyer un message d'erreur (qui en plus est facilement compréhensible) lorsque ça marche pas.
Tu sembles déjà avoir quelques connaissances en PHp donc je te redirige vers la page php.net de PDO, et non vers le SDZ :p https://www.php.net/manual/fr/book.pdo.php
Autrement c'est presque bon, pour un premier essai je trouve que tu te débrouilles pas mal !
while ( $row = mysql_fetch_array($result,MYSQL_BOTH)){
echo $row['id'].' - '.$row['nom'].' - '.;
}
et supprime le ['$result'] qui de un, ne veut rien dire, mais même un print_r($result] ne marcherais pas car $result est une ressource et non un tableau !
déjà je te conseil PDO pour te connecter à ta bd qui possèdent plusieurs avantages, dont celui de gérer les exceptions, ce qui permet de te renvoyer un message d'erreur (qui en plus est facilement compréhensible) lorsque ça marche pas.
Tu sembles déjà avoir quelques connaissances en PHp donc je te redirige vers la page php.net de PDO, et non vers le SDZ :p https://www.php.net/manual/fr/book.pdo.php
Autrement c'est presque bon, pour un premier essai je trouve que tu te débrouilles pas mal !
while ( $row = mysql_fetch_array($result,MYSQL_BOTH)){
echo $row['id'].' - '.$row['nom'].' - '.;
}
et supprime le ['$result'] qui de un, ne veut rien dire, mais même un print_r($result] ne marcherais pas car $result est une ressource et non un tableau !