Comment faire une requête pour des tables en relation?

Mammouth du PHP | 19672 Messages

11 janv. 2006, 23:16

Quel message d'erreur ? Ma boule de cristal n'a toujours pas été livrée... :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 545 Messages

11 janv. 2006, 23:25

Je me demande si cela ne vient pas d'ici
Affectation de <?php echo $row_affect['prenom']; ?> <?php echo $row_affect['nom']; ?></td>
Ne faut-il pas mettre plutôt ceci?

Affectation de
<?php echo $row_affect['acrho_participant.prenom']; ?> <?php echo $row_affect['acrho_participant.nom']; ?></td>
??????


Merci

Cyrano,
Je rentre en communication avec ta boule de cristal dans mon prochain post :roll:
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 545 Messages

11 janv. 2006, 23:31

Cela ne fonctionne pas mieux ! :? :? :? :?
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 545 Messages

11 janv. 2006, 23:33

Je vais même dire qu'une seul table dans ma requête avec son nom devant le champs comme ceci
'acrho_participant.prenom'

ne fonctionne pas non plus!
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 19672 Messages

11 janv. 2006, 23:50

Ce que tu peux faire dans ta requête lorsque tu dois préfixer des champs, c'est de leur ajouter un alias :

Code : Tout sélectionner

SELECT t1.champ AS premier_champ FROM ...
Lorsque tu récupères les résultats avec par exemple mysql_fetch_assoc(), tu indexe ton tableau avec l'alias :
echo($ligne['premier_champ']);
Essaye de modifier comme ça et si tu as un message d'erreur, affiche-le ici qu'on ait une première idée de la nature du problème.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 545 Messages

12 janv. 2006, 00:04

J'ai fait les changements sur le script qui ne compte qu'une seule table ... juste pour voir. Cela ne fonctionne pas :(
You have an error in your SQL syntax near '-1 AS t1 WHERE t1.ID_coureur = 226' at line 1
Et pour tant ! ! !
<?php
$colname_affect = "-1";
if (isset($_GET['part'])) {
  $colname_affect = (get_magic_quotes_gpc()) ? $_GET['part'] : addslashes($_GET['part']);
}
mysql_select_db($database_kainbuye, $kainbuye);
$query_affect = sprintf("SELECT t1.ID_coureur, t1.nom, t1.prenom FROM acrho_participant-1 AS t1 WHERE t1.ID_coureur = %s", $colname_affect);
$affect = mysql_query($query_affect, $kainbuye) or die(mysql_error());
$row_affect = mysql_fetch_assoc($affect);
$totalRows_affect = mysql_num_rows($affect);
?>
Y'a certainement encore un truc débile ... une poussière dans l'engrenage ! ? !

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 19672 Messages

12 janv. 2006, 00:25

Ouais, une grosse pourrsière ici:

Code : Tout sélectionner

...FROM acrho_participant-1 AS t1...
Le "-" au bout du nom de table est interprété en SQL comme un opérateur... qui n'a rien à faire là : remplacer par:

Code : Tout sélectionner

...FROM `acrho_participant-1` AS t1...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 545 Messages

12 janv. 2006, 00:42

Difficile de trouver ce caractére sur mon clavier mais malheureusement cela ne fonctionne pas ... maintenant, il cherche après ma BASE DE DONNEES :evil:
Table 'kainbuye.acrho_participant-1' doesn't exist
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 545 Messages

12 janv. 2006, 00:43

Je n'ai pourtant rien changé d'autre
SELECT t1.ID_coureur, t1.nom, t1.prenom FROM `acrho_participant-1` AS t1 WHERE t1.ID_coureur = %s
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

12 janv. 2006, 01:50

Je prend en cours de route mais d'ou sort la variable:
$_GET['chang']
quel est le lien qui passe cette variable ?
Je n'ai pourtant rien changé d'autre
SELECT t1.ID_coureur, t1.nom, t1.prenom FROM `acrho_participant-1` AS t1 WHERE t1.ID_coureur = %s
pas sur que cette table existe "acrho_participant-1" !
Table 'kainbuye.acrho_participant-1' doesn't exist
C'est quoi "kainbuye"

voila la dernière requete sur pluieurs tables en date:
mysql_select_db($database_kainbuye, $kainbuye);
$query_chang = sprintf("SELECT t1.id_categorie, t1.nom_categorie, t2.id_club, t2.nom_cub, t3.ID_coureur, t3.nom, t3.prenom, t4.acrho_club_id_club, t4.acrho_participant_ID_participant, t4.annee, t4.dossard, t4.acrho_categorie_ID_categorie FROM acrho_categorie AS t1, acrho_club AS t2, acrho_participant AS t3, acrho_changement AS t4 WHERE t4.acrho_club_id_club = t2.id_club AND t4.acrho_participant_ID_participant = t3.ID_coureur AND t4.acrho_categorie_ID_categorie = t1.id_categorie", $colname_chang);
avec un fonction de formatage sprintf() avec une variable ($colname_chang) à inserer mais où ? il manque un format "%s" ou "%d" (par exemple) selon le type de $colname_chang.

A quel champ cette variable doit être comparée ?

affiche la requete aevc un echo !
echo $query_chang;
puis cpoier/coller dans phpmyadmin

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 545 Messages

12 janv. 2006, 07:39

Salut et merci à Truc pour le renfort,

Voici la 1er page qui redirige vers une page d'insertion pour les affectations. Il n'y a pas de variable $_GET['chang'] ... j'ai dû changé en court de route. La variable qui fait le lien c'est ['part']!
<?php require_once('../Connections/kainbuye.php'); ?>
<?php
mysql_select_db($database_kainbuye, $kainbuye);
$query_participant = "SELECT * FROM acrho_participant ORDER BY nom ASC";
$participant = mysql_query($query_participant, $kainbuye) or die(mysql_error());
$row_participant = mysql_fetch_assoc($participant);
$totalRows_participant = mysql_num_rows($participant);

function makeStamp($theString) {
  if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})", $theString, $strReg)) {
    $theStamp = mktime($strReg[4],$strReg[5],$strReg[6],$strReg[2],$strReg[3],$strReg[1]);
  } else if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $theString, $strReg)) {
    $theStamp = mktime(0,0,0,$strReg[2],$strReg[3],$strReg[1]);
  } else if (ereg("([0-9]{2}):([0-9]{2}):([0-9]{2})", $theString, $strReg)) {
    $theStamp = mktime($strReg[1],$strReg[2],$strReg[3],0,0,0);
  }
  return $theStamp;
}

