exercice PHP

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 avr. 2010, 18:02

Oui, tu as cette colonne dans les deux tables, il faut donc que tu précises lequel tu veux utiliser :
SELECT arretDepart, arretSuivant
FROM Lignes l, Trajets t
WHERE l.noLigne like "1";
Ici j'ai ajouté des alias derrière les noms de tables pour ne pas retaper "lignes" et "trajets" (pour raccourcir)

lignes(noLigne, DescriptionLigne, arretDepart)
trajets(noLigne*, arret, arretsuivant)

Mais il te manque la jointure entre les deux tables, ce qui va relier les lignes.
SELECT l.DescriptionLigne, l.arretDepart, t.arret, t.arretSuivant
FROM Lignes l
INNER JOIN Trajets t ON l.noLigne= t.noLigne
WHERE l.noLigne = "1";
La jointure relie les deux tables grâce à la colonne "numeroLigne".
J'ai remplacé ton"LIKE" par un =, car like est utilisé pour rechercher des bouts de chaîne de caractère, là tu as une égalité parfaite entre ton entier et le numéro de ligne.

Essaie cette requête et regarde les résultats que ça te donne.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 avr. 2010, 18:04

1.1 Trouver la requête qui t'affiche la liste des lignes

deux possibilités de réponse:

SELECT noLigne FROM Lignes;
ou
SELECT noLigne FROM Trajets;
(cette solution répète les noLigne autant de fois qu'elle est inscrite dans la table trajets)

1.2 Trouver la requête qui t'affiche les arrêts (dans l'odre) d'une ligne précise
SELECT arret, arretSuivant
FROM Trajets
WHERE noLigne like "1";
Oui elle fonctionne, je dirais que cette requete n'est pas très académique mais elle fonctionne;
Ok ça marche mais du coup avec les résultats tu es bien capable de juger ce qui est bien ou pas non ?
Pour lister les lignes, à ton avis on regarde dans quelle table, quelle est la requête la meilleure ?

yohan2011
Invité n'ayant pas de compte PHPfrance

27 avr. 2010, 18:09

Ok ça marche mais du coup avec les résultats tu es bien capable de juger ce qui est bien ou pas non ?
Pour lister les lignes, à ton avis on regarde dans quelle table, quelle est la requête la meilleure ?
En réponse à ta question ouckileou, je pense que regarder la table "Trajets" c'est mieux, d'une part c'est elle qui correspond le mieux à l'esprit de l'exo, d'autre part elle est plus complète vu qu'on a arret départ et suivant, pour l'utlisateur c'est plus facile de s'y retrouver.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 avr. 2010, 18:31

Ok ça marche mais du coup avec les résultats tu es bien capable de juger ce qui est bien ou pas non ?
Pour lister les lignes, à ton avis on regarde dans quelle table, quelle est la requête la meilleure ?
En réponse à ta question ouckileou, je pense que regarder la table "Trajets" c'est mieux, d'une part c'est elle qui correspond le mieux à l'esprit de l'exo, d'autre part elle est plus complète vu qu'on a arret départ et suivant, pour l'utlisateur c'est plus facile de s'y retrouver.
Non.

Pour lister les lignes (et uniquement ça), on regarde dans la table Lignes. Parceque c'est logique, parcequ'on ne s'occupe ici que des lignes donc on regarde la table Lignes. La table "trajets" n'est pas plus complète, elle contient les trajets. Donc quand tu n'as pas besoin des trajets, tu ne regardes pas dans la table Trajets.

Tu as besoin d'une liste de lignes, pour créer des liens, pour pouvoir récupérer un numéro de ligne et le trajet qui correspond. Donc pour créer la liste des lignes, requête sur la table "Lignes".

C'est quand tu voudras afficher le trajet correspondant à une ligne que là, tu regarderas dans la table Trajets. Ce qui est logique aussi, finalement.

yohan2011
Invité n'ayant pas de compte PHPfrance

27 avr. 2010, 18:41

Merci,
Je suis entrain de travailler sur le code PHP,
je te l'envoie dans deux minutes,
je t'envoie d'abord ce que j'ai fait avant:
<?

$hote="localhost";
$utlisateur="root";
$modpasse="1234";

$Connection=mysql_connect($hote,$utlisateur,$modpasse);

//echo connection;

$nomdelabase="labase";

mysql_select_db($nomdelabase, $connection);

$requete="SELECT*from lignes";

$resultat=mysql_query($requete,$connection);

//echo $resultat;

$test=mysql_fetch_array($resultat);

//print_r($test);

echo nl2br($test[Descriptionligne));

yohan2011
Invité n'ayant pas de compte PHPfrance

27 avr. 2010, 18:48

voici mon code:
<?php
/* chargement du tableau contenat :
       - le trajet complet d'une ligne,
*/

function resultatstrajets()
   {
   
    global $arretDepart;
	global $arretSuivant;
	
    [sql]$requete = "Code sql
				SELECT arretDepart, arretSuivant
				FROM Lignes l, Trajets t
				WHERE l.noLigne LIKE "1";";[/sql]
	$curseur = mysql_query($requete);
	for($i = 1; $i <= mysql_num_rows($curseur); $i++)
	   {
	    $nuplettrajet = mysql_fetch_array($curseur);
        $lignes[$nupletlignes["arretDepart"]] = $lignes["arretSuivant"];				
	   }
   }

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 avr. 2010, 10:51

Bah... j'avais corrigé ta requête, je vois pas ces modifs dans le code. Et ton code, tu le balances sans explication, sans question, genre on va le lancer et le débugguer pour toi. Tu crois qu'on a que ça à faire ? Tu n'as pas compris que tu devais essayer toi-même, et venir ici pour poser des questions, ou dire "j'ai cette erreur, d'où peut-elle venir ?".

On ne peut pas passer tout notre temps sur ton sujet, je suis un peu découragé, tu ne lis pas assez attentivement ce que l'on te suggère de faire.

Enfin déjà à ta place je ferai pas de fonction, reste au plus simple. Et puis quand tu l'utilises cette fonction, ça dit quoi ? ça marche parfaitement, ça t'affiche un message d'erreur ?

Nous ne sommes pas des correcteurs de code, nous sommes là pour aider et orienter.

yohan2011
Invité n'ayant pas de compte PHPfrance

28 avr. 2010, 16:03

Désolé , et je vous remercie pour tout,
Je vais arreter de vous saouler avec mon sujet,

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 avr. 2010, 16:19

Désolé , et je vous remercie pour tout,
Je vais arreter de vous saouler avec mon sujet,
Tu ne nous saoules pas, le but de ce forum est précisément d'aider les gens, mais il faut juste que tu fasses un effort pour être attentif à ce qu'on te suggère de faire, afin de nous soumettre des requêtes précises, plutôt que de poster des bouts de code au hasard en attendant qu'on débuggue de A à Z.

Si tu suis les étapes données, que tu nous donnes tes essais correspondant à ces étapes et que tu nous dit ce qui ne fonctionne pas, on te filera un coup de main avec plaisir, vraiment.