function makeDateTime($theString, $theFormat) {
  $theDate=date($theFormat, makeStamp($theString));
  return $theDate;
} 
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>liste de participants</title>
<link href="../cosmic18.css" rel="stylesheet" type="text/css">
</head>

<body>

<table width="526" border="0" cellpadding="0" cellspacing="0" class="cosmic18">
  <!--DWLayoutTable-->
  <tr>
    <td width="15" height="51">&nbsp;</td>
    <td width="511">&nbsp;</td>
  </tr>
  <tr>
    <td height="34">&nbsp;</td>
    <td valign="top"><table width="500"  border="1" cellspacing="0" cellpadding="0">
        <!--DWLayoutTable-->
        <tr>
          <td width="75"><div align="center"><strong>Nbre inscrit</strong></div></td>
          <td width="100"><div align="center"><strong>Nom</strong></div></td>
          <td width="100"><div align="center"><strong>Pr&eacute;nom</strong></div></td>
          <td width="100"><div align="center"><strong>N&eacute; le </strong></div></td>
          <td width="75"><div align="center"><strong>Sexe</strong></div></td>
          <td width="75"><!--DWLayoutEmptyCell-->&nbsp;</td>
        </tr>
        <?php 
		$compteur = 1; 
		do
		{ 
		?>
        <?php do { ?>
        <tr>
          <td width="75" align="center"><?php echo $compteur; ?></td>
          <td width="100"><?php echo $row_participant['nom']; ?></td>
          <td width="100"><?php echo $row_participant['prenom']; ?></td>
          <td width="100"><div align="right"><?php echo makeDateTime($row_participant['date_naissance'], 'd-m-Y'); ?></div></td>
          <td width="75"><div align="center"><?php echo $row_participant['sexe']; ?></div></td>
          <td width="75"><div align="center"><strong><a href="affect2.php?part=<?php echo $row_participant['ID_coureur']; ?>">Affectation</a></strong></div></td>
        </tr>
        <?php } while ($row_participant = mysql_fetch_assoc($participant)); ?>
        <?php
		$compteur++; 
		}
		while ($row_participant = mysql_fetch_assoc($participant)); ?>
    </table></td>
  </tr>
  <tr>
    <td height="229">&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>
</body>
</html>
<?php
mysql_free_result($participant);
?>
Voici la page pour l'insertion! J'aimerai y mettre toutes les tables mais déjà un problème de lecture pour une :evil:
<?php require_once('../Connections/kainbuye.php'); ?>
<?php
$colname_affect = "-1";
if (isset($_GET['part'])) {
  $colname_affect = (get_magic_quotes_gpc()) ? $_GET['part'] : addslashes($_GET['part']);
}
mysql_select_db($database_kainbuye, $kainbuye);
$query_affect = sprintf("SELECT t1.ID_coureur, t1.nom, t1.prenom FROM acrho_participant-1 AS t1 WHERE t1.ID_coureur = %s", $colname_affect);
$affect = mysql_query($query_affect, $kainbuye) or die(mysql_error());
$row_affect = mysql_fetch_assoc($affect);
$totalRows_affect = mysql_num_rows($affect);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document sans titre</title>
<link href="../cosmic18.css" rel="stylesheet" type="text/css">
</head>

<body>

<table width="540" border="0" cellpadding="0" cellspacing="0">
  <!--DWLayoutTable-->
  <tr>
    <td width="540" height="19"></td>
  </tr>
  <tr>
    <td height="30" align="center" valign="top">Affectation de <?php echo $row_affect['t1.nom']; ?> <?php echo $row_affect['t1.prenom']; ?></td>
  </tr>
  <tr>
    <td height="16"></td>
  </tr>
  <tr>
    <td height="34" valign="top"><table width="100%"  border="1" cellpadding="0" cellspacing="0" class="cosmic18">
      <tr>
        <td><div align="center"><strong>Ann&eacute;e</strong></div></td>
        <td><div align="center"><strong>Dossard</strong></div></td>
        <td><div align="center"><strong>Cat&eacute;gorie</strong></div></td>
        <td><div align="center"><strong>Club</strong></div></td>
        </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        </tr>
    </table></td>
  </tr>
  <tr>
    <td height="44">&nbsp;</td>
  </tr>
  <tr>
    <td height="22" valign="top" class="cosmic18"><div align="right"><a href="part_affect.php">Retourner aux participants [Affectation]</a> </div></td>
  </tr>
  <tr>
    <td height="29">&nbsp;</td>
  </tr>
</table>
</body>
</html>
<?php
mysql_free_result($affect);
?>
L'adresse de la page '222' pour l'instant http://60gp.ovh.net/~kainbuye/index.php ... &Itemid=43. Je ne serais pas là aujourd'hui donc je tarderais certainement dans mes futurs réponses :?


Merci beaucoup
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 545 Messages

12 janv. 2006, 07:41

Juste pour dire que '222' c'est simplement pour la lecture des affectations ... je ne suis pas encore à la page d'encodage de celle-ci ! ! !

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 545 Messages

12 janv. 2006, 17:11

Entre 2 prestations, je suis venu voir si j'avais une réponse.
C'est peut-être chose impossible de pouvoir faire ce que je veux!
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

12 janv. 2006, 19:50

pour l'instant tu as toujours un nom de table qui n'existe pas => "acrho_participant-1"

je pense que ce "-1" n'a rien a faire la.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 545 Messages

12 janv. 2006, 21:36

Salut,

Le "-1" se met quand j'encode, dans la requête, le lien entre les 2 pages (mes pages sont générés avec Dreamweaver)
$colname_affect = "-1";
if (isset($_GET['part'])) {
  $colname_affect = (get_magic_quotes_gpc()) ? $_GET['part'] : addslashes($_GET['part']);
}
Si je l'enlève rien ne se passe ... la page ne fait pas le lien!
Si je fais
`acrho_participant`-1
et bien un message d'erreur
You have an error in your SQL syntax near '-1 AS t1 WHERE t1.ID_coureur = 60' at line 1
Merci pour le coup de main
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!